searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Koordinator简介

2023-06-29 06:50:51
350
0

什么是Koordinator?

Koordinator 是一个以 QoS 为基础的 Kubernetes 混合工作负载调度系统,通过提高延迟敏感的工作负载和批处理作业的运行时效率和可靠性,以简化与资源相关的配置调整的复杂性,同时增加 Pod 部署密度以提高资源利用率。Koordinator的重要功能包括:

  • 精心设计的优先级和QoS机制,允许不同类型的工作负载混合运行,并在单个节点上运行不同类型的Pod。
  • 允许资源超售以提高资源利用率,但仍满足QoS保证。
  • 细粒度的资源协调和隔离机制,提高延迟敏感的工作负载和批处理作业的效率。
  • 灵活的作业调度机制,支持特定领域的工作负载,如大数据、人工智能、音频和视频。
  • 一整套用于监控、故障排除和操作的工具。

 

Koordinator与Kubernetes原生的调度有着一定的区别与联系:

  • Koordinator与Kubernetes QoS兼容,但对每种类型都有增强功能,使用独立字段描述混部QoS。
  • Koordinator调度器不是为了取代kube-scheduler,而是为了让混部工作负载在Kubernetes上更好地运行。
  • Koordinator调度器基于schedule-framework开发,在原生调度能力之上增加了与混部和优先级抢占相关的调度插件。
  • Koordinator将推动相关增强进入Kubernetes的上游社区,推动混部技术的标准化。

Koordinator的核心组件

Koordinator 由两个控制面(Koordinator Scheduler、Koordinator Manager)及一个 DaemonSet 组件(Koordlet)组成。

架构

 

Koordinator Scheduler,以Deployment的形式部署,用于增强 Kubernetes 在混部场景下的资源调度能力。它增加了包括弹性配额调度、资源超卖、资源预留、Gang调度、异构资源调度等多种场景的支持。Koordinator Scheduler通过动态索引优化、等价class调度、随机算法优化等多种方式获得更好的性能。在安全方面,Koordinator Scheduler通过工作负载感知、确定性的pod迁移、细粒度的流量控制和变更审计支持等方式提升了调度的安全性。

 

Koordinator Manager, 以Deployment的形式部署,通常由leader实例和backup实例组成。它是为了增强Kubernetes在混部场景下的资源调度能力而创建的,其中的三个组件Colocation Profile、SLO控制器和Recommender。

  • Colocation Profile,支持混部而无需修改工作负载。用户只需在集群中进行少量配置,原有的工作负载即可在混部模式下运行。
  • SLO控制器,用于资源超卖管理。根据节点混部时的运行状态,动态调整集群的超发配置比例。该控制器的核心职责是管理混部时的SLO,包括智能识别异常节点并降低其权重、动态调整混部时的水位和压力策略,以保证集群中pod的稳定性和吞吐量。
  • Recommender(即将推出),使用histograms统计和预测工作负载的资源使用细节,以预估工作负载的峰值资源需求,从而支持更好地分散热点,提高混部的效率。此外,资源profiling还可用于简化用户资源规范化配置的复杂性,如支持VPA。

 

Koordlet,以DaemonSet的形式部署在Kubernetes集群中的工具,旨在优化混部场景下的资源超卖、干扰检测和QoS保证等问题。Koordlet包括以下模块:

  • 资源Profiling:估算Pod的实际资源使用情况,回收已分配但未使用的资源,用于低优先级Pod的超发。
  • 资源隔离:为不同类型的Pod设置资源隔离参数,避免低优先级的Pod影响高优先级Pod的稳定性和性能。
  • 干扰检测:动态检测资源争夺,包括CPU调度、内存分配延迟、网络、磁盘IO延迟等。
  • QoS管理器:根据资源剖析、干扰检测结果和SLO配置,动态调整混部节点的水位,抑制影响服务质量的Pod。
  • 资源调优:针对混部场景进行容器资源调优,优化容器的CPU Throttle、OOM等,提高服务运行质量。

 

Koordinator的资源模型

<main class="flex-1 overflow-hidden" data-v-7748bc16="">
 
混部是一种资源调度解决方案,可对延迟敏感的工作负载和大数据计算工作负载进行精细化编排。它需要解决如何调度资源以满足性能和长尾延迟,以及如何以较低成本满足大数据计算任务的需求。Koordinator的资源模型定义如下:
Resource Model
 

混部利用未使用的资源来运行低优先级的 Pod。为了实现这个目标,Koordinator采用了资源模型,它包括四个部分:限制、使用、短期预留和长期预留。

  • 限制是高优先级 Pod 请求的资源量,用灰色线表示;
  • 使用是实际使用的资源量,用红色线表示;
  • 短期预留是基于过去时期内的资源使用量对未来估计,用深蓝色线表示;
  • 长期预留是基于更长历史使用期的资源预留,用浅蓝色线表示。通过这四条线的展示,我们可以清晰地了解资源的分配情况和变化趋势。

混部资源调度是基于这个资源模型构建的,它不仅可以满足各种工作负载的资源需求,还可以充分利用集群的未使用资源,提高资源利用率。总之,这种方法可以在不浪费资源的情况下,使低优先级的 Pod 也能得到充分的资源支持。

 

在集群中运行的 Pod 资源 SLO 由两个概念组成:优先级和 QoS。优先级代表了请求资源被调度的优先级,通常情况下,它会影响 Pod 在调度器待定队列中的相对位置。QoS 代表 Pod 运行时的服务质量,如 cgroups cpu share、cfs 配额、LLC、内存、OOM 优先级等等。需要注意的是,Priority 和 QoS 是两个维度的概念,但在实际业务场景中,两者之间会有一些约束。并非所有的组合都是合法的。

 

优先级

Koordinator 在 Kubernetes 优先级类型的基础上,定义了一套规范并扩展了优先级的一个维度,以支持混部场景的细粒度调度。

优先级用数字表示,目前定义了四个类:

PriorityClass 优先级范围 描述
koord-prod [9000, 9999] 需要提前规划资源配额,并且保证在配额内成功。
koord-mid [7000, 7999] 需要提前规划资源配额,并且保证在配额内成功。
koord-batch [5000, 5999] 需要提前规划资源配额,一般允许借用配额。
koord-free [3000, 3999] 不保证资源配额,可分配的资源总量取决于集群的总闲置资源。

Koordinator 将不同类型的工作负载匹配到不同的优先级中:

  • koord-prod 适用于典型的延迟敏感型服务,需要实时响应的服务类型,例如移动应用程序中的按钮点击等。
  • koord-mid 适用于长周期的可用资源,一般用于运行实时计算和人工智能训练任务/作业,如 TensorFlow/PyTorch 等。
  • koord-batch 适用于短周期可用资源,运行典型的离线批处理作业,例如日级大数据报告和非交互式 SQL 查询。
  • koord-free 适用于低优先级的离线批处理作业,一般用于开发人员为测试目的提交的作业,不占用资源预算,充分利用空闲资源。

 

QoS

QoS 用于表达节点上 Pod 的运行质量,包括资源获取方式、资源获取比例以及 QoS 保障策略等方面的内容。

Koordinator 调度系统支持的 QoS 有五种类型:

QoS 特点 说明
SYSTEM 系统进程,资源受限 对于 DaemonSets 等系统服务,虽然需要保证系统服务的延迟,但也需要限制节点上这些系统服务容器的资源使用,以确保其不占用过多的资源
LSE(Latency Sensitive Exclusive) 保留资源并组织同 QoS 的 pod 共享资源 很少使用,常见于中间件类应用,一般在独立的资源池中使用
LSR(Latency Sensitive Reserved) 预留资源以获得更好的确定性 类似于社区的 Guaranteed,CPU 核被绑定
LS(Latency Sensitive) 共享资源,对突发流量有更好的弹性 微服务工作负载的典型QoS级别,实现更好的资源弹性和更灵活的资源调整能力
BE(Best Effort) 共享不包括 LSE 的资源,资源运行质量有限,甚至在极端情况下被杀死 批量作业的典型 QoS 水平,在一定时期内稳定的计算吞吐量,低成本资源

 

 

 
</main>
 
 
 
 

 

0条评论
作者已关闭评论
Darren
11文章数
0粉丝数
Darren
11 文章 | 0 粉丝
Darren
11文章数
0粉丝数
Darren
11 文章 | 0 粉丝
原创

Koordinator简介

2023-06-29 06:50:51
350
0

什么是Koordinator?

Koordinator 是一个以 QoS 为基础的 Kubernetes 混合工作负载调度系统,通过提高延迟敏感的工作负载和批处理作业的运行时效率和可靠性,以简化与资源相关的配置调整的复杂性,同时增加 Pod 部署密度以提高资源利用率。Koordinator的重要功能包括:

  • 精心设计的优先级和QoS机制,允许不同类型的工作负载混合运行,并在单个节点上运行不同类型的Pod。
  • 允许资源超售以提高资源利用率,但仍满足QoS保证。
  • 细粒度的资源协调和隔离机制,提高延迟敏感的工作负载和批处理作业的效率。
  • 灵活的作业调度机制,支持特定领域的工作负载,如大数据、人工智能、音频和视频。
  • 一整套用于监控、故障排除和操作的工具。

 

Koordinator与Kubernetes原生的调度有着一定的区别与联系:

  • Koordinator与Kubernetes QoS兼容,但对每种类型都有增强功能,使用独立字段描述混部QoS。
  • Koordinator调度器不是为了取代kube-scheduler,而是为了让混部工作负载在Kubernetes上更好地运行。
  • Koordinator调度器基于schedule-framework开发,在原生调度能力之上增加了与混部和优先级抢占相关的调度插件。
  • Koordinator将推动相关增强进入Kubernetes的上游社区,推动混部技术的标准化。

Koordinator的核心组件

Koordinator 由两个控制面(Koordinator Scheduler、Koordinator Manager)及一个 DaemonSet 组件(Koordlet)组成。

架构

 

Koordinator Scheduler,以Deployment的形式部署,用于增强 Kubernetes 在混部场景下的资源调度能力。它增加了包括弹性配额调度、资源超卖、资源预留、Gang调度、异构资源调度等多种场景的支持。Koordinator Scheduler通过动态索引优化、等价class调度、随机算法优化等多种方式获得更好的性能。在安全方面,Koordinator Scheduler通过工作负载感知、确定性的pod迁移、细粒度的流量控制和变更审计支持等方式提升了调度的安全性。

 

Koordinator Manager, 以Deployment的形式部署,通常由leader实例和backup实例组成。它是为了增强Kubernetes在混部场景下的资源调度能力而创建的,其中的三个组件Colocation Profile、SLO控制器和Recommender。

  • Colocation Profile,支持混部而无需修改工作负载。用户只需在集群中进行少量配置,原有的工作负载即可在混部模式下运行。
  • SLO控制器,用于资源超卖管理。根据节点混部时的运行状态,动态调整集群的超发配置比例。该控制器的核心职责是管理混部时的SLO,包括智能识别异常节点并降低其权重、动态调整混部时的水位和压力策略,以保证集群中pod的稳定性和吞吐量。
  • Recommender(即将推出),使用histograms统计和预测工作负载的资源使用细节,以预估工作负载的峰值资源需求,从而支持更好地分散热点,提高混部的效率。此外,资源profiling还可用于简化用户资源规范化配置的复杂性,如支持VPA。

 

Koordlet,以DaemonSet的形式部署在Kubernetes集群中的工具,旨在优化混部场景下的资源超卖、干扰检测和QoS保证等问题。Koordlet包括以下模块:

  • 资源Profiling:估算Pod的实际资源使用情况,回收已分配但未使用的资源,用于低优先级Pod的超发。
  • 资源隔离:为不同类型的Pod设置资源隔离参数,避免低优先级的Pod影响高优先级Pod的稳定性和性能。
  • 干扰检测:动态检测资源争夺,包括CPU调度、内存分配延迟、网络、磁盘IO延迟等。
  • QoS管理器:根据资源剖析、干扰检测结果和SLO配置,动态调整混部节点的水位,抑制影响服务质量的Pod。
  • 资源调优:针对混部场景进行容器资源调优,优化容器的CPU Throttle、OOM等,提高服务运行质量。

 

Koordinator的资源模型

<main class="flex-1 overflow-hidden" data-v-7748bc16="">
 
混部是一种资源调度解决方案,可对延迟敏感的工作负载和大数据计算工作负载进行精细化编排。它需要解决如何调度资源以满足性能和长尾延迟,以及如何以较低成本满足大数据计算任务的需求。Koordinator的资源模型定义如下:
Resource Model
 

混部利用未使用的资源来运行低优先级的 Pod。为了实现这个目标,Koordinator采用了资源模型,它包括四个部分:限制、使用、短期预留和长期预留。

  • 限制是高优先级 Pod 请求的资源量,用灰色线表示;
  • 使用是实际使用的资源量,用红色线表示;
  • 短期预留是基于过去时期内的资源使用量对未来估计,用深蓝色线表示;
  • 长期预留是基于更长历史使用期的资源预留,用浅蓝色线表示。通过这四条线的展示,我们可以清晰地了解资源的分配情况和变化趋势。

混部资源调度是基于这个资源模型构建的,它不仅可以满足各种工作负载的资源需求,还可以充分利用集群的未使用资源,提高资源利用率。总之,这种方法可以在不浪费资源的情况下,使低优先级的 Pod 也能得到充分的资源支持。

 

在集群中运行的 Pod 资源 SLO 由两个概念组成:优先级和 QoS。优先级代表了请求资源被调度的优先级,通常情况下,它会影响 Pod 在调度器待定队列中的相对位置。QoS 代表 Pod 运行时的服务质量,如 cgroups cpu share、cfs 配额、LLC、内存、OOM 优先级等等。需要注意的是,Priority 和 QoS 是两个维度的概念,但在实际业务场景中,两者之间会有一些约束。并非所有的组合都是合法的。

 

优先级

Koordinator 在 Kubernetes 优先级类型的基础上,定义了一套规范并扩展了优先级的一个维度,以支持混部场景的细粒度调度。

优先级用数字表示,目前定义了四个类:

PriorityClass 优先级范围 描述
koord-prod [9000, 9999] 需要提前规划资源配额,并且保证在配额内成功。
koord-mid [7000, 7999] 需要提前规划资源配额,并且保证在配额内成功。
koord-batch [5000, 5999] 需要提前规划资源配额,一般允许借用配额。
koord-free [3000, 3999] 不保证资源配额,可分配的资源总量取决于集群的总闲置资源。

Koordinator 将不同类型的工作负载匹配到不同的优先级中:

  • koord-prod 适用于典型的延迟敏感型服务,需要实时响应的服务类型,例如移动应用程序中的按钮点击等。
  • koord-mid 适用于长周期的可用资源,一般用于运行实时计算和人工智能训练任务/作业,如 TensorFlow/PyTorch 等。
  • koord-batch 适用于短周期可用资源,运行典型的离线批处理作业,例如日级大数据报告和非交互式 SQL 查询。
  • koord-free 适用于低优先级的离线批处理作业,一般用于开发人员为测试目的提交的作业,不占用资源预算,充分利用空闲资源。

 

QoS

QoS 用于表达节点上 Pod 的运行质量,包括资源获取方式、资源获取比例以及 QoS 保障策略等方面的内容。

Koordinator 调度系统支持的 QoS 有五种类型:

QoS 特点 说明
SYSTEM 系统进程,资源受限 对于 DaemonSets 等系统服务,虽然需要保证系统服务的延迟,但也需要限制节点上这些系统服务容器的资源使用,以确保其不占用过多的资源
LSE(Latency Sensitive Exclusive) 保留资源并组织同 QoS 的 pod 共享资源 很少使用,常见于中间件类应用,一般在独立的资源池中使用
LSR(Latency Sensitive Reserved) 预留资源以获得更好的确定性 类似于社区的 Guaranteed,CPU 核被绑定
LS(Latency Sensitive) 共享资源,对突发流量有更好的弹性 微服务工作负载的典型QoS级别,实现更好的资源弹性和更灵活的资源调整能力
BE(Best Effort) 共享不包括 LSE 的资源,资源运行质量有限,甚至在极端情况下被杀死 批量作业的典型 QoS 水平,在一定时期内稳定的计算吞吐量,低成本资源

 

 

 
</main>
 
 
 
 

 

文章来自个人专栏
Darren的容器专栏
11 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0