首页 > 其他分享 >Kubernetes 1.26 新功能 Pod 调度就绪特性解析

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

时间:2022-12-31 11:06:03浏览次数:60  
标签:Kubernetes 程序 调度 API 配额 Pod 1.26


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

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

它解决了什么问题?

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

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

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

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

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

Kubernetes 1.26 新功能 Pod 调度就绪特性解析_运维_02

它是如何工作的?

调度门的一般工作方式与终结器非常相似。具有非空 ​​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 调度)您的想法!另外请参考:



标签:Kubernetes,程序,调度,API,配额,Pod,1.26
From: https://blog.51cto.com/coderaction/5982017

相关文章

  • k8s教程(25)-pod扩缩容
    文章目录​​01引言​​​​02手动扩缩容机制​​​​03自动扩缩容机制​​​​3.1HPA控制器​​​​3.2指标的类型​​​​3.3扩缩容算法​​​​3.4HorizontalPodA......
  • k8s教程(21)-pod之容灾调度
    文章目录​​01引言​​​​02如何实现?​​​​03举例​​​​04文末​​01引言声明:本文为《Kubernetes权威指南:从Docker到Kubernetes实践全接触(第5版)》的读书笔记我们......
  • AirBuddy for Mac(AirPods耳机管理工具)v2.6.3汉化版
    AirBuddy激活版哪里可以下载呢?AirBuddyforMac(AirPods耳机管理工具)v2.6.3汉化版分享给大家,Airbuddyformac是一款功能高效的AirPods耳机管理工具,可以帮助你体验AirPods......
  • Kubernetes-Pod常用字段
    必选字段字段名说明apiVersionapi版本号kind资源类型。如Pod、Deploymentmetadata对象的元数据metadata.name元数据名称(唯一的)。如pod名称......
  • Kubernetes性能分析
    背景在kubernetes环境中进行开发时,需要了解不同node或者不同pod的资源使用情况,方便进行性能优化。本篇将整理一些常用的性能分析命令,方便查阅~ 命令node查看所有node的......
  • Kubernetes自动化一键部署脚本
    Kubernetes简介Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规......
  • 使用kubeadm在CentOS 7上部署kubernetes1.18
    一、Kubernetes简介Kubernetes(简称K8S)是开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。它既是一款容器编排工具,也是全新的基于容器技术的......
  • kubeadm安装Kubernetes-1.14.2
    一、Kubernetes简介Kubernetes(简称K8S)是开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。它既是一款容器编排工具,也是全新的基于容器技术的......
  • kubernetes 部署报错
    1、安装网络插件报错WarningFailedCreatePodSandBox7m52skubeletFailedtocreatepodsandbox:rpcerror:code=Unknowndesc=failedtosetupsandboxcont......
  • 开始使用 VMware Tanzu Mission Control 和 Tanzu Kubernetes Grid
    如今,运营和开发团队面临着越来越大的压力,他们需要更快地将软件部署到更多环境,例如开发、暂存或生产环境。组织需要自助服务工具和运营效率,而VMware正在通过解决方案来应对......