協助改善此頁面
想要為此使用者指南做出貢獻? 捲動至此頁面底部,然後在 上選取編輯此頁面 GitHub。您的貢獻將幫助我們的使用者指南更適合所有人。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 擴展 Pod 部署 Horizontal Pod Autoscaler
所以此 Kubernetes 水平 Pod Autoscaler
所以此 Horizontal Pod Autoscaler 是 中的標準API資源 Kubernetes 只需要指標來源 (例如 Kubernetes 指標伺服器) 安裝在您的 Amazon EKS叢集上以運作。您不需要部署或安裝 Horizontal Pod Autoscaler 在叢集上開始擴展您的應用程式。如需詳細資訊,請參閱 Horizontal Pod Autoscaler 在 中 Kubernetes 文件中)。
使用此主題來準備 Horizontal Pod Autoscaler 用於您的 Amazon EKS叢集,並驗證其是否使用範例應用程式。
注意
本主題是以 Horizontal Pod autoscaler 中的演練
必要條件
-
您有現有的 Amazon EKS叢集。如果您沒有,則請參閱 開始使用 Amazon EKS。
-
您有 Kubernetes 指標伺服器已安裝。如需詳細資訊,請參閱使用 檢視資源用量 KubernetesMetrics Server。
-
您正在使用設定為與 Amazon EKS叢集 通訊的
kubectl
用戶端。
執行 Horizontal Pod Autoscaler 測試應用程式
在本節中,您將部署範例應用程式,以驗證 Horizontal Pod Autoscaler 是否正常運作。
注意
此範例以水平 Pod 中的自動擴展器演練
測試您的 Horizontal Pod Autoscaler 安裝
-
使用下列命令部署簡單的 Apache Web 伺服器應用程式。
kubectl apply -f https://k8s.io/examples/application/php-apache.yaml
此 Apache Web 伺服器 Pod 會獲得 500 毫 CPU CPU限制,並在連接埠 80 上提供服務。
-
建立
php-apache
部署的 Horizontal Pod Autoscaler 資源。kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10
此命令會建立自動擴展器,以部署的 50% CPU使用率為目標,其中至少有一個 Pod 最多十個 Pods。 當平均CPU負載低於 50% 時,自動擴展器會嘗試減少 Pods 在 部署中,至少為一個。當負載大於 50% 時,自動擴展器會嘗試增加 Pods 在 部署中,最多十個。如需詳細資訊,請參閱 中的如何 HorizontalPodAutoscaler 運作?
Kubernetes 文件中)。 -
使用以下命令描述自動擴展器,以檢視其詳細資訊。
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
的數量會繼續增加。注意
您可能需要幾分鐘才會看到複本計數達到其最大值。例如,如果只有 6 個複本是讓CPU負載維持在 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
注意
縮減的預設時間範圍為五分鐘,因此即使目前CPU百分比為 0%,您仍需要一段時間才能看到複本計數再次達到 1。時間範圍是可修改的。如需詳細資訊,請參閱中的水平 Pod Autoscaler
Kubernetes 文件中)。 -
當您完成範例應用程式的實驗後,請刪除
php-apache
資源。kubectl delete deployment.apps/php-apache service/php-apache horizontalpodautoscaler.autoscaling/php-apache