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 副本缩减是如何工作的? 的相关文章

  • Kubernetes Service 没有活动 Endpoint

    我创建了一个Deployment Service and an Ingress 不幸的是 ingress nginx controllerpod 抱怨我的Service没有活动端点 controller go 920 Service
  • Docker nuget连接超时

    尝试利用官方jetbrains teamcity agentKubernetes 上的图像 我已经设法在 Docker 中运行 Docker 但尝试使用以下命令构建 ASP NET Core 映像docker build命令失败于dotne
  • 如何找出 Kubernetes 中可用的端口?

    我想在 kubernetes 集群中的不同端口上运行多个服务 并且想知道如何检查哪些端口可用并且不会与我的服务产生任何冲突 我还想知道每个端口上的服务名称 以便我可以更好地理解我的配置 有类似的问题涉及验证哪个NodePorts已经在使用中
  • 多个 nginx 入口重写的默认路径

    这是我的情况 我在 kubernetes 入口 上 有两个 docker 镜像 一个专用于 Web 第二个专用于 api 在下一个配置下 在消息末尾 web将显示将进行一些调用的前端 api 那里一切都好 but 是 404 因为没有定义任
  • Kubernetes 仪表板 - ServiceUnavailable(503 错误)

    我是 Kubernetes 新手 我正在尝试使用 kops 在 AWS 上设置 Kubernetes 集群 我成功地设置了集群 但是 我无法访问仪表板 UI https kubernetes io docs tasks access app
  • 在 Kubernetes API 中启用 CORS

    有没有办法在 Kubernetes API 上启用 CORS 以便我可以使用不同的域向 Kubernetes API 发送 ajax 请求 通过将 cors allowed origins http 参数添加到 etc default ku
  • Kubernetes - 服务之间的通信

    我目前正在开发 kubernetes 集群 集群工作正常 我需要在不使用代理的情况下建立服务之间的通信 例如我有以下服务 worker app1 app2 app3 Worker 需要直接通过 SSH 登录应用程序容器并执行一些命令 在 d
  • 如何为容器设置正确的 cpu 毫核?

    我想要优化配置 CPU 核心 而不会分配过多或不足 如何测量给定容器所需的 CPU 毫核 它还带来了一个问题 即代理将根据 CPU 消耗将多少流量发送到任何给定的 Pod 以便我们可以最佳地使用计算 目前我发送请求并进行监控 kubectl
  • kubernetes/openshift 中的请求与限制 cpu

    我在为 Openshift 中的 pod 选择正确的请求和限制设置时遇到一些困境 一些数据 在启动期间 应用程序需要至少 600 毫核才能在 150 秒内完成就绪检查 启动后 200 毫核应该足以让应用程序保持空闲状态 所以我从文档中的理解
  • 扩展策略中的AWS ASG冷却期和预热期有什么区别?

    AWS ASG 冷却期 当我想要更新自动扩展组时可以编辑该冷却期 和扩展策略中的预热期之间有什么区别 冷却时间可以防止失控的缩放事件 如果您的系统在 CPU 上运行较高 并且您的自动扩展规则添加了一个实例 则该实例将需要 5 分钟左右的时间
  • 如何根据 Kubernetes / Docker 事件发送警报?

    是否可以根据 Kubernetes 集群内发生的事件以某种方式发送警报 到电子邮件 slack 特别是 如果 Pod 意外重新启动或 Pod 无法启动 那么获取警报将非常有用 同样 了解 Pod 的 CPU 使用率是否超过特定阈值并获取警报
  • 2 个具有共享 Redis 依赖的 Helm Chart

    目前 我有 2 个 Helm Charts Chart A 和 Chart B Chart A 和 Chart B 对 Redis 实例具有相同的依赖关系 如Chart yaml file dependencies name redis v
  • 有没有办法用Lettuce自动发现Redis集群中新的集群节点IP

    我有一个Redis集群 3主3从 运行在一个库伯内斯簇 该集群通过Kubernetes 服务 Kube 服务 我将我的应用程序服务器连接到 Redis 集群 使用Kube 服务作为 URI 通过 Redis 的 Lettuce java 客
  • 允许 Kubernetes 用户列表/获取命名空间

    我有以下用户清单 我希望允许 myapp user 获取集群内所有命名空间的列表 根据我的查找 我应该创建一个 ClusterRole 但我无法真正找到足够的详细信息 是否有所有 apiGroup 以及相应资源和动词的列表 apiVersi
  • 如何将 kubernetes LoadBalancer Ingress URL 发布到 aws Route53

    今天 当我通过 aws 使用 kubernetes 启动一个应用程序时 它公开了一个公开可见的 LoadBalancer Ingress URL 但是要将其链接到我的域以使公众可以访问该应用程序 我需要在每个设备上的浏览器中手动进入 aws
  • Kubernetes Web UI(仪表板)缺少图表

    我已经使用 Kubeadm v1 6 安装了 Docker v1 13 和 Kubernetes 然后我安装了 Web UI 仪表板 我可以访问它 但缺少 CPU 内存使用图 为什么会发生这种情况 对我来说 安装后使用图就起作用了heaps
  • 为什么 tty 在命令完成后挂起?

    我想运行这样的命令 kubectl run busybox it rm restart Never image busybox command sh c env 预计运行命令并删除 pod 它打印变量 但随后终端冻结 尽管 pod 处于完成
  • Kubernetes Ingress 在 nginx 反向代理后面运行

    我已经在可以从互联网访问的服务器上安装了 minikube 我创建了一个可用的 kubernetes 服务 gt kubectl get service myservice NAME CLUSTER IP EXTERNAL IP PORT
  • 指定命名空间时,无法使用 nginx-stable 中的 helm 安装 nginx ingress

    我有个问题 我正在尝试使用 helm 3 安装 nginx 但当我指定命名空间时它不起作用 知道为什么吗 它无需任何操作即可工作 helm install nginx release nginx stable nginx ingres n
  • kubernetes,提示符在端口转发命令处冻结

    我想在在线指南之后设置从本地端口 节点 到 pod redis master 的端口转发库伯内特斯 https kubernetes io docs tasks access application cluster port forward

随机推荐

  • 在 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 利用率高于该值