原文网址:K8S--水平自动扩缩容实战演练-CSDN博客
简介
本文用实例来展示K8S的自动扩缩容(水平方向)。
官网网址
HorizontalPodAutoscaler 演练 | Kubernetes
为 Pod 和容器管理资源 | Kubernetes
水平扩缩的原理
水平扩缩容:自动增加或减少Pod的数量以满足需求。
水平扩缩使用的是orizontalPodAutoscaler(简称 HPA ),可以自动更新工作负载资源(例如 Deployment 或者 StatefulSet), 以自动扩缩工作负载来满足需求。
- 如果负载增加,并且 Pod 的数量低于配置的最小值, HPA 会指示工作负载资源(Deployment、StatefulSet 或其他类似资源)增加Pod。
- 如果负载减少,并且 Pod 的数量高于配置的最小值, HPA 会指示工作负载资源(Deployment、StatefulSet 或其他类似资源)减少Pod。
水平与垂直有什么区别?
水平扩缩:增加或减少Pod的数量
垂直扩缩:Pod数量不变,给已有的Pod增加或者减少资源(例如:内存或 CPU)。
实战演练
本文部署nginx应用,用HPA控制nginx的Pod数量:最少1个,最多10个。然后频繁请求nginx,观察它是否动态扩容。然后停止请求,看它是否动态缩容。
所需的文件如下:
结果展示
1.频繁请求ningx
观察负载
kubectl get hpa hpa-nginx --watch
频繁请求(此命令要新起一个SSH窗口再运行)
kubectl run -i --tty load-generator --rm --image=busybox:1.28 --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://nginx-service:8000; done"
此时可以看到很多请求nginx的打印:
观察负载
如下图所示,结果每几十秒刷新一次。TARGETS列是负载,REPLICAS列是副本数。
请求开始后,CPU占用增加;CPU占用超过1%后,副本数增加;随着副本增加,CPU占用减小;CPU占用减小到1%后,副本数不再变化。
2.停止请求nginx
停止请求(按下ctrl+c),然后看观察负载页面(红框内是停止请求后的打印)。
可以看到:CPU占用立刻降到了0;然后过了大概五分钟,副本的数量逐渐恢复到了1。
1.部署nginx
上边是文章的部分内容,为便于维护,全文已转移到此网址:K8S-水平自动扩缩容实战演练 - 自学精灵