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

k8s之HPA

目录

1.HPA

2.部署 metrics-server

3.部署 HPA

4.总结


1.HPA

HPA(Horizontal Pod Autoscaling)Pod 水平自动伸缩,Kubernetes 有一个 HPA 的资源,HPA 可以根据 CPU 利用率自动伸缩一个 Replication Controller、 Deployment 或者Replica Set 中的 Pod 数量。

(1)HPA 基于 Master 上的 kube-controller-manager 服务启动参数 --horizontal-pod-autoscaler-sync-period 定义的时长(默认为15秒),周期性的检测 Pod 的 CPU 使用率。

(2)HPA 与之前的 RC、Deployment 一样,也属于一种 Kubernetes 资源对象。通过追踪分析 RC 控制的所有目标 Pod 的负载变化情况, 来确定是否需要针对性地调整目标Pod的副本数,这是HPA的实现原理。

(3)metrics-server:集群插件组件,用于收集和聚合从每 kubelet 中提取的资源指标。API Server 提供 Metrics API 以供 HPA、VPA和 kubectl top 命令使用。Metrics Server 是 Metrics API 的参考实现。

2.部署 metrics-server

上传components.yaml文件
kubectl apply -f components.yaml
kubectl top node

3.部署 HPA

//创建用于测试的 Pod 资源,并设置请求资源为 cpu=200m
vim hpa-pod.yaml
apiVersion: apps/v1
kind: Deployment
metadata:labels:run: php-apachename: php-apache
spec:replicas: 1selector:matchLabels:run: php-apachetemplate:metadata:labels:run: php-apachespec:containers:- image: mirrorgooglecontainers/hpa-examplename: php-apacheimagePullPolicy: IfNotPresentports:- containerPort: 80resources:requests:cpu: 200mlimits:cpu: 500m
---
apiVersion: v1
kind: Service
metadata:name: php-apache
spec:ports:- port: 80protocol: TCPtargetPort: 80selector:run: php-apachekubectl apply -f hpa-pod.yamlkubectl get pods

//使用 kubectl autoscale 命令创建 HPA 控制器,设置 cpu 负载阈值为请求资源的 50%,指定最少负载节点数量为 1 个,最大负载节点数量为 10 个
kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10

4.总结

HPA的工作原理:利用metrics-server组件定期的(默认为15秒)收集Pod资源的CPU或内存平均负载情况,根据HPA资源配置的CPU或内存的requests资源量阈值百分比来动态调整Pod的副本数量。
HPA扩容时,Pod副本数量上升会比较快;缩容时,Pod副本数量下降会比较慢(默认冷却时间为5m)


http://www.mrgr.cn/news/1816.html

相关文章:

  • catvod、TVBox源的格式解析及合并多个源的内容(Python脚本)
  • 【springboot】自定义starter
  • 在 Vue.js 中使用 Ant Design 实现表格开关功能:详细教程
  • 深度学习------------------卷积神经网络(LeNet)
  • 单例模式下的自动内存释放和模板
  • 国际校企合作|深信服、常州信息职业技术学院、马来西亚汽车工业大学三方国际化人才培养合作签约仪式圆满成功
  • 后端开发刷题 | 寻找峰值【二分法】
  • 第N7周:调用Gensim库训练Word2Vec模型
  • 08结构型设计模式——适配器模式
  • 证书|“机器学习工程师”来了,由工业和信息化部教育与考试中心颁发,含金量高
  • 1.微服务发展阶段
  • 【Android】Android AOP 编程框架
  • ActiveMQ、RabbitMQ、Kafka、RocketMQ在优先级队列、延迟队列、死信队列、重试队列、消费模式、广播模式的区别
  • CentOS主机名修改
  • 【区块链+金融服务】供应链金融平台 | FISCO BCOS应用案例
  • 动态规划-下降路径最小和
  • Chromium编译指南2024 - Android篇:从Linux版切换到Android版(六)
  • Vite 与 Vue:分开的发展路径
  • [000-01-030].Zookeeper学习大纲
  • 自定义组件上传到maven中央仓库2024实测可用最详细版