チュートリアル:Azure Kubernetes Service (AKS) でのアプリケーションのスケーリングTutorial: Scale applications in Azure Kubernetes Service (AKS)

ここまでチュートリアルに従って進めてきた場合は、AKS で Kubernetes クラスターが動作していて、サンプル Azure Vote アプリをデプロイしてあります。If you've followed the tutorials, you have a working Kubernetes cluster in AKS and you deployed the sample Azure Voting app. このチュートリアルでは、7 つあるうちの 5 番目のパートで、アプリのポッドをスケールアウトし、ポッドの自動スケーリングを試します。In this tutorial, part five of seven, you scale out the pods in the app and try pod autoscaling. また、Azure VM ノードの数をスケーリングして、クラスターがワークロードをホストする容量を変更する方法についても説明します。You also learn how to scale the number of Azure VM nodes to change the cluster's capacity for hosting workloads. 学習内容は次のとおりです。You learn how to:

  • Kubernetes ノードをスケーリングするScale the Kubernetes nodes
  • アプリケーションを実行する Kubernetes ポッドを手動でスケーリングするManually scale Kubernetes pods that run your application
  • アプリのフロントエンドを実行する自動スケーリング ポッドを構成するConfigure autoscaling pods that run the app front-end

追加のチュートリアルでは、Azure Vote アプリケーションが新しいバージョンに更新されます。In additional tutorials, the Azure Vote application is updated to a new version.

開始する前にBefore you begin

これまでのチュートリアルでは、アプリケーションをコンテナー イメージにパッケージ化しました。In previous tutorials, an application was packaged into a container image. このイメージを Azure Container Registry にアップロードし、AKS クラスターを作成しました。This image was uploaded to Azure Container Registry, and you created an AKS cluster. その後、AKS クラスターにアプリケーションをデプロイしました。The application was then deployed to the AKS cluster. これらの手順を完了しておらず、順番に進めたい場合は、チュートリアル 1 - コンテナー イメージを作成するに関するページから開始してください。If you haven't done these steps, and would like to follow along, start with Tutorial 1 – Create container images.

このチュートリアルでは、Azure CLI バージョン 2.0.53 以降を実行している必要があります。This tutorial requires that you're running the Azure CLI version 2.0.53 or later. バージョンを確認するには、az --version を実行します。Run az --version to find the version. インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。If you need to install or upgrade, see Install Azure CLI.

ポッドを手動でスケーリングするManually scale pods

前のチュートリアルで Azure Vote フロントエンドと Redis インスタンスをデプロイしたときに、レプリカを 1 つ作成しました。When the Azure Vote front-end and Redis instance were deployed in previous tutorials, a single replica was created. ご利用のクラスターに存在するポッドの数と状態を確認するには、次のように kubectl get コマンドを使用します。To see the number and state of pods in your cluster, use the kubectl get command as follows:

kubectl get pods

次の出力例を見ると、フロントエンド ポッドとバックエンド ポッドが 1 つずつ存在することがわかります。The following example output shows one front-end pod and one back-end pod:

NAME                               READY     STATUS    RESTARTS   AGE
azure-vote-back-2549686872-4d2r5   1/1       Running   0          31m
azure-vote-front-848767080-tf34m   1/1       Running   0          31m

azure-vote-front のデプロイに含まれるポッドの数を手動で変更するには、kubectl scale コマンドを使います。To manually change the number of pods in the azure-vote-front deployment, use the kubectl scale command. 次の例では、フロントエンド ポッドの数を 5 に増やしています。The following example increases the number of front-end pods to 5:

kubectl scale --replicas=5 deployment/azure-vote-front

AKS によって追加のポッドが作成されていることを確認するために、もう一度 kubectl get pods を実行します。Run kubectl get pods again to verify that AKS creates the additional pods. しばらくすると、追加したポッドがクラスターで利用できる状態になります。After a minute or so, the additional pods are available in your cluster:

$ kubectl get pods

                                    READY     STATUS    RESTARTS   AGE
azure-vote-back-2606967446-nmpcf    1/1       Running   0          15m
azure-vote-front-3309479140-2hfh0   1/1       Running   0          3m
azure-vote-front-3309479140-bzt05   1/1       Running   0          3m
azure-vote-front-3309479140-fvcvm   1/1       Running   0          3m
azure-vote-front-3309479140-hrbf2   1/1       Running   0          15m
azure-vote-front-3309479140-qphz8   1/1       Running   0          3m

ポッドを自動スケールするAutoscale pods

Kubernetes はポッドの水平自動スケーリングをサポートしており、CPU 使用率などの選ばれたメトリックに応じて、デプロイのポッドの数を調整します。Kubernetes supports horizontal pod autoscaling to adjust the number of pods in a deployment depending on CPU utilization or other select metrics. Metrics Server は、Kubernetes にリソース使用率を提供するために使用され、AKS クラスター バージョン 1.10 以降に自動的にデプロイされます。The Metrics Server is used to provide resource utilization to Kubernetes, and is automatically deployed in AKS clusters versions 1.10 and higher. AKS クラスターのバージョンを確認するには、次の例に示すように、az aks show コマンドを使用します。To see the version of your AKS cluster, use the az aks show command, as shown in the following example:

az aks show --resource-group myResourceGroup --name myAKSCluster --query kubernetesVersion

注意

AKS クラスターが 1.10 未満の場合、Metrics Server は自動的にインストールされません。If your AKS cluster is less than 1.10, the Metrics Server is not automatically installed. インストールするには、metrics-server GitHub リポジトリを複製し、サンプル リソース定義をインストールします。To install, clone the metrics-server GitHub repo and install the example resource definitions. これらの YAML 定義の内容を表示する場合は、Metrics Server for Kubernetes 1.8+ に関するページを参照してください。To view the contents of these YAML definitions, see Metrics Server for Kuberenetes 1.8+.

git clone https://github.com/kubernetes-incubator/metrics-server.git
kubectl create -f metrics-server/deploy/1.8+/

オートスケーラーを使用するには、ポッド内のすべてのコンテナーで CPU の要求と制限が定義されている必要があります。To use the autoscaler, all containers in your pods and your pods must have CPU requests and limits defined. azure-vote-front のデプロイでは、フロントエンド コンテナーによって既に 0.25 CPU が要求されています。上限は 0.5 CPU です。In the azure-vote-front deployment, the front-end container already requests 0.25 CPU, with a limit of 0.5 CPU. これらのリソース要求と制限は、次のスニペットの例に示されているように定義されています。These resource requests and limits are defined as shown in the following example snippet:

resources:
  requests:
     cpu: 250m
  limits:
     cpu: 500m

次の例では、kubectl autoscale コマンドを使って、azure-vote-front のデプロイのポッド数を自動スケーリングします。The following example uses the kubectl autoscale command to autoscale the number of pods in the azure-vote-front deployment. すべてのポッドの平均 CPU 使用率が、要求された使用率の 50% を超えると、自動スケーラーはポッドを最大 10 インスタンスまで増やします。If average CPU utilization across all pods exceeds 50% of their requested usage, the autoscaler increases the pods up to a maximum of 10 instances. その後、少なくとも 3 インスタンスがデプロイ用に定義されます。A minimum of 3 instances is then defined for the deployment:

kubectl autoscale deployment azure-vote-front --cpu-percent=50 --min=3 --max=10

自動スケーラーの状態を見るには、次のように kubectl get hpa コマンドを使用します。To see the status of the autoscaler, use the kubectl get hpa command as follows:

$ kubectl get hpa

NAME               REFERENCE                     TARGETS    MINPODS   MAXPODS   REPLICAS   AGE
azure-vote-front   Deployment/azure-vote-front   0% / 50%   3         10        3          2m

Azure Vote アプリの負荷が最低になって数分が経過すると、ポッド レプリカの数は自動的に 3 に減少します。After a few minutes, with minimal load on the Azure Vote app, the number of pod replicas decreases automatically to three. もう一度 kubectl get pods を実行すると、不要なポッドが削除されていることがわかります。You can use kubectl get pods again to see the unneeded pods being removed.

AKS ノードの手動スケーリングManually scale AKS nodes

前のチュートリアルでコマンドを使って Kubernetes クラスターを作成した場合、そのクラスターには 2 つのノードがあります。If you created your Kubernetes cluster using the commands in the previous tutorial, it has two nodes. クラスターのコンテナー ワークロードを増減する場合は、ノードの数を手動で調整できます。You can adjust the number of nodes manually if you plan more or fewer container workloads on your cluster.

次の例では、myAKSCluster という名前の Kubernetes クラスターのノードの数を 3 に増やしています。The following example increases the number of nodes to three in the Kubernetes cluster named myAKSCluster. コマンドが完了するまでに数分かかります。The command takes a couple of minutes to complete.

az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 3

クラスターが正常にスケーリングされると、出力は次の例のようになります。When the cluster has successfully scaled, the output is similar to following example:

"agentPoolProfiles": [
  {
    "count": 3,
    "dnsPrefix": null,
    "fqdn": null,
    "name": "myAKSCluster",
    "osDiskSizeGb": null,
    "osType": "Linux",
    "ports": null,
    "storageProfile": "ManagedDisks",
    "vmSize": "Standard_D2_v2",
    "vnetSubnetId": null
  }

次の手順Next steps

このチュートリアルでは、Kubernetes クラスターの異なるスケーリング機能を使いました。In this tutorial, you used different scaling features in your Kubernetes cluster. 以下の方法について学習しました。You learned how to:

  • アプリケーションを実行する Kubernetes ポッドを手動でスケーリングするManually scale Kubernetes pods that run your application
  • アプリのフロントエンドを実行する自動スケーリング ポッドを構成するConfigure autoscaling pods that run the app front-end
  • Kubernetes ノードを手動でスケーリングするManually scale the Kubernetes nodes

次のチュートリアルに進んで、Kubernetes でのアプリケーションの更新方法について学習してください。Advance to the next tutorial to learn how to update application in Kubernetes.