チュートリアル - Azure Kubernetes Service (AKS) でアプリケーションをスケーリングする
前のチュートリアルに従った場合は、Kubernetes クラスターと Azure Store Front アプリが動作しています。
このチュートリアルでは、7 つのうちのパート 6 で、アプリ内のポッドをスケールアウトし、ポッドの自動スケーリングを試み、Azure VM ノードの数をスケーリングして、ワークロードをホストするためのクラスターの容量を変更します。 以下の方法について説明します。
- Kubernetes ノードをスケーリングします。
- アプリケーションを実行する Kubernetes ポッドを手動でスケーリングします。
- アプリのフロントエンドを実行する自動スケーリング ポッドを構成します。
開始する前に
前のチュートリアルでは、アプリケーションをコンテナー イメージにパッケージ化し、そのイメージを Azure Container Registry にアップロードし、AKS クラスターを作成し、アプリケーションをデプロイし、Azure Service Bus を使用して更新されたアプリケーションを再デプロイしました。 これらのステップを完了していない場合は、 チュートリアル 1 - AKS用のアプリケーションを準備するから始めます。
このチュートリアルには、Azure CLI バージョン 2.34.1 以降が必要です。 バージョンを確認するには、az --version
を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。
ポッドを手動でスケーリングする
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-front
kubectl get pods
コマンドを使用して、追加のポッドが作成されたことを確認します。kubectl get pods
次の出力例は、Azure Store Front アプリを実行している追加のポッドを示しています:
READY STATUS RESTARTS AGE store-front-2606967446-2q2qzc 1/1 Running 0 15m 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
ポッドを自動スケールする
ポッドの水平オートスケーラーを使用するには、すべてのコンテナーで 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: 50
kubectl apply
コマンドを使用して、自動スケーラー マニフェスト ファイルを適用します。kubectl apply -f aks-store-quickstart-hpa.yaml
kubectl get hpa
コマンドを使用して、自動スケーラーの状態を確認します。kubectl get hpa
数分後、Azure Store Front アプリの負荷が最小限で、ポッド レプリカの数は 3 に減少します。 もう一度
kubectl get pods
を実行すると、不要なポッドが削除されていることがわかります。
Note
Kubernetes ベースのイベント ドリブン オートスケーラー (KEDA) AKS アドオンをクラスターに対して有効にして、プロセスする必要があるイベントの数に基づいてスケーリングを実行できます。 詳細については、「 Kubernetes Event-Driven Autoscaling (KEDA) アドオン (プレビュー)を使用してアプリケーションの自動スケールを簡略化できるようにする」を参照してください。
AKS ノードの手動スケーリング
前のチュートリアルでコマンドを使って Kubernetes クラスターを作成した場合、そのクラスターには 2 つのノードがあります。 この数量を増減する必要がある場合は、ノードの数を手動で調整することができます。
次の例では、myAKSCluster という名前の Kubernetes クラスターのノードの数を 3 に増やしています。 コマンドが完了するまでに数分かかります。
az aks scale
コマンドを使用して、クラスター ノードをスケーリングします。az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 3
クラスターが正常にスケーリングされると、出力は次の出力例のようになります。
"aadProfile": null, "addonProfiles": null, "agentPoolProfiles": [ { ... "count": 3, "mode": "System", "name": "nodepool1", "osDiskSizeGb": 128, "osDiskType": "Managed", "osType": "Linux", "ports": null, "vmSize": "Standard_DS2_v2", "vnetSubnetId": null ... } ... ]
クラスター内のノードを自動スケールすることもできます。 詳細については、「 ノード プールでクラスター オートスケーラーを使用する」を参照してください。
次のステップ
このチュートリアルでは、Kubernetes クラスターの異なるスケーリング機能を使いました。 以下の方法を学習しました。
- アプリケーションを実行する Kubernetes ポッドを手動でスケーリングします。
- アプリのフロントエンドを実行する自動スケーリング ポッドを構成します。
- Kubernetes ノードを手動でスケーリングします。
次のチュートリアルでは、AKS クラスターで Kubernetes をアップグレードする方法について説明します。
Azure Kubernetes Service