協助改善此頁面
想要為此使用者指南做出貢獻嗎? 捲動至此頁面底部,然後選取 [編輯此頁面於] GitHub。您的貢獻將有助於使我們的用戶指南更適合所有人。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
調整網繭資源 Vertical Pod Autoscaler
KubernetesVertical Pod Autoscaler
必要條件
-
您擁有現有的 Amazon EKS 叢集。如果您沒有,則請參閱 開始使用 Amazon EKS。
-
您已安裝 Kubernetes 指標伺服器。如需詳細資訊,請參閱 檢視資源使用狀況 KubernetesMetrics Server。
-
您所使用的
kubectl
用戶端已設定將與您的 Amazon EKS 叢集通訊。 -
裝置上已安裝 OpenSSL
1.1.1
或更新版本。
部署 Vertical Pod Autoscaler
在本節中,您會將 Vertical Pod Autoscaler 部署到叢集。
部署 Vertical Pod Autoscaler
-
開啟終端機視窗,導覽至您要下載 Vertical Pod Autoscaler 原始程式碼的目錄。
-
複製 kubernetes/autoscaler
GitHub 儲存庫。 git clone https://github.com/kubernetes/autoscaler.git
-
切換至
vertical-pod-autoscaler
目錄。cd autoscaler/vertical-pod-autoscaler/
-
(選用) 如果您已部署另一個版本的 Vertical Pod Autoscaler,請使用下列命令將其移除。
./hack/vpa-down.sh
如果您的節點對
registry.k8s.io
容器登錄檔無網際網路存取權,則您需要提取以下映像,並將其推送到您的私有儲存庫。如需有關如何提取映像以及將映像推送到您的私有儲存庫的詳細資訊,請參閱 將容器映像從一個儲存庫複製到另一個儲存庫。registry.k8s.io/autoscaling/vpa-admission-controller:0.10.0 registry.k8s.io/autoscaling/vpa-recommender:0.10.0 registry.k8s.io/autoscaling/vpa-updater:0.10.0
如果要將映像推送到私有 Amazon ECR 儲存庫,請使用您的登錄檔取代清單檔案中的
registry.k8s.io
。使用您的帳戶 ID 取代
。111122223333
以叢集所 AWS 區域 在的位置取代。以下命令假定您將自己的儲存庫命名為與清單檔案中儲存庫相同的名稱。如果您將自己的儲存庫命名為其他名稱,您也需要變更清單檔案中儲存庫的名稱。region-code
sed -i.bak -e 's/registry.k8s.io/
111122223333
.dkr.ecr.region-code
.amazonaws.com/' ./deploy/admission-controller-deployment.yaml sed -i.bak -e 's/registry.k8s.io/111122223333
.dkr.ecr.region-code
.amazonaws.com/' ./deploy/recommender-deployment.yaml sed -i.bak -e 's/registry.k8s.io/111122223333
.dkr.ecr.region-code
.amazonaws.com/' ./deploy/updater-deployment.yaml-
使用下列命令,將 Vertical Pod Autoscaler 部署到您的叢集。
./hack/vpa-up.sh
-
確認已成功建立 Vertical Pod Autoscaler Pods。
kubectl get pods -n kube-system
範例輸出如下。
NAME READY STATUS RESTARTS AGE [...] metrics-server-
8459fc497
-kfj8w
1/1 Running 0 83m vpa-admission-controller-68c748777d
-ppspd
1/1 Running 0 7s vpa-recommender-6fc8c67d85
-gljpl
1/1 Running 0 8s vpa-updater-786b96955c
-bgp9d
1/1 Running 0 8s
測試您的 Vertical Pod Autoscaler 安裝
在本節中,您將部署範例應用程式,以驗證 Vertical Pod Autoscaler 是否正常運作。
測試您的 Vertical Pod Autoscaler 安裝
-
使用以下命令部署
hamster.yaml
Vertical Pod Autoscaler 範例。kubectl apply -f examples/hamster.yaml
-
從
hamster
範例應用程式取得 Pods。kubectl get pods -l app=hamster
範例輸出如下。
hamster-
c7d89d6db
-rglf5
1/1 Running 0 48s hamster-c7d89d6db
-znvz5
1/1 Running 0 48s -
描述其中一個 Pods,以檢視其
cpu
和memory
的保留情況。使用在上一個步驟傳回的輸出中其中一個 ID 來取代
。c7d89d6db-rglf5
kubectl describe pod hamster-
c7d89d6db-rglf5
範例輸出如下。
[...] Containers: hamster: Container ID: docker://e76c2413fc720ac395c33b64588c82094fc8e5d590e373d5f818f3978f577e24 Image: registry.k8s.io/ubuntu-slim:0.1 Image ID: docker-pullable://registry.k8s.io/ubuntu-slim@sha256:b6f8c3885f5880a4f1a7cf717c07242eb4858fdd5a84b5ffe35b1cf680ea17b1 Port: <none> Host Port: <none> Command: /bin/sh Args: -c while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done State: Running Started: Fri, 27 Sep 2019 10:35:16 -0700 Ready: True Restart Count: 0 Requests: cpu: 100m memory: 50Mi [...]
您可以看到原始 Pod 保留 100 millicpu 的 CPU 和 50 MiB 的記憶體。在這個範例應用程式中,100 millicpu 小於 Pod 執行所需,因此 CPU 受到限制。保留的記憶體也遠少於所需。Vertical Pod Autoscaler
vpa-recommender
部署會分析hamster
Pods,以檢查 CPU 和記憶體需求是否合適。若需要調整,vpa-updater
會以更新的值重新啟動 Pods。 -
等待
vpa-updater
啟動新的hamster
Pod。這需要一兩分鐘。您可以使用下列命令來監控 Pods。注意
若您不確定新的 Pod 是否已啟動,請將 Pod 名稱與之前的清單互相比較。當新的 Pod 啟動時,您會看到新的 Pod 名稱。
kubectl get --watch Pods -l app=hamster
-
當新的
hamster
Pod 啟動時,請對其做出描述並檢視更新的 CPU 和記憶體保留。kubectl describe pod hamster-
c7d89d6db
-jxgfv
範例輸出如下。
[...] Containers: hamster: Container ID: docker://2c3e7b6fb7ce0d8c86444334df654af6fb3fc88aad4c5d710eac3b1e7c58f7db Image: registry.k8s.io/ubuntu-slim:0.1 Image ID: docker-pullable://registry.k8s.io/ubuntu-slim@sha256:b6f8c3885f5880a4f1a7cf717c07242eb4858fdd5a84b5ffe35b1cf680ea17b1 Port: <none> Host Port: <none> Command: /bin/sh Args: -c while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done State: Running Started: Fri, 27 Sep 2019 10:37:08 -0700 Ready: True Restart Count: 0 Requests: cpu: 587m memory: 262144k [...]
在先前的輸出中,您可以看到
cpu
保留已增加到 587 millicpu,這已是原始值的 5 倍。memory
已增加到 262,144 KB,大約是 250 MiB 或原始值的 5 倍。此 Pod 的資源不足,Vertical Pod Autoscaler 已依照更適當的值來更正預估值。 -
描述
hamster-vpa
資源以檢視新的建議。kubectl describe vpa/hamster-vpa
範例輸出如下。
Name: hamster-vpa Namespace: default Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"autoscaling.k8s.io/v1beta2","kind":"VerticalPodAutoscaler","metadata":{"annotations":{},"name":"hamster-vpa","namespace":"d... API Version: autoscaling.k8s.io/v1beta2 Kind: VerticalPodAutoscaler Metadata: Creation Timestamp: 2019-09-27T18:22:51Z Generation: 23 Resource Version: 14411 Self Link: /apis/autoscaling.k8s.io/v1beta2/namespaces/default/verticalpodautoscalers/hamster-vpa UID: d0d85fb9-e153-11e9-ae53-0205785d75b0 Spec: Target Ref: API Version: apps/v1 Kind: Deployment Name: hamster Status: Conditions: Last Transition Time: 2019-09-27T18:23:28Z Status: True Type: RecommendationProvided Recommendation: Container Recommendations: Container Name: hamster Lower Bound: Cpu: 550m Memory: 262144k Target: Cpu: 587m Memory: 262144k Uncapped Target: Cpu: 587m Memory: 262144k Upper Bound: Cpu: 21147m Memory: 387863636 Events: <none>
-
當您完成範例應用程式的實驗後,您可以使用下列命令將其刪除。
kubectl delete -f examples/hamster.yaml