如何在 Amazon EKS 上設定 Kubernetes 指標伺服器和 Horizontal Pod Autoscaler?

2 分的閱讀內容
0

我想在 Amazon Elastic Kubernetes Service (Amazon EKS) 上設定 Kubernetes 指標伺服器和 Horizontal Pod Autoscaler (HPA)。

解決方案

設定您的環境

  1. 建立 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體
  2. 在您的 EC2 執行個體安裝 kubectl
  3. 在您的 EC2 執行個體安裝設定最新版本的 AWS Command Line Interface (AWS CLI)。
  4. 將您的 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 網站上)

AWS 官方
AWS 官方已更新 2 年前