教學課程:在 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 中的應用程式。