八、K8S之HPA自动扩缩容

HPA

一、概念

HPA(Horizontal Pod Autoscaler,水平 Pod 自动伸缩)是 Kubernetes 中的一种特性,其作用是根据资源使用情况自动调整 Pod 的副本数,以实现应用程序的自动扩展和收缩。

HPA 可以根据 CPU 使用率或其他自定义指标来自动扩展或收缩 Pod。每隔30s(可以通过--horizontal-pod-autoscaler-sync-period修改)查询metrics的资源使用情况,Pod 的 CPU 使用率超过了 HPA 的目标值,那么 HPA 将创建更多的 Pod 来处理更多的工作负载。反之,如果 CPU 使用率降低,那么 HPA 将删除一些 Pod 以减少资源消耗。这使得集群可以根据负载需求动态扩展或收缩应用程序。

HPA 常用于处理负载波动的应用程序,例如 Web 服务器、API 服务等。通过设置合适的 HPA 目标值和最小/最大 Pod 数量,可以确保集群始终保持在正确的资源使用级别,从而避免资源浪费和服务中断。通常用于 Deployment,不适用于无法扩/缩容的对象,如 DaemonSet

在创建 HPA 时,您需要指定以下参数:

  • 目标资源:每个 Pod 根据 HPA 所监视的资源管理器对象进行计算。
  • 目标平均使用率:这是指将资源用量(如 CPU 或内存)与每个 Pod 的请求资源量相对比。HPA 根据此指标确定要在群集中启动的 Pod 的数量。
  • 最小 Pod 数量和最大 Pod 数量:根据当前的负载情况,HPA 将自动扩展或收缩 Pod 的数量,但是不能超出设置的最小和最大 Pod 数量。

通过 HPA 功能,Kubernetes 可以轻松地管理和调整应用程序的资源使用,提高了应用程序的可用性和容错性,在高负载时提供更好的响应能力,并减少了内存和 CPU 等资源的浪费。

二、使用

  • 创建
shell 复制代码
kubectl  autoscale deploy nginx-deploy --cpu-percent=20 --min=2 --max=5
  • 获取 HPA 信息
shell 复制代码
kubectl get hpa 

三、测试脚本

shell 复制代码
while true; do wget -q -O- http://192.168.31.100:30906 > /dev/null ; done
相关推荐
春人.1 小时前
PortainerCE 跨云管理:cpolar 内网穿透服务实现多环境统一控制
云原生·eureka
tb_first3 小时前
k8sday11服务发现(2/2)
docker·云原生·容器·kubernetes·k8s
zxcxylong4 小时前
almalinux9.6系统:k8s可选组件安装(1)
云原生·容器·kubernetes·metrics·almalinux·hpa·vpa
君不见,青丝成雪6 小时前
大数据云原生是什么
大数据·云原生
一个天蝎座 白勺 程序猿9 小时前
Apache IoTDB(4):深度解析时序数据库 IoTDB 在Kubernetes 集群中的部署与实践指南
数据库·深度学习·kubernetes·apache·时序数据库·iotdb
熊出没10 小时前
微服务如何集成swagger3
微服务·云原生·架构
xiao-xiang11 小时前
redis-集成prometheus监控(k8s)
数据库·redis·kubernetes·k8s·grafana·prometheus
MANONGMN17 小时前
Kubernetes(K8s)常用命令全解析:从基础到进阶
云原生·容器·kubernetes
Johny_Zhao18 小时前
基于 Docker 的 LLaMA-Factory 全流程部署指南
linux·网络·网络安全·信息安全·kubernetes·云计算·containerd·yum源·系统运维·llama-factory
wdxylb20 小时前
云原生俱乐部-RH134知识点总结(1)
linux·云原生