Kubernetes K8S之通过helm部署metrics-server与 Horizontal Pod Autoscaling (HPA)详解
主机配置规划
服务器名称(hostname) | 系统版本 | 配置 | 内网IP | 外网IP(模拟) |
---|---|---|---|---|
k8s-master | CentOS7.7 | 2C/4G/20G | 172.16.1.110 | 10.0.0.110 |
k8s-node01 | CentOS7.7 | 2C/4G/20G | 172.16.1.111 | 10.0.0.111 |
k8s-node02 | CentOS7.7 | 2C/4G/20G | 172.16.1.112 | 10.0.0.112 |
使用Helm部署metrics-server
正常情况下,如果没有部署metrics-server那么我们使用如下命令是收集不到信息的
1 | kubectl top node |
首先完成「Kubernetes K8S之Helm部署、使用与示例」。
从Heapster的 GitHub地址:https://github.com/kubernetes-retired/heapster
中可以看到,heapster 已经 RETIRED【过时】。从Kubernetes 1.12开始将从Kubernetes各种安装脚本中移除。Kubernetes推荐使用metrics-server。我们这里使用Helm来部署metrics-server。
GitHub地址:
1 | https://github.com/kubernetes-sigs/metrics-server |
metrics-server-amd64镜像下载
1 | # 在集群所有节点都需要执行 |
metrics-server.yaml文件
1 | [root@k8s-master helm]# pwd |
通过helm部署metrics-server
1 | # 查询metrics-server的各个版本信息 |
查看helm和pod信息
1 | [root@k8s-master ~]# helm list |
现在使用下面的命令可以获取到关于集群Node节点和Pod的指标信息:
1 | [root@k8s-master ~]# kubectl top node |
Horizontal Pod Autoscaling(HPA)
Horizontal Pod Autoscaling(HPA) 可以根据CPU利用率自动伸缩一个Replication Controller、Deployment或者ReplicaSet中的Pod数量。
案例镜像下载
1 | # gcr.io/google_containers/hpa-example 在国外,这里我们下载国内镜像 |
启动pod
1 | kubectl run php-apache --image=registry.cn-beijing.aliyuncs.com/google_registry/hpa-example --requests=cpu=200m --expose --port=80 |
创建HPA控制器,相关算法参见如下地址:
1 | # 官方地址:https://v1-17.docs.kubernetes.io/zh/docs/tasks/run-application/horizontal-pod-autoscale/ |
此时查询相关信息
1 | [root@k8s-master ~]# kubectl get hpa |
增加负载
1 | # 启动一个pod并进入一个终端 |
如果需要多个终端访问,那么只需要修改tty终端名称【如:load-generator01】。进入后再次循环访问即可。
增加负载后【可能需要等会儿】,php-apache的pod数量达到了最大值10。此时的pod信息为:
1 | [root@k8s-master ~]# kubectl get hpa |
此时,如果我们停止负载访问压测,pod数量也不会立即降下来。而是过段时间后才会慢慢降下来。
这也是为了安全起见,防止由于网络原因或者间歇性流量突增、突降,导致pod回收太快后面流量上来后Pod数量不够。
相关阅读
完毕!