前のチュートリアルに従った場合は、Kubernetes クラスターと Azure Store Front アプリが動作しています。
このチュートリアルでは、アプリでポッドをスケールアウトし、ポッドの自動スケーリングを試し、Azure VM ノードの数をスケーリングして、ワークロードをホストするためのクラスターの容量を変更します。 次の方法を学びます:
- Kubernetes ノードをスケーリングします。
- アプリケーションを実行する Kubernetes ポッドを手動でスケーリングします。
- アプリ フロントエンドを実行する自動スケール ポッドを構成します。
開始する前に
前のチュートリアルでは、アプリケーションをコンテナー イメージにパッケージ化し、そのイメージを Azure Container Registry にアップロードし、AKS クラスターを作成し、アプリケーションをデプロイし、Azure Service Bus を使用して更新されたアプリケーションを再デプロイしました。 これらの手順を完了していない場合は、 チュートリアル 1 - AKS 用のアプリケーションの準備から始めます。
このチュートリアルでは、ポッドとノードの数を変更し、コンピューティング コストを増やすことができます。 リソース グループの 共同作成者 や 所有者 など、AKS ワークロードとノード プールをスケーリングするアクセス許可を持つ ID を使用します。
このチュートリアルでは、Azure CLI バージョン 2.34.1 以降が必要です。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードが必要な場合は、Azure CLI のインストールを参照してください。
ポッドを手動でスケーリングする
AKS デスクトップ
スケーリング>デプロイメントを選択: order-service>設定を編集>レプリカ数: 5 を選択して、order-service のスケーリング設定を編集します。
続行する前に、デプロイの更新が完了したことを確認します。
kubectl getコマンドを使用して、クラスター内のポッドを表示します。kubectl get pods次の出力例は、Azure Store Front アプリを実行しているポッドを示しています。
NAME READY STATUS RESTARTS AGE order-service-848767080-tf34m 1/1 Running 0 31m product-service-4019737227-2q2qz 1/1 Running 0 31m store-front-2606967446-2q2qz 1/1 Running 0 31mコマンドを使用して、
kubectl scaleデプロイ内のポッドの数を手動で変更します。kubectl scale --replicas=5 deployment.apps/store-frontkubectl get podsコマンドを使用して、追加のポッドが作成されたことを確認します。kubectl get pods --selector app=store-front次の出力例は、Azure Store Front アプリを実行している追加のポッドを示しています。
NAME READY STATUS RESTARTS AGE store-front-3309479140-2hfh0 1/1 Running 0 3m store-front-3309479140-bzt05 1/1 Running 0 3m store-front-3309479140-fvcvm 1/1 Running 0 3m store-front-3309479140-hrbf2 1/1 Running 0 15m store-front-3309479140-qphz8 1/1 Running 0 3m
ポッドを自動スケールする
AKS デスクトップ
Project内で、[アプリケーションのデプロイ] ボタン >Kubernetes YAML を選択します。
この YAML オートスケーラー マニフェストとリソース制限をコピーして貼り付けます。
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: store-front-hpa spec: maxReplicas: 10 # define max replica count minReplicas: 3 # define min replica count scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: store-front metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50[ 次へ>展開>Close を選択します。
[ スケーリング>展開の選択: ストア フロントを選択します。 スケーリング モードが、構成によって設定された HPA、レプリカの境界、CPU 使用率/ターゲットに設定されていることがわかります。
HPA モードが有効であり、レプリカの境界がマニフェスト値と一致することを確認します。
コマンドライン
ポッドの水平オートスケーラーを使用するには、すべてのコンテナーで CPU 要求と制限が定義され、ポッドに要求が指定されている必要があります。
aks-store-quickstartデプロイでは、フロントエンド コンテナーは 1000m CPU の制限を持つ 1m の CPU を要求します。
これらのリソース要求と制限は、次の要約された YAML の例に示すように、コンテナーごとに定義されます。
...
containers:
- name: store-front
image: ghcr.io/azure-samples/aks-store-demo/store-front:latest
ports:
- containerPort: 8080
name: store-front
...
resources:
requests:
cpu: 1m
...
limits:
cpu: 1000m
...
マニフェスト ファイルを使用したポッドの自動スケーリング
次に示すように、マニフェスト ファイルを作成して、自動スケーラーの動作とリソースの制限を定義します。次のマニフェスト ファイルの
aks-store-quickstart-hpa.yaml例を参照してください。apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: store-front-hpa spec: maxReplicas: 10 # define max replica count minReplicas: 3 # define min replica count scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: store-front metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50kubectl applyコマンドを使用して、自動スケーラー マニフェスト ファイルを適用します。kubectl apply -f aks-store-quickstart-hpa.yamlkubectl get hpaコマンドを使用して、自動スケーラーの状態を確認します。kubectl get hpa数分後、Azure Store Front アプリの負荷が最小限に抑え、ポッド レプリカの数は 3 に減少します。
kubectl get podsコマンドをもう一度使用して、不要なポッドが削除されていることを確認できます。TARGETS列とREPLICAS列に、store-front-hpaに対して想定される自動スケール動作が表示されたら続行します。
Note
Kubernetes ベースの Event-Driven Autoscaler (KEDA) AKS アドオンをクラスターに対して有効にして、処理する必要があるイベントの数に基づいてスケーリングを実行できます。 詳細については、「 Kubernetes Event-Driven Autoscaling (KEDA) アドオン (プレビュー) を使用した簡略化されたアプリケーション自動スケーリングの有効化」を参照してください。
AKS ノードを手動でスケーリングする
Note
AKS 自動クラスターを作成した場合、クラスターによってノードが自動スケーリングされるため、これらの手順は適用されません。
前のチュートリアルのコマンドを使用して AKS Standard クラスターを作成した場合、クラスターには 3 つのノードがあります。 この量を増減する場合は、ノードの数を手動で調整できます。
次の例では、 myAKSCluster という名前の Kubernetes クラスター内のノードの数を 5 に増やします。 コマンドの完了には数分かかります。
az aks scaleコマンドを使用してクラスター ノードをスケーリングします。クラスターが正常にスケーリングされると、出力は次の出力例のようになります。
az aks nodepool list --resource-group myResourceGroup --cluster-name myAKSCluster --query "[].{name:name,count:count}" -o tableaz aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 5クラスターが正常にスケーリングされると、出力は次の出力例のようになります。
"aadProfile": null, "addonProfiles": null, "agentPoolProfiles": [ { ... "count": 5, "mode": "System", "name": "nodepool1", "osDiskSizeGb": 128, "osDiskType": "Managed", "osType": "Linux", "ports": null, "vmSize": "Standard_DS2_v2", "vnetSubnetId": null ... } ... ]
クラスター内のノードを自動スケールすることもできます。 詳細については、「 ノード プールでクラスター オートスケーラーを使用する」を参照してください。
次のステップ
このチュートリアルでは、Kubernetes クラスターのさまざまなスケーリング機能を使用しました。 以下の方法を学習しました。
- アプリケーションを実行する Kubernetes ポッドを手動でスケーリングします。
- アプリ フロントエンドを実行する自動スケール ポッドを構成します。
- Kubernetes ノードを手動でスケーリングします。
完了したら、[ 削除 ] アイコンを選択し、確認メッセージで [ 名前空間も削除する] を選択します。
次のチュートリアルでは、AKS クラスターで Kubernetes をアップグレードする方法について説明します。