教學課程:在 Azure Kubernetes Service (AKS) 中調整應用程式
如果您已依照教學課程操作,就會在 AKS 中有一個正常運作的 Kubernetes 叢集,並已部署範例 Azure 投票應用程式。 在本教學課程中 (七個章節的第五部分),您會將應用程式中的 Pod 相應放大,然後嘗試進行 Pod 自動調整。 您也會了解如何調整 Azure VM 節點的數目,以變更叢集裝載工作負載的容量。 您會了解如何:
- 調整 Kubernetes 節點
- 手動調整執行應用程式的 Kubernetes Pod
- 設定執行應用程式前端的自動調整 Pod
在之後的教學課程中,Azure 投票應用程式會更新為新版本。
開始之前
在先前的教學課程中,已將應用程式封裝為容器映像。 此映像已上傳至 Azure Container Registry,而您已建立 AKS 叢集。 接著已將應用程式部署至 AKS 叢集。 如果您尚未完成這些步驟,而且想要跟著做,請從教學課程 1 – 建立容器映像開始。
在本教學課程中,您必須執行 Azure CLI 2.0.53 版或更新版本。 執行 az --version
以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI。
手動調整 Pod
在先前的教學課程中部署 Azure Vote 前端與 Redis 執行個體時,已建立單一複本。 若要查看叢集中的 Pod 數目和狀態,請使用 kubectl get 命令,如下所示:
kubectl get pods
下列範例輸出會顯示一個前端 Pod 和一個後端 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 部署中的 Pod 數目,請使用 kubectl scale 命令。 下列範例會將前端 Pod 的數目增加為 5:
kubectl scale --replicas=5 deployment/azure-vote-front
再次執行 kubectl get pods,以確認 AKS 成功建立其他 Pod。 大約一分鐘後,這些 Pod 就會成為叢集中的可用項目:
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
自動調整 Pod
Kubernetes 支援水平 Pod 自動調整,可根據 CPU 使用率或其他選取的計量來調整部署中的 Pod 數目。 計量伺服器可用來將資源使用率提供給 Kubernetes,並且會自動部署在 AKS 叢集 1.10 版和更新版本中。 若要查看您的 AKS 叢集版本,請使用 az aks show 命令,如下列範例所示:
az aks show --resource-group myResourceGroup --name myAKSCluster --query kubernetesVersion --output table
注意
如果您的 AKS 叢集低於 1.10,則不會自動安裝計量伺服器。 計量伺服器安裝資訊清單可作為計量伺服器版本上的 components.yaml
資產,這表示您可以透過 URL 進行安裝。 若要深入了解這些 YAML 定義,請參閱讀我檔案的<部署>一節。
範例安裝:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml
若要使用自動調整程式,必須為您 Pod 中所有容器和 Pod 定義 CPU 要求和限制。 在 azure-vote-front
部署中,前端容器已經要求 0.25 個 CPU,限制為 0.5 個 CPU。
每個容器都定義這些資源要求和限制,如下列範例程式碼片段所示:
containers:
- name: azure-vote-front
image: mcr.microsoft.com/azuredocs/azure-vote-front:v1
ports:
- containerPort: 80
resources:
requests:
cpu: 250m
limits:
cpu: 500m
下列範例會使用 kubectl autoscale 命令自動調整 azure-vote-front 部署中的 Pod 數目。 如果所有 Pod 的平均 CPU 使用率超過其所要求使用量的 50%,則自動調整程式會增加 Pod,最多可達 10 個執行個體。 然後,為此部署定義最少 3 個執行個體:
kubectl autoscale deployment azure-vote-front --cpu-percent=50 --min=3 --max=10
或者,您可以建立資訊清單檔,以定義自動調整程式行為和資源限制。 以下是資訊清單檔 (名稱為 azure-vote-hpa.yaml
) 的範例。
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: azure-vote-back-hpa
spec:
maxReplicas: 10 # define max replica count
minReplicas: 3 # define min replica count
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: azure-vote-back
targetCPUUtilizationPercentage: 50 # target CPU utilization
---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: azure-vote-front-hpa
spec:
maxReplicas: 10 # define max replica count
minReplicas: 3 # define min replica count
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: azure-vote-front
targetCPUUtilizationPercentage: 50 # target CPU utilization
使用 kubectl apply
來套用 azure-vote-hpa.yaml
資訊清單檔中定義的自動調整程式。
kubectl apply -f azure-vote-hpa.yaml
若要查看自動調整程式的狀態,請使用 kubectl get hpa
命令,如下所示:
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 應用程式上的負載降到最低,Pod 複本數目就會自動降低成三個。 您可以再次使用 kubectl get pods
,以查看移除的非必要 Pod。
注意
如需使用水平 Pod 自動調整程式的其他範例,請參閱水平 Pod 自動調整程式逐步解說。
手動調整 AKS 節點
如果您在上一個教學課程中使用命令建立了 Kubernetes 叢集,它會有兩個節點。 如果您打算在叢集上增加或減少容器工作負載,可以手動調整節點的數目。
下列範例會在名為 myAKSCluster 的 Kubernetes 叢集中,將節點的數目增加到三個。 此命令需要幾分鐘的時間來完成。
az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 3
成功調整叢集後,輸出會類似下列範例:
"agentPoolProfiles": [
{
"count": 3,
"dnsPrefix": null,
"fqdn": null,
"name": "myAKSCluster",
"osDiskSizeGb": null,
"osType": "Linux",
"ports": null,
"storageProfile": "ManagedDisks",
"vmSize": "Standard_D2_v2",
"vnetSubnetId": null
}
後續步驟
在本教學課程中,您已在 Kubernetes 叢集中使用不同的調整功能。 您已了解如何︰
- 手動調整執行應用程式的 Kubernetes Pod
- 設定執行應用程式前端的自動調整 Pod
- 手動調整 Kubernetes 節點
請繼續進行下一個教學課程,以了解如何更新 Kubernetes 中的應用程式。