如何在 Amazon EKS 上设置 Kubernetes Metrics Server 和 Horizontal Pod Autoscaler?

2 分钟阅读
0

我想在 Amazon Elastic Kubernetes Service(Amazon EKS)上设置 Kubernetes Metrics Server 和 Horizontal Pod Autoscaler(HPA)。

解决方法

设置您的环境

  1. 创建 Amazon Elastic Compute Cloud(Amazon EC2)实例
  2. 在您的 EC2 实例上安装 kubectl
  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 的值,则不会定义容器组的 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 网站上)

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