Azure Kubernetes 水平自动扩充Pod,azurewave technology incAzure Kubernetes 水平自动扩充Pod当我们将应用部署到AKS中以pod的形式对外提供服务时,为了确保用户可以获得良好的使用体验,我们需要关注如下两种情况:POD因为不明原有挂掉,导致服务不可用当出现大量......
当我们将应用部署到AKS中以pod的形式对外提供服务时,为了确保用户可以获得良好的使用体验,我们需要关注如下两种情况:
POD因为不明原有挂掉,导致服务不可用
当出现大量用户访问时,Pod在高负荷的情况下能否支撑我们的应用
对于Pod的高可用性我们可以使用AKS的deployment控制器来确保Pod可以持续对外提供服务,但是对于面临大量用户访问时,我们就需要扩展我们的资源来满足业务需求。前面的文章中给大家介绍了手动扩展pod来满足业务的扩展需求,但是相信大家都已经意识到了如果我们人工监控pods,人工进行调整副本那么这个工作量无疑是巨大的,但kubernetes已经有了相应的机制来应对了。这就是我们今天要为大家介绍的水平自动扩充POD(HPA)HPA全称Horizontal Pod Autoscaler控制器工作流程
HPA的工作流程如下:
创建HPA资源对象,关联对应资源例如Deployment,设定目标CPU使用率阈值,最大,最小replica数量。前提:pod一定要设置资源限制,参数request,HPA才会工作。
HPA控制器每隔15秒钟(可以通过设置controller manager的–horizontalpodautoscalersyncperiod参数设定,默认15s)通过观测metrics值获取资源使用信息
HPA控制器将获取资源使用信息与HPA设定值进行对比,计算出需要调整的副本数量
根据计算结果调整副本数量,使得单个POD的CPU使用率尽量逼近期望值,但不能照顾设定的最大,最小值。
以上2,3,4周期循环
说了这么多,下面我们来看下如何配置HPA:在配置HPA之前,我们需要先了解Node节点的配置情况检查与配置resource limit使用kubectl get nodes命令检查node信息(node名称)使用命令 kubectl describe nodes NODE_NAME 确认 Node 资源配置的状态, 因为我们之前没有配置Resource quata,因此我们需要先设定好 Resource 限制:打开我们之前创建的yaml文件,修改 Resources 配置, 其中 CPU 配置 Container 只使用 1 个 CPU 单元, Request 限制使用 0.5 个 CPU 单元:修改完成以后使用kubectl apply f FILE_NAME重新部署对应POD
设置水平自动扩充HPA使用命令 kubectl autoscale deployment nginxcpupercent=1 min=1 max=10 将自动扩充设定为 CPUpercent 设定为1%, 并且将 minimum replica 数设为 1, maximum replica 数设为 10.
配置完成以后我们使用webbench来对我们部署的NGINX网站进行压力测试:使用命令 kubectl get hpa 观察水平自动扩充状态, 请注意 Target 中有两个数字, 是 Current/Target CPU 使用率使用命令 kubectl get deployment 观察 deployment 数量有无增加使用命令 kubectl get pod 观察 pod 数量有无增加, 并且注意状态, 如果 1 表示水平自动扩充 (hpa) 已经成功设置且生效了
清除资源测试完成以后,我们可以使用kubect delete f FILE_NAME 来删除对应的deployment资源:使用kubectl delete hpa nginx来删除hpa资源:
特别声明:以上文章内容仅代表作者本人观点,不代表ESG跨境电商观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与ESG跨境电商联系。
二维码加载中...
使用微信扫一扫登录
使用账号密码登录
平台顾问
微信扫一扫
马上联系在线顾问
小程序
ESG跨境小程序
手机入驻更便捷
返回顶部