使用 擴展 Pod 部署 Horizontal Pod Autoscaler - Amazon EKS

協助改善此頁面

想要為此使用者指南做出貢獻? 捲動至此頁面底部,然後在 上選取編輯此頁面 GitHub。您的貢獻將幫助我們的使用者指南更適合所有人。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 擴展 Pod 部署 Horizontal Pod Autoscaler

所以此 Kubernetes 水平 Pod Autoscaler 會自動擴展 Pods 根據資源的使用CPU率,在部署、複寫控制器或複本集中。這可協助您的應用程式水平擴展以滿足增加的需求,或在不需要資源時縮減,從而釋出節點供其他應用程式使用。當您設定目標CPU使用率百分比時,Horizontal 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 中的演練 Kubernetes 文件中)。

必要條件

執行 Horizontal Pod Autoscaler 測試應用程式

在本節中,您將部署範例應用程式,以驗證 Horizontal Pod Autoscaler 是否正常運作。

注意

此範例以水平 Pod 中的自動擴展器演練 Kubernetes 文件中)。

測試您的 Horizontal Pod Autoscaler 安裝
  1. 使用下列命令部署簡單的 Apache Web 伺服器應用程式。

    kubectl apply -f https://k8s.io/examples/application/php-apache.yaml

    此 Apache Web 伺服器 Pod 會獲得 500 毫 CPU CPU限制,並在連接埠 80 上提供服務。

  2. 建立 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 文件中)。

  3. 使用以下命令描述自動擴展器,以檢視其詳細資訊。

    kubectl get hpa

    範例輸出如下。

    NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE php-apache Deployment/php-apache 0%/50% 1 10 1 51s

    如您所見,目前的CPU負載為 0%,因為伺服器上尚無負載。所以此 Pod 計數已位於最低界限 (一個),因此無法縮減。

  4. 透過執行容器來建立 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"
  5. 若要觀察向外擴展部署,請定期在不同的終端機中,從您執行上一個步驟的終端機執行下列命令。

    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 個複本。

  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 文件中)。

  7. 當您完成範例應用程式的實驗後,請刪除 php-apache 資源。

    kubectl delete deployment.apps/php-apache service/php-apache horizontalpodautoscaler.autoscaling/php-apache