k8s水平扩缩容
这篇文章的内容其实是很早以前就会一个k8s 资源,但是最近又用到了,就做个笔记。
关于水平扩容和缩容不在这里做解释,有兴趣看这篇文章的人应该都已经知道了。
最好的教程其实还是官网,这里放上相关的链接:
- 比较高视角介绍水平扩缩(HPA)
如果想比较全面的了解HPA可以看看这篇文章
https://kubernetes.io/zh/docs/tasks/run-application/horizontal-pod-autoscale/ - 实操样例
有yaml样例文件可以直接拿来修改后使用
https://kubernetes.io/zh/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/
HPA配置方法
在k8s中配置HPA有两种方式:
- 通过命令行的方式直接创建,如下,
1
kubectl autoscale deployment <deployment-name> --cpu-percent=75 --min=l --max=5
- 通过yaml配置文件
把详细的配置写在yaml文件中,通过kubectl apply来创建hpa。
比较推荐第二种方法,尤其是在生产环境中。如果使用第一种方法,过了一段时间之后可能就不知道曾经创建过这么个东西,或者及时记不清具体的细节了;第二种方法可以把yaml文件通过git存储,并且通过一些方法(比如:PR触发CICD)来始终保持repo中的yaml文件和生产环境保持一致。
HPA配置说明
1 | apiVersion: autoscaling/v2beta2 |
配置HPA的依赖
在上面的配置文件中可以看到我设置的两个指标是Pods CPU和Memory的利用率,也就意味着k8s要提供个接口来采集这些信息, 也就是metric api, 不过这个是不是k8s默认部署的,需要自己部署,具体的部署过程,参见官网的介绍。