Kubernetes 1.26 新功能 Pod 调度就绪特性解析

2023-05-16

Kubernetes 1.26 新功能 Pod 调度就绪特性解析

Kubernetes 1.26 引入了 Pod 的一个新特性:scheduling gates。在 Kubernetes 中,调度门是告诉调度程序何时准备好考虑调度 Pod 的 keys。

它解决了什么问题?

当一个 Pod 创建时,调度器会不断尝试寻找适合它的节点。这个无限循环一直持续到调度程序找到 Pod 的节点,或者 Pod 被删除。

长时间保持不可调度的 Pod(例如,在某些外部事件上被阻塞的 Pod)会浪费调度周期。根据 Pod 调度约束的复杂性,一个调度周期可能需要 ≅20ms 或更多。因此,在大规模情况下,这些浪费的周期会明显影响调度程序的性能。请参阅下面 调度程序 框中的箭头。

调度门有助于解决这个问题。它允许声明新创建的 Pod 尚未准备好进行调度。当 Pod 上存在调度门时,调度程序会忽略该 Pod,从而避免不必要的调度尝试。如果您在集群中安装了 Cluster Autoscaler,这些 Pod 也会被忽略。

清除门是外部控制器的责任,外部控制器知道何时应考虑对 Pod 进行调度(例如,配额管理器 quota manager)。

它是如何工作的?

调度门的一般工作方式与终结器非常相似。具有非空 spec.schedulingGates字段的 Pod 将显示为状态SchedulingGated并被阻止调度。请注意,可以添加多个门,但它们都应该在创建 Pod 时添加(例如,您可以将它们添加为 spec 的一部分或通过 mutating webhook)。

NAME       READY   STATUS            RESTARTS   AGE
test-pod   0/1     SchedulingGated   0          10s

要清除 gates,您可以通过从 Pod 的 schedulingGates 字段中删除所有元素来更新 Pod。不需要一次性全部移除 gate,但只有当所有 gate 都移除后,调度器才会开始考虑 Pod 进行调度。

在底层,调度门实现为一个 PreEnqueue 调度器插件,这是一个新的调度程序框架扩展点,在每个调度周期开始时调用。

用例

此功能启用的一个重要用例是动态配额管理。Kubernetes 支持 ResourceQuota,但是 API Server 会在您尝试创建 Pod 时强制执行配额。例如,如果一个新的 Pod 超过了 CPU 配额,它就会被拒绝。API Server 不会对 Pod 进行排队;因此,无论是谁创建了 Pod,都需要不断尝试重新创建它。这要么意味着资源变得可用和 Pod 实际运行之间的延迟,要么意味着由于不断尝试而导致 API 服务器和调度器负载高。

调度门(Scheduling gates)允许外部配额管理器解决 ResourceQuota 的上述限制。具体来说,管理器可以为集群中创建的所有 Pods 添加一个 example.com/quota-check 调度门(使用一个mutating webhook)。然后,当有配额足够启动 Pod 时,manager 将移除门。

下一步是什么?

要使用此功能,必须在 API 服务器和调度程序中启用PodSchedulingReadiness功能门。非常欢迎您对其进行测试并告诉(SIG 调度)您的想法!另外请参考:

  • Pod Scheduling Readiness
  • Kubernetes 增强提案

出处:https://kubernetes.io/blog/2022/12/26/pod-scheduling-readiness-alpha/

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

Kubernetes 1.26 新功能 Pod 调度就绪特性解析 的相关文章

随机推荐

  • 企业级网关 Kong 部署 Spring Boot 项目实战

    企业级网关 Kong 部署 Spring Boot 项目实战 1 概述 在本教程中 xff0c 我们将演示使用 Kong Ingress Controller KIC 在 Kubernetes 上部署 Spring Boot 应用程序 通过
  • Linux Mint(Ubuntu)上 安装 效率神器 utools

    我的 Windows 系统的笔记本只有 256G 固态 xff0c 磁盘已经快用满了 xff0c 最近想装个 Linux 玩玩 xff0c 选择了 Linux Mint xff0c 然后就在闲置的移动硬盘上安装了 Linux Mint 21
  • 图文轻松说透 K8S Pod 各种驱逐场景

    图文轻松说透 K8S Pod 各种驱逐场景 Kubernetes Pod 被驱逐是什么意思 xff1f 它们被终止 xff0c 通常是没有足够资源的结果 但是为什么会这样呢 xff1f 驱逐是指派给节点的Pod 被终止的过程 Kuberne
  • CKA、CKAD、CKS、LFCS、LFCA、LFCE 60$ 刀优惠券

    CKA CKAD CKS LFCS LFCA LFCE 60 刀优惠券 CKA 地址 xff1a https trainingportal linuxfoundation org courses certified kubernetes a
  • 配置Docker CE 镜像

    Docker CE 是免费的 Docker 产品的新名称 xff0c Docker CE 包含了完整的 Docker 平台 xff0c 非常适合开发人员和运维团队构建容器 APP 参考阿里云官方镜像站 xff1a 阿里巴巴开源镜像站 OPS
  • ssh 连接错误 Too many authentication failures 解决方法

    ssh 连接错误 Too many authentication failures 解决方法 背景 有时候使用 ssh 登录 或者 git ssh 方式连接 时会遇到 xff1a Too many authentication failur
  • 报错解决 REMOTE HOST IDENTIFICATION HAS CHANGED

    REMOTE HOST IDENTIFICATION HAS CHANGED 报错 span class hljs meta style color 61aeee line height 26px span span class bash
  • 使用 Helm Cli 将 chart 推送到 Harbor

    使用 Helm Cli 将 chart 推送到 Harbor 背景问题 努力寻找适用于特定版本的 Harbor 和 Helm 的文档 我尝试添加我的仓库 xff08 repo xff09 helm repo span class token
  • 修改 Git 已经提交记录的 用户名 和邮箱

    修改 Git 已经提交记录的 用户名 和邮箱 有关 Git 和版本控制的常见问题 如何更改提交的作者姓名 电子邮件 xff1f 在我们进入解决方案之前 xff0c 让我们找出您到底想要完成什么 xff1a 在提交之前更改作者信息在提交后更改
  • Go 中模拟 Kubernetes 客户端进行单元测试

    是的 xff0c 我们可以模仿 K8s Client xff01 编写单元测试一直是开发人员的痛苦 这样做的主要原因是 xff0c 通常 xff0c 单元测试 xff08 功能单元测试 xff09 不得使用应用程序的任何物理组件 运行实例
  • Kubernetes 1.26 中的删除、弃用和主要更改

    Kubernetes 1 26 中的删除 弃用和主要更改 变化是 Kubernetes 生命周期不可或缺的一部分 xff1a 随着 Kubernetes 的成长和成熟 xff0c 功能可能会被弃用 删除或替换为项目健康的改进 对于 Kube
  • 提高 K8S 容器运行时的可观察性最佳方法之一

    当谈到云原生可观察性时 xff0c 可能每个人都会提到OpenTelemetry OTEL xff0c 因为社区需要依赖标准来将所有集群组件开发指向到同一方向 OpenTelemetry 使我们能够将日志 指标 xff08 metrics
  • 6 张配图通俗易懂说透 K8S 请求和限制

    6 张配图通俗易懂说透 K8S 请求和限制 在 Kubernetes 中使用容器时 xff0c 了解涉及的资源是什么以及为何需要它们很重要 有些进程比其他进程需要更多的 CPU 或内存 这很关键 xff0c 永远不应该让进程挨饿 知道了这一
  • Kubernetes 1.26 正式发布,变化重大,所有更改都在这里了!

    Kubernetes 1 26 正式发布 xff0c 变化重大 xff0c 所有更改都在这里了 xff01 Kubernetes 1 26 已经正式发布 xff0c 满载新奇 xff01 此版本带来了 37 项增强功能 xff0c 与 Ku
  • 如何修复错误:无法下载 metadata repo appstream

    如何修复错误 xff1a 无法下载 metadata repo appstream 如果您出于某种原因仍在积极使用CentOS 8 xff0c 您可能在尝试更新系统或只是安装软件包时遇到以下错误 Error Failed to downlo
  • 【Matlab】最小二乘法拟合多项式

    前言 在最近的电机项目中 xff0c 有遇到有传感器数据并不线性的问题 xff0c 然后想要用最小二乘法做个曲线拟合 xff0c 反过来去校准不线性的传感器的数据 xff0c 因此记录一下使用最小二乘法来拟合多项式的曲线的步骤 本篇从最小二
  • 服务器安全神器,Linux 上安装 Fail2Ban 保护 SSH

    服务器安全神器 xff0c Linux 上安装 Fail2Ban 保护 SSH xff0c 这只是其功能的冰山一角 前言 之前使用的 denyhosts 方案已经过时 一些研究表明 hosts allow denied 文件已过时 可使用其
  • 使用 Docker Hub 完美地存储 Helm 图表实战

    使用 Docker Hub 完美地存储 Helm 图表实战 Helm 是 Kubernetes 的包管理器 它是一个开源容器编排系统 它通过提供一种简单的方法来定义 安装和升级复杂的 Kubernetes 应用程序 xff0c 帮助您管理
  • Docker Desktop 4.15 正式发布,这里是新功能

    Docker Desktop 4 15 正式发布 xff0c 这里是新功能 Docker Desktop 4 15现在可用于所有平台 xff1a Linux Windows 和 macOS 它附带 Docker Compose v2 13
  • Kubernetes 1.26 新功能 Pod 调度就绪特性解析

    Kubernetes 1 26 新功能 Pod 调度就绪特性解析 Kubernetes 1 26 引入了 Pod 的一个新特性 xff1a scheduling gates 在 Kubernetes 中 xff0c 调度门是告诉调度程序何时