我想在 Amazon Elastic Kubernetes Service (Amazon EKS) 上設定 Kubernetes 指標伺服器和 Horizontal Pod Autoscaler (HPA)。
解決方案
設定您的環境
- 建立 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。
- 在您的 EC2 執行個體安裝 kubectl。
- 在您的 EC2 執行個體安裝和設定最新版本的 AWS Command Line Interface (AWS CLI)。
- 將您的 kubeconfig 檔案設定為指向 Amazon EKS 叢集。
建立 Kubernetes 指標伺服器
1.若要安裝指標伺服器,請執行以下命令:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
2.若要確認指標伺服器正在執行,請執行以下命令:
kubectl get pods -n kube-system -l k8s-app=metrics-server
輸出類似於以下內容:
kubectl get pods -n kube-system -l k8s-app=metrics-server
metrics-server-85cc795fbf-79d72 1/1 Running 0 22s
建立 php-apache 部署和服務
1.若要建立 php-apache 部署,請執行以下命令:
kubectl create deployment php-apache --image=k8s.gcr.io/hpa-example
2.若要設定 CPU 請求,請執行以下命令:
kubectl patch deployment php-apache -p='{"spec":{"template":{"spec":{"containers":[{"name":"hpa-example","resources":{"requests":{"cpu":"200m"}}}]}}}}'
重要事項: 如果您未正確設定 cpu 值,則不會定義 Pod 的 CPU 利用率指標,且 HPA 也無法擴展。
3.若要將部署公開為服務,請執行以下命令:
kubectl create service clusterip php-apache --tcp=80
4.若要建立 HPA,請執行以下命令:
kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10
5.若要確認已建立 HPA,請執行以下命令:
kubectl get hpa
6.若要建立 Pod 以連接至您先前建立的部署,請執行以下命令:
kubectl run -i --tty load-generator --image=busybox /bin/sh
7.若要在步驟 1 使用的命名空間測試 Pod 的負載,請執行以下指令碼:
while true; do wget -q -O- http://php-apache; done
注意: 若要結束 while 迴圈和負載產生器 Pod 的 tty 工作階段,請使用 CTRL + C 取消迴圈。然後,利用 CTRL + D 結束工作階段。
8.若要查看 HPA 如何根據 CPU 利用率指標擴展 Pod,請執行以下命令 (建議從另一個終端機視窗):
kubectl get hpa -w
指標伺服器現已啟動且正在執行,您可以用它來取得以資源為基礎的指標。
9.若要清理用於測試 HPA 的資源,請執行以下命令:
kubectl delete hpa,service,deployment php-apache
kubectl delete pod load-generator
相關資訊
Horizontal Pod Autoscaling (在 Kubernetes 網站上)