練習 - 在 AKS 上啟用叢集可擴縮性
在新叢集上啟用叢集自動調整程式
在瀏覽器中開啟 Azure Cloud Shell 並選取 Bash。
使用
az group create
命令建立 Azure 資源群組。az group create --name myResourceGroup --location eastus
使用
az aks create
命令和--enable-cluster-autoscaler
旗標,建立已啟用叢集自動調整程式的新 Azure Kubernetes Service (AKS) 叢集。az aks create --resource-group myResourceGroup --name myAKSCluster --enable-addons monitoring --enable-msi-auth-for-monitoring --enable-cluster-autoscaler --min-count 1 --max-count 10 --generate-ssh-keys
建立叢集需要幾分鐘的時間。
使用
az aks get-credentials
命令連線至您的叢集。az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
使用
kubectl get nodes
命令檢視您的叢集中的節點。kubectl get nodes
您的輸出看起來應類似下列範例輸出:
NAME STATUS ROLES AGE VERSION aks-nodepool1-12345678-vmss000000 Ready agent 1m v1.26.6 aks-nodepool1-12345678-vmss000001 Ready agent 1m v1.26.6 aks-nodepool1-12345678-vmss000002 Ready agent 1m v1.26.6
部署範例應用程式
在 Cloud Shell 中,使用
touch
命令,為名為 deployment.yml 的 Kubernetes 部署建立一個資訊清單檔。touch deployment.yml
使用
code
命令開啟該資訊清單檔。code deployment.yml
將下列程式碼貼到該資訊清單檔中。
apiVersion: apps/v1 kind: Deployment metadata: name: contoso-website spec: replicas: 35 selector: matchLabels: app: contoso-website template: metadata: labels: app: contoso-website spec: containers: - image: mcr.microsoft.com/mslearn/samples/contoso-website name: contoso-website resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi ports: - containerPort: 80 name: http
儲存檔案並關閉編輯器。
更新叢集自動調整程式設定檔
您可以在組態中設定一系列的旗標來微調自動調整程式設定檔。 檢視 [使用叢集自動調整程式設定檔] 中的可用旗標清單。 在這個範例中,您將更新自動調整程式以減少檢查是否有待處理 Pod 的輪詢時間,並減少它在從先前的狀態縮小規模之前需要等待的時間。
使用
az aks update
命令搭配--cluster-autoscaler-profile
旗標來更新叢集自動調整程式設定檔。az aks update --resource-group myResourceGroup --name myAKSCluster --cluster-autoscaler-profile scan-interval=5s scale-down-unready-time=5m scale-down-delay-after-add=5m
使用
kubectl scale deployment
命令縮小部署的規模。kubectl scale deployment contoso-website --replicas 5
使用
kubectl describe cm
命令檢查叢集自動調整程序記錄,並查詢 cluster-autoscaler-status 組態對應。kubectl describe cm cluster-autoscaler-status -n kube-system
在縮小規模之前,您的輸出看起來應該類似下列的範例輸出:
Cluster-autoscaler status at 2023-11-09 20:08:14.892961701 +0000 UTC: Cluster-wide: Health: Healthy (ready=3 unready=0 notStarted=0 longNotStarted=0 registered=3 longUnregistered=0) LastProbeTime: 2023-11-09 19:56:57.890988498 +0000 UTC m=+1673.465985892 LastTransitionTime: 2023-11-09 19:45:09.593593337 +0000 UTC m=+774.168590731 ScaleUp: NoActivity (ready=3 registered=3) LastProbeTime: 2023-11-09 19:56:57.890988498 +0000 UTC m=+1673.465985892 LastTransitionTime: 2023-11-09 19:45:09.593593337 +0000 UTC m=+774.168590731 ScaleDown: CandidatesPresent (candidates=3) LastProbeTime: 2023-11-09 19:56:57.890988498 +0000 UTC m=+1673.465985892 LastTransitionTime: 2023-11-09 19:56:52.440038763 +0000 UTC m=+1101.015036157
等候大約五分鐘以讓自動調整程式完成規模的縮小,然後重新執行先前的
kubectl describe cm
。在縮小規模之後,您的輸出看起來應該類似下列的範例輸出:
Cluster-autoscaler status at 2023-11-09 20:14:39.123206413 +0000 UTC: Cluster-wide: Health: Healthy (ready=1 unready=0 (resourceUnready=0) notStarted=0 longNotStarted=0 registered=1 longUnregistered=0) LastProbeTime: 2023-11-09 20:14:39.113206413 +0000 UTC m=+2150.697175601 LastTransitionTime: 2023-11-09 19:45:09.593593337 +0000 UTC m=+774.168590731 ScaleUp: NoActivity (ready=1 registered=1) LastProbeTime: 2023-11-09 20:14:39.113206413 +0000 UTC m=+2150.697175601 LastTransitionTime: 2023-11-09 19:45:09.593593337 +0000 UTC m=+774.168590731 ScaleDown: NoCandidates (candidates=0) LastProbeTime: 2023-11-09 20:14:39.113206413 +0000 UTC m=+2150.697175601 LastTransitionTime: 2023-11-09 20:07:08.79828656 +0000 UTC m=+1718.924760896
使用
kubectl get nodes
命令檢視您的叢集中的節點。kubectl get nodes
您的輸出看起來應該類似下列的範例輸出,其中節點數縮減為一個:
NAME STATUS ROLES AGE VERSION aks-nodepool1-12345678-vmss000000 Ready agent 37m v1.26.6