協助改進此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Horizontal Pod Autoscaler 擴展 Pod 部署
Kubernetes Horizontal Pod Autoscaler
Horizontal Pod Autoscaler 是 Kubernetes 中的標準 API 資源,只需要在 Amazon EKS 叢集上安裝指標來源 (例如 Kubernetes 指標伺服器) 即可運作。您不需要在叢集上部署或安裝 Horizontal Pod Autoscaler,即可開始調整您的應用程式。如需詳細資訊,請參閱 Kubernetes 文件中的 Horizontal Pod Autoscaler
使用此主題為您的 Amazon EKS 叢集準備 Horizontal Pod Autoscaler,並以範例應用程式驗證是否正常運作。
注意
此主題是根據 Kubernetes 文件中的 Horizontal Pod Autoscaler 演練
-
您擁有現有的 Amazon EKS 叢集。如果您沒有,則請參閱 開始使用 Amazon EKS。
-
您已安裝 Kubernetes 指標伺服器。如需詳細資訊,請參閱 使用 Kubernetes 指標伺服器檢視資源用量。
-
您所使用的
kubectl用戶端已設定將與您的 Amazon EKS 叢集通訊。
執行 Horizontal Pod Autoscaler 測試應用程式
在本節中,您將部署範例應用程式,以驗證 Horizontal Pod Autoscaler 是否正常運作。
注意
此範例是根據 Kubernetes 文件中的 Horizontal Pod Autoscaler 演練
-
使用下列命令部署簡單的 Apache Web 伺服器應用程式。
kubectl apply -f https://k8s.io/examples/application/php-apache.yaml此 Apache Web 伺服器 Pod 獲得 500 millicpu CPU 的限制,而在連接埠 80 上提供服務。
-
建立
php-apache部署的 Horizontal Pod Autoscaler 資源。kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10此命令會建立自動擴展器,其目標為 50% CPU 使用率用於部署,以及至少一個 Pod 和最多十個 Pod。當平均 CPU 負載低於 50% 時,自動擴展器會嘗試降低部署中的 Pod 數量,最少降低至一個。當負載大於 50% 時,自動擴展器會嘗試增加部署中的 Pod 數量,最多十個。如需詳細資訊,請參閱 Kubernetes 文件中的 HorizontalPodAutoscaler 如何運作?
。 -
使用以下命令描述自動擴展器,以檢視其詳細資訊。
kubectl get hpa範例輸出如下。
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE php-apache Deployment/php-apache 0%/50% 1 10 1 51s如您所見,目前的 CPU 負載是
0%,因為伺服器上還沒有負載。Pod 數量已在其最低底限 (一個),因此無法縮減。 -
透過執行容器來建立 Web 伺服器的負載。
kubectl run -i \ --tty load-generator \ --rm --image=busybox \ --restart=Never \ -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://php-apache; done" -
若要觀察向外擴展部署,請定期在不同的終端機中,從您執行上一個步驟的終端機執行下列命令。
kubectl get hpa php-apache範例輸出如下。
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE php-apache Deployment/php-apache 250%/50% 1 10 5 4m44s複本計數可能需要一分多鐘的時間才會增加。只要實際 CPU 百分比高於目標百分比,複本計數就會增加,最多可增加至 10。在這種情況下,它會是
250%,所以REPLICAS的數量會繼續增加。注意
您可能需要幾分鐘才會看到複本計數達到其最大值。例如,如果 CPU 負載只需要 6 個複本維持在 50% 或以下,則負載將不會擴展超出 6 個複本。
-
停止該負載。在您正在產生負載的終端窗口中,按住
Ctrl+C鍵來停用負載。透過在正在觀察縮減的終端中再次執行下列命令,您會看到複本縮減回 1。kubectl get hpa範例輸出如下。
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE php-apache Deployment/php-apache 0%/50% 1 10 1 25m注意
縮減的預設時間範圍為 5 分鐘,因此需要一些時間才會看到複本計數再次達到 1,即使目前的 CPU 百分比為 0。時間範圍是可修改的。如需詳細資訊,請參閱 Kubernetes 文件中的 Horizontal Pod Autoscaler
。 -
當您完成範例應用程式的實驗後,請刪除
php-apache資源。kubectl delete deployment.apps/php-apache service/php-apache horizontalpodautoscaler.autoscaling/php-apache