kubernetes 弹性伸缩布局

有三种弹性伸缩:

(1) CA(Cluster Autoscaler): Node级别自动扩/缩容cluster-autoscaler组件。
(2) HPA(Horizontal Pod Autoscaler): Pod个数自动扩/缩容,自动增加Pod副本数量
(3) VPA(Vertical Pod Autoscaler): Pod配置自动扩/缩容,主要是CPU、内存。addon-resizer组件

为什么要自动扩缩容?
在实际的业务场景中,我们经常会遇到某个服务需要扩容的场景(例如:测试对服务压测、电商平台秒杀、大促活动、或由于资源紧张、工作负载降低等都需要对服务实例数进行扩缩容操作)。

我们一般会使用 Deployment 中的 replicas 参数,设置多个副本集来保证服务的高可用,但是这是一个固定的值,比如我们设置 10 个副本,就会启 10 个 pod 同时 running 来提供服务。如果这个服务平时流量很少的时候,也是 10 个 pod 同时在 running,而流量突然暴增时,又可能出现 10 个 pod 不够用的情况。

HPA冷却周期
在弹性伸缩中,冷却周期是不能逃避的一个话题, 由于评估的度量标准是动态特性,副本的数量可能会不断波动。有时被称为颠簸, 所以在每次做出扩容缩容后,冷却时间是多少。在 HPA 中,默认的扩容冷却周期是 3 分钟,缩容冷却周期是 5 分钟。
可以通过调整 kube-controller-manager 组件启动参数设置冷却时间。
–horizontal-pod-autoscaler-downscale-delay // 扩容冷却
–horizontal-pod-autoscaler-upscale-delay // 缩容冷却


apiVersion: autoscaling/v1       #只支持CPU一个指标的弹性伸缩。
kind: HorizontalPodAutoscaler
metadata:name: horse-oss      #表示 deploy 服务名称namespace: yanxuan
spec:maxReplicas: 10        #最多 10 个 podminReplicas: 1         #最少一个 podscaleTargetRef:apiVersion: apps/v1kind: Deploymentname: horse-osstargetCPUUtilizationPercentage: 80   #当整体的资源利用率超过80%的时候,会进行扩容。

或者

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:name: horse-oss
spec:# 指定缩放的对象是horse-oss DeploymentscaleTargetRef:apiVersion: apps/v1kind: Deploymentname: horse-ossminReplicas: 1maxReplicas: 10metrics:# 每个 Pod 的 CPU 利用率在 50% 以内- type: Resourceresource:name: cputarget:type: UtilizationaverageUtilization: 50# 每个 Pod 的内存利用率在 60% 以内- type: Resourceresource:name: memorytarget:type: UtilizationaverageUtilization: 60# 每个 Pod 每秒能够服务 1000 个数据包请求- type: Podspods:metric:name: packets-per-secondtarget:type: AverageValueaverageValue: 1k# Ingress 后的 Pod 每秒能够服务的请求总数达到 10000 个        - type: Objectobject:metric:name: requests-per-seconddescribedObject:apiVersion: networking.k8s.io/v1beta1kind: Ingressname: main-routetarget:type: Valuevalue: 10k
或者
kubectl autoscale deployment horse-oss -n yanxuan \
--min=1 --max=10 --cpu-percent=80 --dry-run=client \
-o yaml > hpa.yamlkubectl autoscale deployment horse-oss --cpu-percent=50 --min=1 --max=10
#上面命令解释说明--cpu-percent=50(表示 cpu 使用率不超过 50%)
-min=1(最少一个 pod)
--max=10(最多 10 个 pod)
[root@node1 ~]# kubectl  get hpa -n yanxuan
NAME        REFERENCE              TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
horse-oss   Deployment/horse-oss   13%/80%   1         10        1          170m

k8s pod容器自动伸缩相关推荐

  1. 实战:HPA(Pod 水平自动伸缩)-2021.11.23

    目录 文章目录 目录 @[toc] 实验环境 实验软件 1.基础知识 1.HPA 控制器 2.Metrics Server a.聚合 API 3.什么是`vpa` 2.实战演示 :cupid:**实战 ...

  2. Kubernetes Pod 水平自动伸缩(HPA)

    Pod 自动扩缩容 之前提到过通过手工执行kubectl scale命令和在Dashboard上操作可以实现Pod的扩缩容,但是这样毕竟需要每次去手工操作一次,而且指不定什么时候业务请求量就很大了,所 ...

  3. k8s之HPA(Pod水平自动伸缩)

    Horizontal Pod Autoscaler官方文档:Pod 水平自动扩缩 | Kubernetes Pod 水平自动扩缩(Horizontal Pod Autoscaler) 可以基于 CPU ...

  4. java基于keda事件驱动的k8s 容器自动伸缩

    背景 当java程序在处理某一特定的任务时,大多是在同一jvm中,也就是在同一容器内,所以无可避免的会暂用一定的系统资源,造成原有业务上的系统卡顿.甚至是直接造成系统宕机,如果是直接在系统启动时增加系 ...

  5. k8s之Horizontal Pod Autoscaler(Pod水平自动伸缩)

    官方文档:Pod 水平自动扩缩 | Kuberneteshttps://kubernetes.io/zh/docs/tasks/run-application/horizontal-pod-autos ...

  6. k8s Pod的自动水平伸缩(HPA)

    HPA(Horizontal Pod Autoscaler ) pod的自动水平伸缩 有了HPA,我们就不用为上面的问题而烦恼,HPA会帮我们自动完成pod的扩缩容. 当资源需求过高时,会自动创建出p ...

  7. K8S水平伸缩器 - 自动伸缩微服务实例数量

    作者:justmine 头条号:大数据达摩院 微信公众号:大数据处理系统 创作不易,在满足创作共用版权协议的基础上可以转载,但请以超链接形式注明出处. 为了方便大家阅读,可以关注头条号或微信公众号,后 ...

  8. K8s --HPA容器水平伸缩

    目录 一.什么是HPA 1.HPA伸缩过程 2.HPA进行伸缩算法 二.HPA实例 创建HPA 1.压力测试 2.同时监控cpu和memory 一.什么是HPA HPA的全称为(Horizontal ...

  9. Kubernetes Pod垂直自动伸缩(VPA)

    VPA 简介 VPA 全称 Vertical Pod Autoscaler,即垂直 Pod 自动扩缩容,它根据容器资源使用率自动设置 CPU 和 内存 的requests,从而允许在节点上进行适当的调 ...

最新文章

  1. 去掉excel保存文件时自动生成备份
  2. 正则表达式--密码复杂度验证--必须包含大写、小写、数字、特殊字符中的至少三项
  3. 从零开始学视觉Transformer (9):自监督ViT算法:BeiT和MAE
  4. ticketvalidationexception票根不符合目标服务_如何在有效降低企业仓储成本的同时不降低企业的总体服务质量目标水平?...
  5. 新编计算机应用基础项目教程电子书,计算机应用基础新编教程-殷锋社.pdf
  6. jsp前端验证(非常好用)
  7. 超给力,抛弃手动维护,一键生成数据库文档、支持多种格式!
  8. 对话框应用程序的DoModal()源代码
  9. 为PyCharm添加不同解释器
  10. 倍福plc的型号_常用PLC型号大全及简介,选型必备技能!
  11. 算法设计与分析练习题答案
  12. 群晖DS218+部署kafka
  13. 达叔机器学习笔记1_逻辑回归建立一般流程
  14. Python基础之面向对象基础
  15. 【Vue】使用vue框架制作一个简单的网页
  16. 用Javascript实现关闭广告案例
  17. 从零搭建符合自己需求的开发环境
  18. #10049. 「一本通 2.3 例 1」Phone List(trie树应用)
  19. 浙大计算机复试上机成绩,浙大计算机研究生复试上机考试-2006年
  20. matplotlib之pyplot模块plot函数基础二(线条外观:格式字符串fmt)

热门文章

  1. unity Build-in 光源和光照模型
  2. RHEL 6 安全加固与基础优化之三--V1.0-Mr.pan @树袋飘零
  3. ROS2学习笔记(八)-- ROS2参数应用实现道路识别调试
  4. 公式编写及各种K形态的描述
  5. oppoa9处理器怎么样_oppoa92s处理器相当于骁龙什么型号-oppoa92s处理器评测
  6. 常用js(javascript)函数(转)
  7. 辞掉工作追寻创业梦想如何毁了我的生活
  8. 揭开SAP Solution Manager神秘面纱
  9. java pdf水印排布问题_java实现图片和pdf添加铺满文字水印
  10. 百度EasyDL 物体检测模型实践(转)