如何在 Amazon EKS 上设置 Kubernetes Metrics Server 和 Horizontal Pod Autoscaler?
上次更新日期:2022 年 12 月 8 日
我想要在 Amazon Elastic Kubernetes Service(Amazon EKS)上设置 Kubernetes Metrics Server 和 Horizontal Pod Autoscaler(HPA)。
解决方法
设置您的环境
1. 创建一个 Amazon Elastic Compute Cloud (Amazon EC2) 实例。
3. 在 EC2 实例上安装和配置最新版本的 AWS 命令行界面 (AWS CLI)。
4. 将您的 kubeconfig 文件配置为指向 Amazon EKS 集群。
创建 Kubernetes Metrics Server
1. 要安装 Metrics Server,请运行以下命令:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
2. 要确认 Metrics Server 是否正在运行,请运行以下命令:
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. 要创建一个连接到您先前创建的部署的单元,请运行以下命令:
kubectl run -i --tty load-generator --image=busybox /bin/sh
7. 要测试您在第 1 步中所用命名空间内的容器组(pod)上的负载,请运行以下脚本:
while true; do wget -q -O- http://php-apache; done
注意:要退出负载生成器单元的 while 循环和 tty 会话,请使用 CTRL + C 取消循环,然后,使用 CTRL+D 退出会话。
8. 要查看 HPA 如何根据 CPU 利用率指标扩展单元,请运行以下命令(最好从另一个终端窗口):
kubectl get hpa -w
Metrics Server 现已启动并运行,您可以用它来获取基于资源的指标。
9. 要清理用于测试 HPA 的资源,请运行以下命令:
kubectl delete hpa,service,deployment php-apache
kubectl delete pod load-generator