Kubernetes Horizo​​ntal Pod Autoscaler 中的 Pod 副本缩减是如何工作的?

2023-12-19

我的理解是,在 Kubernetes 中,使用 Horizo​​ntal Pod Autoscaler 时,如果targetCPUUtilizationPercentage字段设置为 50%,并且所有 Pod 副本的平均 CPU 利用率高于该值,HPA 将创建更多副本。一旦平均CPU在一段时间内下降到50%以下,就会降低副本数量。

这是我不确定的部分:
如果 Pod 上的 CPU 利用率是 10%,而不是 0%,会怎么样?HPA 是否仍会终止副本?
10% CPU 并不算多,但由于它不是 0%,因此该 pod 上当前正在运行某些任务。如果这是一项长期任务(几秒钟)并且 HPA 决定终止 pod,则该任务将不会完成。

HPA 是否仅在 Pod 的 CPU 利用率为 0% 时才终止 Pod,还是在发现该值低于 0% 时才终止 PodtargetCPUUtilizationPercentage?

HPA 如何决定删除哪些 Pod?
谢谢你!


所以你有两个问题,让我一一解答。第一部分 - 如果副本集中的某个 pod 消耗了 10%,那么 Kubernetes 会杀死该 pod 吗?答案是肯定的。 Kubernetes 关注的不是单个 Pod,而是该副本集中所有 Pod 的指标平均值。而且缩小规模也是渐进的正如这里所解释的 https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-cooldown-delay

问题的第二部分 - 当 pod 即将被杀死并且仍在处理某些请求时,您的应用程序如何优雅地运行?这可以通过以下方式处理Pod 终止的宽限期 https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination如果你实施的话就更好了a PreStop hook https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks- 这将允许您执行诸如停止接受传入请求但处理现有请求之类的操作。其实现将根据您使用的语言运行时而有所不同,因此我不会在这里详细介绍。

最后 - 您应该考虑的一种情况是,如果运行 pod 的 VM 突然停机,您将没有机会执行 PreStop 挂钩!我认为应用程序需要足够强大才能处理故障。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kubernetes Horizo​​ntal Pod Autoscaler 中的 Pod 副本缩减是如何工作的? 的相关文章

随机推荐

  • 在 Zend Framework 2 上使用表达式执行多重连接

    实际上我正在开发一个项目 我正在研究 Zend Framework 2 如何处理复杂的查询 特别是如何连接 n m 表以及如何使用 GROUP CONCAT 和其他函数 您知道执行此查询的最佳实践吗 SELECT o x group one
  • 将 Pandas Dataframe 写入_csv StringIO 而不是文件

    此代码的目标是将现有的 CSV 文件从指定的 S3 存储桶读取到 Dataframe 中 过滤 Dataframe 中所需的列 然后写入filtered使用 StringIO 将数据帧转换为 CSV 对象 我可以将其上传到不同的 S3 存储
  • 在没有先验消息类型知识的情况下解析 HL7

    在 NHapi 中 如果我们不知道消息类型 MSH 9 是什么 我们如何解析消息 var parser new NHapi Base Parser PipeParser IMessage parsedMessage parser Parse
  • 编写 MSMQ 示例应用程序所需的最低限度

    我已经研究了一个多小时 找到了如何在 C 中使用 MSMQ 的优秀示例 甚至找到了一本关于消息队列的书的完整章节 但是为了快速测试 我需要的只是涵盖这个场景 甚至不需要以完美的方式 只是为了快速演示 应用程序A 将消息写入消息队列 应用程序
  • 限制 SQL Server 登录只能访问一个数据库

    我有一个SQL Server服务器上有大约 50 个数据库 我希望创造一个新的Login对于希望访问其数据库的客户 但我不想让他们访问其他人49 个数据库 我怎样才能做到这一点 我认为这是我们非常喜欢做的事情 Step 1 create a
  • npm命令问题

    我已经在我的系统上安装了 Node js Windows 7的 我已将环境路径变量设置为 C Users pUser AppData Roaming npm node modules npm users 文件夹中有一个 npmrc 文件 其
  • 在哪里可以找到 vuetify 中使用的图标列表? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您可以添加一个图标 例如
  • Powershell 和 schtask 以及具有空格的任务

    我正在使用schtask使用 PowerShell 命令 出现的问题是 当程序 脚本参数包含C Program Files 它认为路径只是C Program路径的其余部分是一个参数 我试图通过使用来逃避它 场前和场后 但没有什么区别 我怎样
  • 如何在折叠工具栏布局下添加 viewpager 和 tablayout

    我尝试了该问题的所有解决方案stackoverflow但我没有得到任何帮助 首先 我想实现这样或类似的布局 根据一些问题stackoverflow like this https stackoverflow com questions 36
  • 获取 'Context 是不可构造的。添加默认构造函数或提供 IDbContextFactory 的实现。”

    当我尝试使用代码优先迁移时出现此错误 我的上下文有一个带有连接名称的构造函数 public class VeraContext DbContext IDbContext public VeraContext string NameOrCon
  • 如何检测 JavaScript 中的内存限制?

    浏览器是否可以对 JavaScript 对象中存储的数据量施加任何类型的限制 如果是这样 有什么方法可以检测到该限制吗 默认情况下 Firefox 似乎不会 var data document ready function data for
  • bootstrap3中文本输入字段的宽度

    bootstrap3 是否具有增加文本输入字段宽度的本机功能 我知道在 bootstrap2 中我只是附加一个像 input lg 这样的类来修改输入的宽度 但是在 bootstrap3 中这似乎只是增加了高度 查看 列大小调整 小节her
  • 硬件定时器中断在哪里?

    这是异常和中断表 我理解为IDT 摘自 英特尔架构软件开发人员手册 使上下文切换成为可能的定时器中断在哪里 用于多任务处理 如果这是一个愚蠢的问题 请纠正我的理解 先感谢您 嗯 是的 如果我们谈论的是传统的 8254 PIT 定时器 它位于
  • 一对多关系 JPA/Hibernate 删除链接

    我的双向关系设置如下 class Child ManyToOne JoinTable name CHILDREN WITH PARENT joinColumns JoinColumn name CHILD ID inverseJoinCol
  • Asp.net Web API 2 和使用集成 Windows 和基于令牌的混合身份验证

    我有一个在 IIS 下运行的 asp net Web API 服务器 到目前为止 该服务器一直使用 Windows 身份验证 因为它只有在与其连接的同一域上运行的其他服务 所以 在我的 web config 中我有以下设置
  • 如何创建方法引用列表?

    我需要处理一个列表 并为每个项目调用目标对象上的不同方法 我可以创建一个方法引用列表来执行此操作 这看起来很优雅 因此对于列表中的每个索引 我可以调用与其相对应的适当方法引用 private final static List
  • Django 模型字段索引

    我只知道索引很有用 而且查询速度更快 下面两个有什么区别 1 class Meta indexes models Index fields last name first name models Index fields date of b
  • 架构迁移工具如何工作?

    我有基于数据库的应用程序 每当架构发生任何更改时 我都会删除架构和数据库内容 现在它处于开发模式 很快我们就在生产环境中发布了该应用程序 但我们怀疑在生产使用中发布该应用程序后可能会发生许多变化 该软件将安装在全球许多地方 不是基于网络的应
  • 向后台进程发送信号

    我应该向后台进程发送哪个信号以将其移至前台 SIGTTIN SIGTOU 还是 它不是直接控制作业是前台还是后台的信号 这些作业 通常 处于 shell 的控制之下 例如 在bash 如果执行 pax gt sleep 3600 pax g
  • Kubernetes Horizo​​ntal Pod Autoscaler 中的 Pod 副本缩减是如何工作的?

    我的理解是 在 Kubernetes 中 使用 Horizo ntal Pod Autoscaler 时 如果targetCPUUtilizationPercentage字段设置为 50 并且所有 Pod 副本的平均 CPU 利用率高于该值