Azure portal で仮想ノードを使用する Azure Kubernetes Service (AKS) クラスターを作成して構成するCreate and configure an Azure Kubernetes Services (AKS) cluster to use virtual nodes in the Azure portal

Azure Kubernetes Service (AKS) クラスターでワークロードをすばやくデプロイするには、仮想ノードを使用します。To quickly deploy workloads in an Azure Kubernetes Service (AKS) cluster, you can use virtual nodes. 仮想ノードを使用すると、ポッドを短時間でプロビジョニングできるため、ポッドの実行時間に対して秒単位の支払いだけで済みます。With virtual nodes, you have fast provisioning of pods, and only pay per second for their execution time. スケーリング シナリオでは、Kubernetes クラスターのオートスケーラーが VM コンピューティング ノードをデプロイして追加のポッドを実行するのを待つ必要はありません。In a scaling scenario, you don't need to wait for the Kubernetes cluster autoscaler to deploy VM compute nodes to run the additional pods. この記事では、仮想ノードを有効にして、仮想ネットワーク リソースと AKS クラスターを作成して構成する方法を示します。This article shows you how to create and configure the virtual network resources and an AKS cluster with virtual nodes enabled.

重要

AKS の仮想ノードは現在、プレビュー段階です。Virtual nodes for AKS are currently in preview. プレビュー版は、追加使用条件に同意することを条件に使用できます。Previews are made available to you on the condition that you agree to the supplemental terms of use. この機能の一部の側面は、一般公開 (GA) 前に変更される可能性があります。Some aspects of this feature may change prior to general availability (GA).

Azure へのサインインSign in to Azure

Azure Portal ( https://portal.azure.com ) にサインインします。Sign in to the Azure portal at https://portal.azure.com.

AKS クラスターの作成Create an AKS cluster

Azure portal の左上隅で、[リソースの作成] > [Kubernetes Service] を選択します。In the top left-hand corner of the Azure portal, select Create a resource > Kubernetes Service.

[基本] ページで、次のオプションを構成します。On the Basics page, configure the following options:

  • プロジェクトの詳細:サブスクリプションを選択し、Azure リソース グループ (たとえば、myResourceGroup) を選択または作成します。PROJECT DETAILS: Select an Azure subscription, then select or create an Azure resource group, such as myResourceGroup. Kubernetes クラスター名 (たとえば、myAKSCluster) を入力します。Enter a Kubernetes cluster name, such as myAKSCluster.
  • クラスターの詳細:AKS クラスターのリージョン、Kubernetes バージョン、および DNS 名プレフィックスを選択します。CLUSTER DETAILS: Select a region, Kubernetes version, and DNS name prefix for the AKS cluster.
  • 規模の設定:AKS ノードの VM サイズを選択します。SCALE: Select a VM size for the AKS nodes. AKS クラスターがデプロイされた後に、VM サイズを変更することはできませんThe VM size cannot be changed once an AKS cluster has been deployed.
    • クラスターにデプロイするノードの数を選択します。Select the number of nodes to deploy into the cluster. この記事では、[ノード数]1 に設定します。For this article, set Node count to 1. ノード数は、クラスターをデプロイした後に調整できますNode count can be adjusted after the cluster has been deployed.
    • [仮想ノード][有効] を選択します。Under Virtual nodes, select Enabled.

AKS クラスターを作成し、仮想ノードを有効にする

既定では、Azure Active Directory サービス プリンシパルが作成されます。By default, an Azure Active Directory service principal is created. このサービス プリンシパルは、クラスター通信と他の Azure サービスとの統合に使用されます。This service principal is used for cluster communication and integration with other Azure services.

このクラスターは高度なネットワークに対しても構成されます。The cluster is also configured for advanced networking. 仮想ノードは、独自の Azure 仮想ネットワーク サブネットを使用するように構成されます。The virtual nodes are configured to use their own Azure virtual network subnet. このサブネットには、Azure リソースと AKS クラスター間を接続するための委任されたアクセス許可があります。This subnet has delegated permissions to connect Azure resources between the AKS cluster. 委任されたサブネットがまだない場合、Azure portal によって仮想ノードで使用するための Azure 仮想ネットワークとサブネットが作成および構成されます。If you don't already have delegated subnet, the Azure portal creates and configures the Azure virtual network and subnet for use with the virtual nodes.

[Review + create](レビュー + 作成) を選択します。Select Review + create. 検証が完了したら、[作成] を選択します。After the validation is complete, select Create.

AKS クラスターを作成して、使用準備が完了するのには数分かかります。It takes a few minutes to create the AKS cluster and to be ready for use.

クラスターへの接続Connect to the cluster

Azure Cloud Shell は無料のインタラクティブ シェルです。この記事の手順は、Azure Cloud Shell を使って実行することができます。The Azure Cloud Shell is a free interactive shell that you can use to run the steps in this article. 一般的な Azure ツールが事前にインストールされており、アカウントで使用できるように構成されています。It has common Azure tools preinstalled and configured to use with your account. Kubernetes クラスターを管理するには、Kubernetes のコマンドライン クライアントである kubectl を使います。To manage a Kubernetes cluster, use kubectl, the Kubernetes command-line client. kubectl クライアントは Azure Cloud Shell に事前にインストールされています。The kubectl client is pre-installed in the Azure Cloud Shell.

Cloud Shell を開くには、コード ブロックの右上隅にある [使ってみる] を選択します。To open the Cloud Shell, select Try it from the upper right corner of a code block. https://shell.azure.com/bash に移動して、別のブラウザー タブで Cloud Shell を起動することもできます。You can also launch Cloud Shell in a separate browser tab by going to https://shell.azure.com/bash. [コピー] を選択してコードのブロックをコピーし、Cloud Shell に貼り付けてから、Enter キーを押して実行します。Select Copy to copy the blocks of code, paste it into the Cloud Shell, and press enter to run it.

Kubernetes クラスターに接続するように kubectl を構成するには、az aks get-credentials コマンドを実行します。Use the az aks get-credentials command to configure kubectl to connect to your Kubernetes cluster. 次の例では、myResourceGroup という名前のリソース グループの myAKSCluster という名前のクラスターの資格情報を取得します。The following example gets credentials for the cluster name myAKSCluster in the resource group named myResourceGroup:

az aks get-credentials --resource-group myResourceGroup --name myAKSCluster

クラスターへの接続を確認するには、kubectl get コマンドを使って、クラスター ノードの一覧を取得します。To verify the connection to your cluster, use the kubectl get command to return a list of the cluster nodes.

kubectl get nodes

次の出力例は、単一の VM ノードが作成されてから、Linux 用の仮想ノード、virtual-node-aci-linuxが作成されることを示しています。The following example output shows the single VM node created and then the virtual node for Linux, virtual-node-aci-linux:

$ kubectl get nodes

NAME                           STATUS    ROLES     AGE       VERSION
virtual-node-aci-linux         Ready     agent     28m       v1.11.2
aks-agentpool-14693408-0       Ready     agent     32m       v1.11.2

サンプル アプリのデプロイDeploy a sample app

Azure Cloud Shell で、virtual-node.yaml という名前のファイルを作成し、そこに以下の YAML をコピーします。In the Azure Cloud Shell, create a file named virtual-node.yaml and copy in the following YAML. ノード上のコンテナーをスケジュールするため、nodeSelectortoleration が定義されます。To schedule the container on the node, a nodeSelector and toleration are defined. これらの設定により、仮想ノードでポッドがスケジュール設定され、機能が正常に有効化されていることを確認できます。These settings allow the pod to be scheduled on the virtual node and confirm that the feature is successfully enabled.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: aci-helloworld
spec:
  replicas: 1
  selector:
    matchLabels:
      app: aci-helloworld
  template:
    metadata:
      labels:
        app: aci-helloworld
    spec:
      containers:
      - name: aci-helloworld
        image: microsoft/aci-helloworld
        ports:
        - containerPort: 80
      nodeSelector:
        kubernetes.io/role: agent
        beta.kubernetes.io/os: linux
        type: virtual-kubelet
      tolerations:
      - key: virtual-kubelet.io/provider
        operator: Exists
      - key: azure.com/aci
        effect: NoSchedule

kubectl apply コマンドを使用してアプリケーションを実行します。Run the application with the kubectl apply command.

kubectl apply -f virtual-node.yaml

-o wide 引数を指定して kubectl get pods コマンドを使用し、ポッドの一覧とスケジュールされたノードを出力します。Use the kubectl get pods command with the -o wide argument to output a list of pods and the scheduled node. virtual-node-helloworld ポッドは virtual-node-linux ノードでスケジュールされています。Notice that the virtual-node-helloworld pod has been scheduled on the virtual-node-linux node.

$ kubectl get pods -o wide

NAME                                     READY     STATUS    RESTARTS   AGE       IP           NODE
virtual-node-helloworld-9b55975f-bnmfl   1/1       Running   0          4m        10.241.0.4   virtual-node-aci-linux

ポッドには、仮想ノードで使用するために委任された Azure 仮想ネットワーク サブネットからの内部 IP アドレスが割り当てられます。The pod is assigned an internal IP address from the Azure virtual network subnet delegated for use with virtual nodes.

仮想ノード ポッドのテストTest the virtual node pod

仮想ノードで実行されているポッドをテストするには、Web クライアントでデモ アプリケーションを参照します。To test the pod running on the virtual node, browse to the demo application with a web client. ポッドには内部 IP アドレスが割り当てられているため、AKS クラスターの別のポッドからこの接続をすばやくテストできます。As the pod is assigned an internal IP address, you can quickly test this connectivity from another pod on the AKS cluster. テスト ポッドを作成し、それにターミナル セッションをアタッチします。Create a test pod and attach a terminal session to it:

kubectl run -it --rm virtual-node-test --image=debian

apt-get を使用して、curl をポッドにインストールします。Install curl in the pod using apt-get:

apt-get update && apt-get install -y curl

次に、curl (http://10.241.0.4 など) を使用して、ポッドのアドレスにアクセスします。Now access the address of your pod using curl, such as http://10.241.0.4. 前の kubectl get pods コマンドで示された独自の内部 IP アドレスを入力します。Provide your own internal IP address shown in the previous kubectl get pods command:

curl -L http://10.241.0.4

次の簡約された出力例に示されているように、デモ アプリケーションが表示されます。The demo application is displayed, as shown in the following condensed example output:

$ curl -L 10.241.0.4

<html>
<head>
  <title>Welcome to Azure Container Instances!</title>
</head>
[...]

exit を使用してテスト ポッドへのターミナル セッションを閉じます。Close the terminal session to your test pod with exit. セッションが終了すると、ポッドが削除されます。When your session is ended, the pod is the deleted.

次の手順Next steps

この記事では、ポッドを仮想ノードでスケジュールし、プライベートの内部 IP アドレスを割り当てました。In this article, a pod was scheduled on the virtual node and assigned a private, internal IP address. 代わりに、サービスのデプロイを作成して、ロード バランサーまたはイングレス コントローラーを使用してトラフィックを自分のポッドにルーティングすることもできます。You could instead create a service deployment and route traffic to your pod through a load balancer or ingress controller. 詳細は、AKS での基本的なイングレス コント ローラーの作成を参照してください。For more information, see Create a basic ingress controller in AKS.

仮想ノードは、AKS のスケーリング ソリューションの 1 つのコンポーネントです。Virtual nodes are one component of a scaling solution in AKS. スケーリング ソリューションの詳細については、次の記事を参照してください。For more information on scaling solutions, see the following articles: