来自chatGPT
Kubernetes中的HPA(Horizontal Pod Autoscaler)可以根据当前负载情况自动扩展Pod数量。在HPA配置中,有一个可选字段behavior,它可以用于指定HPA策略的特定行为。behavior字段包括以下两个子字段:

scaleDown:用于指定缩容行为的参数。如果在一段时间内,HPA检测到当前Pod剩余的CPU或内存利用率低于下面两个条件之一,那么就会自动缩容:
utilizationThreshold:当所有Pod所需的CPU或内存利用率低于这个阈值时,进行缩容。
stabilizationWindowSeconds:当在指定的时间窗口内(默认为300秒)进行缩容时,如果在一次调整之前,Pod的利用率在一定范围内保持稳定(默认为5),那么就不会进行缩容。
scaleUp:用于指定扩容行为的参数。如果在一段时间内,HPA检测到当前Pod剩余的CPU或内存利用率高于utilizationThreshold设置的阈值,那么就会自动扩容。
behavior字段可根据实际需要进行配置,以控制HPA策略的行为方式。

例如,以下是一个HPA配置示例,其中指定了缩容行为的behavior参数:

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:name: my-app
spec:scaleTargetRef:apiVersion: apps/v1kind: Deploymentname: my-deploymentminReplicas: 2maxReplicas: 10metrics:- type: Resourceresource:name: cputarget:type: UtilizationaverageUtilization: 50behavior:scaleDown:stabilizationWindowSeconds: 300policies:- type: Podsvalue: 4periodSeconds: 60scaleUp:policies:- type: Podsvalue: 4periodSeconds: 60

periodSeconds 表示在过去的多长时间内要求策略值为真。 第一个策略(Pods)允许在一分钟内最多缩容 4 个副本。第二个策略(Percent) 允许在一分钟内最多缩容当前副本个数的百分之十。假如缩容前的pod数量是80个,目标要缩减到10个,那么,由于默认情况下会选择容许更大程度作出变更的策略, 那么在第一步中将减少 8 个副本。 在下一轮迭代中,当副本的数量为 72 时,10% 的 Pod 数为 7.2,但是这个数字向上取整为 8。 在 autoscaler 控制器的每个循环中,将根据当前副本的数量重新计算要更改的 Pod 数量。 当副本数量低于 40 时,应用第一个策略(Pods),一次减少 4 个副本。

在这个HPA示例中,有以下属性:

apiVersion:定义使用的Kubernetes API版本。
kind:定义资源的类型,此处定义为HorizontalPodAutoscaler。
metadata:定义资源的元数据,如名称、命名空间、标签等。
spec.scaleTargetRef:定义要自动扩展Pod的目标资源,例如Deployment或StatefulSet。
spec.minReplicas:定义Pod的最小数量,这是Auto Scaling不能缩小的数量。
spec.maxReplicas:定义Pod的最大数量,这是Auto Scaling不能扩展的数量。
spec.metrics:定义用于自动扩展的度量指标,此处使用CPU利用率作为度量指标。
spec.behavior:定义HPA的缩放行为。
scaleDown.stabilizationWindowSeconds:当检测到可以缩小Pod数量时,等待调整之前Pod的利用率保持稳定的时间。
scaleDown.policies:指定要执行的缩小Pod数量的策略。这在HPA检测到CPU利用率低于目标利用率时启动。
type:指定策略的类型。在此处, type被设置为Pods,意味着对Pod级别执行策略。另一种类型是Percent,在默认情况下是对所有Pod的均值执行策略。
value:指定要移除的Pod数量。
periodSeconds:指定在每个执行策略之间等待多长时间。
scaleUp.policies:指定要执行的扩展Pod数量的策略。这在HPA检测到CPU利用率高于目标利用率时启动。
type、value和periodSeconds均与scaleDown.policies相同。

这个HPA示例定义了一个名为my-app的HPA,并指定了如果CPU利用率低于50%时,将调整Pod数量,以便缩小4个Pod。它还指定了等待5分钟,以便在调整之前Pod的利用率保持稳定。如果CPU利用率高于50%,则该HPA将在30秒内增加2个Pod。也就是说,如果CPU利用率超过50%,HPA会自动为该Deployment或StatefulSet提供更多的Pod,以满足更高的流量需求。

kubernets HPA相关推荐

  1. Kubernetes基于Metrics Server的HPA

    Kubernetes基于Metrics Server的HPA [TOC] 1. 环境说明和相关介绍 我的kubernetes环境: kubeadm安装的kubernetes1.11 Horizonta ...

  2. 十问 | 关于Service Mesh 和Kubernets的最前沿思考

    小蚂蚁说: 在7月6日ArchSummit全球架构师峰会2018深圳站上,蚂蚁金服平台数据技术部的杨冰.Service Mesh布道师敖小剑.蚂蚁金服技术专家毛小云和来自阿里大文娱UC基础部的曾彬,四 ...

  3. Kubernetes 弹性伸缩全场景解析(三) - HPA 实践手册

    在上一篇文章中,给大家介绍和剖析了 HPA 的实现原理以及演进的思路与历程.本文我们将会为大家讲解如何使用 HPA 以及一些需要注意的细节. autoscaling/v1 实践 v1 的模板可能是大家 ...

  4. Kubernetes 弹性伸缩全场景解读(二)- HPA 的原理与演进

    前言 在上一篇文章 Kubernetes 弹性伸缩全场景解析 (一):概念延伸与组件布局中,我们介绍了在 Kubernetes 在处理弹性伸缩时的设计理念以及相关组件的布局,在今天这篇文章中,会为大家 ...

  5. 【网址收藏】k8s HPA自动伸缩异常:failed to get cpu utilization: missing request

    参考链接: Kubernetes:HPA 详解-基于 CPU.内存和自定义指标自动扩缩容

  6. K8S控制器类型:RC/RS、Deployment、DaemonSet、Job和CronJob、StatefulSet、HPA

    控制器类型 RC/RS 命令式编程就类似于面向过程 声明式编程就类似于面向对象 sql语句就是典型的声明式编程语言 Deployment Deployment是通过RS来创建和管理pod的 Daemo ...

  7. asp.net core程序在k8s中基于rabbitmq队列消息数的HPA实践!

    背景 最近一段时间,陆陆续续的把手里头项目都迁移到了k8s中,期间遇到很多的坑,并且也学到了许多k8s的知识(从0-1),大家都知道k8s中的一大特性是自动扩容,对此结合自己的业务发现很是有" ...

  8. php 生存分析,HPA数据库08.做生存分析

    生信论文的套路 ONCOMINE从全景.亚型两个维度做表达差异分析: 临床标本从蛋白水平确认(或HPA数据库),很重要: Kaplan-Meier Plotter从临床意义的角度阐明其重要性: cBi ...

  9. OpenShift 4 - 基于Memory的HPA

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.6环境中验证 安装并发压力工具 $ yum install httpd 部署测试应用和HPA $ o ...

最新文章

  1. 一行Python代码能实现这么多丧心病狂的功能?(代码可复制)
  2. Github标星3K+,超轻量级中文OCR,支持竖排文字识别、ncnn推理,总模型仅17M
  3. HTML标签大全(三)
  4. html 导航右侧弹出层,CSS导航栏及弹窗示例代码
  5. 编程软件python中的if用法-python 函数式编程工具
  6. bzoj2560串珠子 状压dp+容斥(?)
  7. 动态规划之——又见拦截导弹(nyoj814)
  8. 文献记录(part54)--软件缺陷预测中基于聚类分析的特征选择方法
  9. leetcode125验证回文串
  10. VM安装ubuntu18.04完成时不能上网,显示cable unplugged
  11. 分享qq空间出现失败
  12. 计算机显卡更新,电脑显卡怎么升级,电脑显卡升级方法图解
  13. make编译源码时报error: ‘for’ loop initial declarations are only allowed in C99 mode的解决办法
  14. Java实现分割矩形
  15. finecms aip.php漏洞,代码审计| FineCMS的GetShell姿势
  16. python lncrna_使用CNCI分析lncRNA
  17. latex显示错误:Text line contains an invalid character. l.1
  18. 草图vr3.6许可证服务器安装失败,VRay3.6无法获得许可-200
  19. transPlotR 优雅的绘制基因转录本结构
  20. 漂亮图表html,这9个精美的HTML5图表应用,让你的网页专业精确

热门文章

  1. 批量定制柔性生产的数字化、智能化、网络化制造发展
  2. 题解 | 《算法竞赛进阶指南》 蒙德里安的梦想
  3. 秋日与夏诀别-卢焱恒\陈思遇
  4. 对尼姆达蠕虫的详细分析 (转)
  5. 超多制作模板的姓氏头像生成器微信小程序源码
  6. 汽车模具设计制造整个流程,目前你的在那个阶段呢?
  7. 平分布局 html,实现CSS平分布局的4种方式
  8. Linux下u盘拔出后操作u盘可能会出现的异常
  9. 2018计算机专业高考人数,2018年全国31省市高考人数及各省历年高考人数分析【图】...
  10. nginx反向代理Https、代理解决跨域问题