tencent cloud

容器服务

动态与公告
产品动态
公告
产品发布记录
产品简介
产品概述
产品优势
产品架构
应用场景
产品功能
基本概念
原生 Kubernetes 名词对照
容器服务高危操作
地域和可用区
开源组件
购买指南
购买指引
购买 TKE 标准集群
购买原生节点
购买超级节点
快速入门
新手指引
快速创建一个标准集群
入门示例
容器应用部署 Check List
集群配置
标准集群概述
集群管理
网络管理
存储管理
节点管理
GPU 资源管理
远程终端
应用配置
工作负载管理
服务和配置管理
组件和应用管理
弹性伸缩
容器登录方式
可观测配置
运维可观测性
成本洞察和优化
调度配置
调度组件概述
资源利用率优化调度
业务优先级保障调度
Qos 感知调度
安全和稳定性
容器服务安全组设置
身份验证和授权
应用安全
多集群管理
计划升级
备份中心
云原生服务指南
云原生 etcd
Prometheus 监控服务
TKE Serverless 集群指南
TKE 注册集群指南
实践教程
集群
Serverless 集群
调度
安全
服务部署
网络
发布
日志
监控
运维
Terraform
DevOps
弹性伸缩
容器化
微服务
成本管理
混合云
AI
故障处理
节点磁盘爆满排障处理
节点高负载排障处理
节点内存碎片化排障处理
集群 DNS 解析异常排障处理
集群 Kube-Proxy 异常排障处理
集群 API Server 网络无法访问排障处理
Service&Ingress 网络无法访问排障处理
Service&Ingress 常见报错和处理
Nginx Ingress 偶现 Connection Refused
CLB Ingress 创建报错排障处理
Pod 网络无法访问排查处理
Pod 状态异常与处理措施
授权腾讯云售后运维排障
CLB 回环问题
API 文档
History
Introduction
API Category
Making API Requests
Elastic Cluster APIs
Resource Reserved Coupon APIs
Cluster APIs
Third-party Node APIs
Relevant APIs for Addon
Network APIs
Node APIs
Node Pool APIs
TKE Edge Cluster APIs
Cloud Native Monitoring APIs
Scaling group APIs
Super Node APIs
Other APIs
Data Types
Error Codes
TKE API 2022-05-01
常见问题
TKE 标准集群
TKE Serverless 集群
运维类
隐患处理
服务类
镜像仓库类
远程终端类
事件类
资源管理类
服务协议
TKE Service Level Agreement
TKE Serverless Service Level Agreement
联系我们
词汇表

可抢占式 Job

PDF
聚焦模式
字号
最后更新时间: 2024-12-24 15:26:14

简介

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

部署在集群内的资源对象

说明:
使用可抢占式 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 使用。



使用可抢占式 Job

安装组件

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 资源。此时需要增加 原生节点 数量。


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈