我想在 Amazon Elastic Kubernetes Service(Amazon EKS)上设置 Kubernetes Metrics Server 和 Horizontal Pod Autoscaler(HPA)。
解决方法
设置您的环境
- 创建 Amazon Elastic Compute Cloud(Amazon EC2)实例。
- 在您的 EC2 实例上安装 kubectl。
- 在您的 EC2 实例上安装和配置最新版本的 AWS 命令行界面(AWS CLI)。
- 将您的 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 的值,则不会定义容器组的 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 中使用的命名空间中测试容器组上的负载,请运行以下脚本:
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
相关信息
Horizontal Pod Autoscaling(在 Kubernetes 网站上)