当前位置: 首页 > news >正文

K8S HPA自动扩缩容实战指南

文章目录

      • 前言
      • 1、简介
      • 2、工作原理
      • 3、HPA版本变革
      • 4、监控指标类型
      • 4、HPA配置资源清单
        • 4.1 基于CPU负载实现自动扩缩容
        • `NAME`:这是 HPA 对象的名称
        • `REFERENCE`:HPA 监控和自动扩展的目标对象。
        • `TARGETS`:当前和目标的资源使用情况
        • `MINPODS`:HPA 配置的最小 Pod 副本数量。
        • `MAXPODS`:HPA 配置的最大 Pod 副本数量
        • `REPLICAS`:当前运行的 Pod 副本数量。
        • `AGE`:HPA 对象的年龄

前言

  • VPA(Vertical Pod Autoscaler):垂直扩展(Vertical Scaling),根据负载调整单个 Pod 的资源请求和限制,如 CPU 和内存。
  • HPA (Horizontal Pod Autoscaler):水平扩展(Horizontal Scaling),根据负载增加或减少 Pod 的副本数量。

1、简介

​ Horizontal Pod Autoscaler (HPA) 是 Kubernetes 中的一项功能,它能够根据 CPU 使用率或其他应用程序指标自动扩展或缩减应用程序的副本数量。HPA 有助于确保应用程序在负载增加时能够自动扩展以处理更多请求,在负载减少时则自动缩减以节省资源。

2、工作原理

  1. Kubernetes中的某个Metrics Server持续采集所有Pod副本的指标数据。

  2. HPA控制器通过Metrics Server的API获取这些数据,基于用户定义的扩缩容规则进行计算,得到目标Pod的副本数量。

  3. 当目标Pod副本数量与当前副本数量不同时,HPA控制器就向Pod的副本控制器 (Deployment、RC或ReplicaSet)发起scale操作,调整Pod的副本数量, 完成扩缩容操作。

3、HPA版本变革

[root@k8s-master01 ~]# kubectl get apiservices | grep -i auto

  • autoscaling/v1版本:仅支持基于CPU使用率指标的自动扩缩容。
  • autoscaling/v2版本:支持基于内存使用率指标、自定义指标及外部指标的自动扩缩容,并且进一步扩展以支持多指标缩放能力,当定义了多个指标时,HPA会跟据每个指标进行计算,其中缩放幅度最大的指标会被采纳。

4、监控指标类型

​ kube-Master节点的kube-controller-manager服务持续监测目标Pod的某种性能指标,以计算是否需要调整副本数量。目前Kubernetes支持的指标类型如下:

  • Pod资源使用率:Pod级别的性能指标,通常是一个比率值,例如CPU使用率。
  • Pod自定义指标:Pod级别的性能指标,通常是一个数值,例如接收的请求数量。
  • Object自定义指标或外部自定义指标:通常是一个数值,需要容器应用以某种方式提供,例如通过HTTP URL“/metrics”提供,或者使用外部服务提供的指标采集URL。

4、HPA配置资源清单

4.1 基于CPU负载实现自动扩缩容

deploy资源清单准备

[root@k8s-master01 ~]# vim nginx-deploy.yaml---apiVersion:apps/v1kind:Deploymentmetadata:labels:app:nginxname:nginxspec:replicas:1selector:matchLabels:app:nginxtemplate:metadata:labels:app:nginxspec:containers:-image:nginximagePullPolicy:IfNotPresentname:nginxresources:# 资源请求配置requests:cpu:10m# cpu资源请求书,1颗cpu=1000m#>>> 创建资源[root@k8s-master01 ~]# kubectl create -f nginx-deploy.yamldeployment.apps/nginx created#>>> 查看资源[root@k8s-master01 ~]# kubectl get po -owideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-6dc8dbb669-nf5lm 1/1 Running 0 54s 172.16.195.23 k8s-master03 <none><none>

service资源清单编写

#>>> 查看生成的资源清单[root@k8s-master01 ~]# vim nginx-service.yaml---apiVersion:v1kind:Servicemetadata:labels:app:nginxname:nginxspec:ports:-port:80protocol:TCPtargetPort:80selector:app:nginx#>>> 创建serice资源[root@k8s-master01 ~]# kubectl create -f nginx-service.yamlservice/nginx created#>>> 查看资源[root@k8s-master01 ~]# kubectl get svc -owideNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR kubernetes ClusterIP 10.96.0.1 <none>443/TCP 4d10h <none>nginx ClusterIP 10.96.11.64 <none>80/TCP 23s app=nginx#>>> 测试连通性[root@k8s-master01 ~]# curl 10.96.11.64<!DOCTYPEhtml><html><head><title>Welcome to nginx!</title><style>html{color-scheme:light dark;}body{width:35em; margin:0 auto;font-family:Tahoma,Verdana,Arial,sans-serif;}</style></head><body><h1>Welcome to nginx!</h1><p>If you see this page,the nginx web server is successfully installed and working. Further configuration is required.</p><p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/>Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p></body></html>#>>> 查看Pod的指标(如果指标不能查看,则需要安装metrics)[root@k8s-master01 ~]# kubectl top poNAME CPU(cores) MEMORY(bytes) nginx-6dc8dbb669-nf5lm 0m 5Mi 安装metrics 1、下载开启指标的yaml配置文件 wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml-O metrics-server-components.yaml 2、修改镜像地址为国内的地址 sed-i 's/registry.k8s.io\/metrics-server/registry.cn-hangzhou.aliyuncs.com\/google_containers/g' metrics-server-components.yaml 3、修改metrics-server-components.yaml配置 修改容器的ts配置,不验证ts,在containers的args参数中增加--kubelet-insecure-tls 参数(如下图) 4、加载资源清单 kubectl apply-f metrics-server-components.yaml

HPA资源清单编写

vimnginx-hpa.yaml --- apiVersion: autoscaling/v1#API版本kind: HorizontalPodAutoscaler# 对象的类型metadata:# 元数据name: nginx# HPA对象的名称spec:# 定义了HPA的规格maxReplicas:10# 定义了Pod副本数量的最大值,即在负载增加时,最多可以扩展到10 个Pod。minReplicas:1# 定义了Pod副本数量的最小值,即在负载减少时,最少保留1个Pod。scaleTargetRef:# 指定HPA作用的目标对象。apiVersion: apps/v1# 目标对象的API版本。kind: Deployment# 目标对象的类型name: nginx# 目标Deployment的名称targetCPUUtilizationPercentage:10# 目标CPU使用率,当CPU使用率超过10% 时,HPA会增加Pod副本数量;当CPU使用率低于10%时,HPA会减少Pod副本数量。#>>> 创建资源[root@k8s-master01 ~]# kubectl create -f nginx-hpa.yamlhorizontalpodautoscaler.autoscaling/nginx created#>>> 查看资源[root@k8s-master01 ~]# kubectl get hpa

字段解释:

NAME:这是 HPA 对象的名称
REFERENCE:HPA 监控和自动扩展的目标对象。
TARGETS:当前和目标的资源使用情况
MINPODS:HPA 配置的最小 Pod 副本数量。
MAXPODS:HPA 配置的最大 Pod 副本数量
REPLICAS:当前运行的 Pod 副本数量。
AGE:HPA 对象的年龄

测试压测

[root@k8s-master01 ~]# while true; do curl http://10.96.39.85 > /dev/null; done[root@k8s-master01 ~]# kubectl get hpa[root@k8s-master01 ~]# kubectl top po[root@k8s-master01 ~]# kubectl get po

注意事项:
[root@k8s-master01 ~]# while true; do curl http://10.96.39.85 > /dev/null; done

[root@k8s-master01 ~]# kubectl get hpa

[root@k8s-master01 ~]# kubectl top po

[root@k8s-master01 ~]# kubectl get po

> 注意事项: > 使用HPA CPU自动扩充是时,尽量用于前端应用,后端再扩容时,尽量使用自定义指标。后端应用会有多方面原因引起负载过高。
http://www.jsqmd.com/news/479784/

相关文章:

  • 2026智能安全帽优质产品推荐榜:交警执法记录仪/人员定位安全帽/巡检智能头盔/工作记录仪/工地智能安全帽/应急智能安全帽/选择指南 - 优质品牌商家
  • 前后端分离Spring Boot大学校园生活信息平台系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程
  • Java Web Spring Boot律师事务所案件管理系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】
  • 前后端分离影院购票系统系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程
  • 2026西南会展服务优质服务商推荐榜售后管控有保障:展览工厂联系方式、展览服务公司、展览美陈制作、巡展活动、快闪活动选择指南 - 优质品牌商家
  • 2026年排污许可证办理优质机构推荐:排水许可证申请流程、污水排水许可证办理、疑难排污证审批、能加急办排水排污许可证选择指南 - 优质品牌商家
  • 2026年知名的安平建筑网片品牌推荐:安平建筑网片实力厂家推荐 - 品牌宣传支持者
  • Paper Reading: NCART: Neural Classification and Regression Tree for tabular data
  • 2026年吉林地铺石生产厂家口碑与实力综合盘点 - 2026年企业推荐榜
  • 2026年吉林白麻订购厂家专业度盘点:6家口碑之选 - 2026年企业推荐榜
  • 2026年Q1南阳招标代理公司电话与选型深度评测 - 2026年企业推荐榜
  • 工地活动板房与苹果舱优质厂家权威推荐:工地板房、工地活动板房、彩钢活动房、打包箱房、打包箱活动房、拓展箱房、模块化集成房屋选择指南 - 优质品牌商家
  • 2026年温州西服供货厂家如何选?这份实力榜单供参考 - 2026年企业推荐榜
  • 2026年靠谱的建筑网片厂家推荐:安平建筑网片优质供应商推荐 - 品牌宣传支持者
  • 2026紫外杀菌灯管优质推荐榜:浸没式杀菌器/消毒杀菌器/空气净化杀菌器/管道杀菌器/紫外线光解灯/紫外线杀菌器/选择指南 - 优质品牌商家
  • 2026上海遗产律师优质推荐榜:上海离婚财产分割律师、上海离婚隐匿财产律师、上海继承律师、上海继承案件律师、上海继承纠纷律师选择指南 - 优质品牌商家
  • Vulkan Cooperative Matrix 简明教程
  • Windows 上彻底卸载 Node.js
  • Redis搭建分片集群
  • 2026河南牛奶代理品牌选择指南:数据、趋势与核心品牌解析 - 2026年企业推荐榜
  • Redis分片集群散列插槽
  • 2026年衬衫现货厂家口碑评测:谁在领跑职业装供应市场? - 2026年企业推荐榜
  • 2026制造企业爱采购开户优质服务商推荐指南:GEO是什么/GEO运营/爱采购全店托管/爱采购哪家好/爱采购效果/选择指南 - 优质品牌商家
  • 2026泡沫混凝土发泡设备品牌推荐指南:泡沫混凝土设备机器、泡沫轻质混凝土设备、混凝土发泡机设备、现浇泡沫混凝土选择指南 - 优质品牌商家
  • 2026年热门的焊接钢筋网片厂家推荐:电焊钢筋网片实力品牌厂家推荐 - 品牌宣传支持者
  • 2026年吉林界石直销厂商综合实力与选购指南 - 2026年企业推荐榜
  • 2026广州搬家服务优质推荐榜专业透明靠谱:广州蚂蚁搬屋、广州公司搬迁、广州别墅搬家、广州天河搬家、广州家庭搬家选择指南 - 优质品牌商家
  • 2026热收缩膜包装机优质厂家推荐榜:包装机设备厂家/枕式热收缩包装机厂家/热封口包装机厂家/热收缩膜包装设备厂家/选择指南 - 优质品牌商家
  • 2026西南奢品贵金属回收优质机构推荐榜:贵金属金条金币回收电话、贵金属钯金回收电话、贵金属铂金回收电话、贵金属首饰回收电话选择指南 - 优质品牌商家
  • 2026会议音响套装优质品牌推荐选购指南:大礼堂音响/学校教室音响/平板无纸化会议/报告厅音响/无纸化会议终端/选择指南 - 优质品牌商家