容器服务 可抢占式 Job

在 Kubernetes 集群中,因为容器化的方式,可以在一个节点上运行更多的业务,但这样也会引发业务之间资源的竞争。此时会使用 Request 来保证 Pod 申请资源的最小量,以防止在发生资源竞争时,没有足够的资源可用。但是这部分通过 Request 申请的资源量被永久“占用”,无法被别的业务使用,在流量波谷时,会造成较大浪费。因此 TKE 推出了可抢占式 Job,该类型 Job 使用的资源是集群中的闲置资源,不。

相关产品
容器服务 产品页,含版本规格、价格与购买入口。

一、部署在集群内的资源对象

注意:说明:

注意:使用可抢占式 Job 需要首先在集群中安装 QoSAgent 组件并开启 CPU 使用优先级,我们会自动为所有可抢占式 Job 分配最低的优先级(优先级7),在发生资源抢占时被绝对抢占,该组件在集群中部署的资源对象请参见下方表格。

Kubernetes 对象名称 类型 默认占用资源 所属 Namespaces
avoidanceactions.ensurance.crane.io CustomResourceDefinition – –
nodeqoss.ensurance.crane.io CustomResourceDefinition – –
podqoss.ensurance.crane.io CustomResourceDefinition – –
timeseriespredictions.prediction.crane.io CustomResourceDefinition – –
kube-system Namespace – –
all-be-pods PodQOS – kube-system
qos-agent ClusterRole – –
qos-agent ClusterRoleBinding – –
crane-agent Service – kube-system
qos-agent ServiceAccount – kube-system
qos-agent Daemonset – kube-system

二、功能说明

·因为只有原生节点才有闲置资源,所以该功能仅支持在 原生节点 中使用。

·支持为 Job、CronJob 分配集群中的闲置资源。

·该部分闲置资源不占用集群中的剩余可调度资源。

·当发生资源竞争时,闲置资源会被优先回收,因此被称之为可抢占式 Job。

·节点和集群的闲置资源数值是动态变化的,根据实际的负载动态变化。当集群/节点闲置资源小于 Job 对闲置资源申请时,导致 Pod 会 Pending。

三、Request 推荐原理

·闲置资源的分配方式是根据 Kubernetes 原生的 Extended Resource 实现。通过 Extended Resource 回收节点的剩余可用资源形成共享资源池,共享资源池不占用实际集群/节点的 CPU/RAM 可调度资源量。

·如下所示,QoS Agent 组件将集群中所有没有被真正使用的资源中抽取一部分资源,根据节点历史负载画像情况预测出安全的 Extended Resource 数值,该部分资源可以被声明使用 Extended Resource 的 Job/CronJob 使用。


四、安装组件

1. 登录 容器服务控制台,选择左侧导航栏中的集群。

2. 在集群管理页面单击目标集群 ID,进入集群详情页。

3. 选择左侧菜单栏中的组件管理,进入组件列表页面。

4. 在组件列表页面中选择新建,并在新建组件页面中勾选 QoS Agent。

5. 单击完成即可安装组件。

五、部署可抢占式 Job

1. 登录 容器服务控制台,选择左侧导航栏中的集群。

2. 在集群管理页面单击目标集群 ID,进入集群详情页。

3. 选择工作负载 > Job/CronJob,在 Job/CronJob 资源列表页面,单击新建。

4. 在新建组件页面中开启可抢占功能。如下:


开启可抢占的能力之后,Job/CronJob 的资源输入方式发生了变化,无需输入 Request/Limit 变为了 Extended CPU 和 Extended 内存:

·Extended CPU:申请原生节点中的空闲 CPU 资源。Extended CPU 限制只能是整数。

·Extended 内存:申请原生节点中的空闲内存资源。Extended 内存限制只能是整数。如下:

5. 通过声明使用 Extended Resource 的闲置资源创建出来的可抢占类型的 Job:

注意:若你没有原生节点,或原生节点没有足够多的闲置资源,则可能有如下报错:"Insufficient gocrane.io/memory",表示没有足够的闲置内存资源;如果是"Insufficient gocrane.io/cpu",表示没有足够的闲置 CPU 资源。此时需要增加 原生节点 数量。
报错信息如下:


赞 (0)
上一篇 4天前
下一篇 4天前