CCE QoS Agent 说明

容器引擎 CCE

  • 功能发布记录
  • 产品描述
    • 介绍
    • 优势
    • 使用限制
    • 应用场景
    • 核心概念
    • 特性
  • 开发指南
    • EFK日志采集系统部署指南
    • 创建LoadBalancer类型的Service
    • Prometheus监控系统部署指南
    • kubectl管理配置
    • 在CCE集群中使用-Network-Policy
  • 常用工具
    • 视图命令行场景示例
  • 产品公告
    • CCE 新版集群管理发布公告
    • CCE 控制台升级公告
    • Kubernetes 版本发布说明
      • CCE发布Kubernetes 1.18版本说明
      • CCE发布Kubernetes 1.30版本说明
      • CCE Kubernetes 版本更新说明
      • CCE发布Kubernetes 1.22版本说明
      • CCE发布Kubernetes 1.20版本说明
      • CCE发布Kubernetes 1.28版本说明
      • CCE发布Kubernetes 1.24版本说明
      • CCE发布Kubernetes 1.26版本说明
    • 安全漏洞修复公告
      • 漏洞CVE-2020-14386修复公告
      • 修复漏洞CVE-2021-30465公告
      • 漏洞CVE-2019-5736修复公告
      • 漏洞CVE-2025-1097、CVE-2025-1098等修复公告
      • 关于 runc 的安全问题(CVE-2024-21626)影响声明
  • 快速入门
    • 快速部署nginx应用
    • 使用CCE容器引擎流程概述
  • 典型实践
    • CCE集群网络说明及规划
    • CCE典型实践之容器网络模式选择
    • Pod异常问题排查
    • 通过 CCE Ingress 实现虚机和容器服务的统一接入
    • CCE集群使用Jenkins持续发布
    • CCE-访问公网实践
    • Linux系统配置常用参数说明
    • 用户使用自定义 CNI 插件方法
    • CCE典型实践之Guestbook搭建
    • 使用KMS对etcd数据加密
    • 添加CGroup V2节点
    • CCE容器运行时选择
    • CCE使用检查清单
    • VPC-ENI模式集群访问公网实践
    • 利用 Velero 实现将应用跨云迁移到 百度CCE
    • 使用 CNI 配置容器内网络参数
    • CCE Resource Recommender 用户文档
    • CCE集群中使用私有镜像实践
    • 云原生AI
      • 使用 CCE AITraining Operator 实现弹性容错训练
      • 部署 TensorFlow Serving 推理服务
      • GPU虚拟化之隔离性最优型的最佳实践
  • 操作指南
    • 多用户访问控制
    • 使用须知
    • 命名空间管理
      • 设置资源配额
      • 设置资源限制
      • 命名空间基本操作
    • 弹性伸缩
      • 使用 cce-autoscaling-placeholder 实现秒级弹性伸缩
      • CCE 集群节点自动伸缩
      • 容器定时水平伸缩(CronHPA)
      • 容器水平伸缩(HPA)
    • 存储管理
      • 使用云盘CDS
      • 使用并行文件存储PFS
      • 使用对象存储BOS
      • 使用并行文件存储PFS L2
      • 使用本地存储
      • 使用数据湖存储加速工具RapidFS
      • 使用文件存储CFS
      • 概述
    • 节点管理
      • 移出节点
      • kubelet容器监控只读端口风险提示
      • 管理污点
      • 设置GPU显存共享
      • 添加节点
      • 自定义Kubelet参数
      • 设置节点封锁
      • 节点排水
      • 管理节点标签
    • 组件管理
      • CCE CSI BOS Plugin 说明
      • Kube Scheduler 说明文档
      • CCE CSI PFS L2 Plugin
      • CCE NodeLocal DNSCache 说明
      • CCE Ingress NGINX Controller 说明
      • CCE RDMA Device Plugin 说明
      • CCE Node Problem Detector 说明
      • CCE Credential Controller 说明
      • Kube Controller Manager 说明
      • CCE Ingress Controller 说明
      • CCE GPU Manager 说明
      • CCE Backup Controller 说明
      • CCE QoS Agent 说明
      • CCE Descheduler 说明
      • 组件概述
      • CCE Image Accelerate 说明
      • CCE Network Plugin说明
      • Kube ApiServer 说明
      • CCE Log Operator 说明
      • CoreDNS 说明
      • CCE NPU Manager 说明
      • CCE AI Job Scheduler 说明
      • CCE LB Controller 说明
      • CCE P2P Accelerator 说明
      • CCE_Hybrid_Manager说明
      • CCE CSI PFS Plugin 说明
      • CCE Deep Learning Frameworks Operator 说明
      • CCE Node Remedier 说明
      • CCE CSI CDS Plugin 说明
      • CCE Ascend Mindx DL说明
      • CCE Calico Felix 说明
      • CCE Virtual Kubelet组件
      • CCE Fluid说明
      • CCE Onepilot 说明
      • CCE CronHPA Controller 说明
      • CCE 动态调度插件说明
    • 云原生AI
      • 云原生AI概述
      • GPU虚拟化
        • MPS 最佳实践&注意事项
        • GPU独占和共享说明
        • GPU在离线混部使用说明
        • GPU虚拟化适配表
        • 单GPU容器共享多卡使用说明
        • 共享GPU场景下的镜像构建注意事项
        • 关闭节点显存共享功能注意事项
      • 队列管理
        • 逻辑队列和物理队列使用说明
        • 修改队列
        • 删除队列
        • 新建队列
      • 任务管理
        • 基于 NCCL的RDMA分布式训练示例
        • 新建AITraining任务
        • 新建PaddlePaddle任务
        • 删除任务
        • 查看任务信息
        • 新建Mxnet任务
        • 新建TensorFlow任务
        • 新建Pytorch任务
      • 数据集管理
        • 删除数据集
        • 操作数据集
        • 查看数据集
        • 新建数据集
      • AI监控大盘
        • 接入监控实例并开启采集任务
        • NVIDIA芯片资源观测
          • AI Job Scheduler组件
          • GPUManager组件
          • GPU资源池总览
          • GPU节点资源
          • GPU工作负载资源
        • 昇腾芯片资源观测
          • 昇腾节点资源
          • 昇腾资源池总览
          • 昇腾工作负载资源
      • AI 加速套件
        • 使用AIAK-Inference 加速推理业务
        • 使用AIAK-Training Pytorch版
        • AIAK 简介
        • 使用 AIAK-Training 部署分布式训练任务
    • Helm管理
      • Helm模板
      • Helm实例
    • 应用管理
      • 部署
      • 保密字典
      • 服务
      • 配置字典
      • 容器组
      • 概述
    • 镜像仓库
      • 使用容器镜像构建服务
      • 镜像仓库基本操作
    • Serverless集群
      • 在Serverless集群中使用Service
      • 产品概述
      • 创建Serverless集群
    • 工作负载
      • 设置工作负载自动水平伸缩
      • Statefulset管理
      • 使用私有镜像创建工作负载
      • Job管理
      • 查看容器组
      • CronJob管理
      • Daemonset管理
      • 免密拉取容器镜像
      • Deployment管理
    • 节点组管理
      • 节点组管理
      • 节点组介绍
      • 升级节点组
      • 添加外部已有节点
      • 自定义节点组 Kubelet 配置
      • 添加备选机型
      • 节点组节点故障检测自愈
      • 配置扩缩容策略
    • 监控日志
      • 使用Prometheus监控集群
      • CCE 事件中心
      • 集群审计仪表盘
      • CCE 集群异常事件报警
      • Java应用监控
      • 集群服务画像
      • 日志管理
      • 集群审计
      • 日志中心
        • 在容器引擎控制台配置采集规则
        • 查看集群控制面日志
        • 日志概述
        • 查看业务日志
        • 使用CRD配置采集规则
    • 网络管理
      • CCE 集群内容器访问集群外服务
      • 容器网段空间耗尽如何继续扩容(VPC-ENI模式)
      • 容器网段空间耗尽如何继续扩容(VPC网络模式)
      • CCE IP Masquerade Agent 用户指南
      • 创建VPC-ENI模式集群
      • 对等连接场景下容器流量转发配置
      • 使用Network Policy网络策略
      • CCE 支持 IPv4 和 IPv6 双栈网络
      • 在CCE集群中使用NetworkPolicy
      • 网络编排
        • 集群 Pod 子网拓扑分布(容器网络 v2)
        • 容器网络 QoS 管理
        • VPC-ENI指定子网分配IP(容器网络 v2)
      • 网络连通性
        • 容器网络通过 NAT 网关访问公网
      • 网络维护
        • CCE容器网络常见错误码对应表
      • DNS
        • DNS 原理概述
        • DNS 问题排查指南
        • CoreDNS 组件手动升级指南
    • 虚拟节点
      • 管理虚拟节点
      • 配置BCIPod
      • 配置bci-profile
    • 备份中心
      • 备份概述
      • 恢复管理
      • 备份仓库
      • 备份管理
    • 巡检与诊断
      • GPU运行环境检查
      • 集群巡检
      • 故障诊断
    • 流量接入
      • NGINX Ingress 使用配置参考
      • CCE基于nginx-ingress实现灰度发布
      • BLB Ingress Annotation说明
      • 通过CCE使用K8S_Ingress
      • 通过YAML创建LoadBalancer_Service
      • 通过CCE使用K8S_Service
      • LoadBalancer Service Annotation说明
      • 使用直连 Pod 模式 LoadBalancer Service
      • Service复用已有负载均衡BLB
      • 通过YAML创建CCE_Ingress
      • 使用 NGINX Ingress
    • 权限管理
      • 配置集群OIDC认证
      • 配置IAM标签权限策略
      • 配置IAM自定义权限策略
      • 配置IAM预置权限策略
      • 权限概述
      • 配置预置RBAC权限策略
    • 配置管理
      • Secret管理
      • Configmap管理
    • 集群管理
      • 集群快照
      • CCE 安全组
      • 查看集群
      • 创建集群
      • 操作集群
      • 升级集群Kubernetes版本
      • 通过kubectl连接集群
      • 托管集群使用说明
      • CCE 支持 GPUSharing 集群
      • CCE节点资源预留说明
      • CCE 节点 CDS 扩容
  • 服务等级协议SLA
    • CCE服务等级协议SLA(V1.0)
  • Solution-Fabric
    • Fabric解决方案
  • API参考
    • 通用说明
    • 公共头和错误返回
    • 概述
  • 常见问题
    • windows下使用kubectl
    • 自动扩缩容常见问题
    • 通过kubectl创建简单的服务
    • 业务应用如何使用负载均衡?
    • 常见问题总览
    • 集群管理常见问题
  • API_V2参考
    • 通用说明
    • Instance相关接口
    • 附录
    • Autoscaler相关接口
    • 组件管理相关接口
    • 套餐适配相关接口
    • Task相关接口
    • 公共头和错误返回
    • Network相关接口
    • 服务域名
    • Cluster相关接口
    • Kubeconfig相关接口
    • InstanceGroup相关接口
    • RBAC相关接口
    • 概述
  • 产品定价
    • 产品定价
  • Solution-Xchain
    • 超级链解决方案
  • SDK
    • Go-SDK
      • 节点组管理
      • 节点管理
      • 集群管理
      • 初始化
      • 安装SDK工具包
      • 概述
所有文档
menu
没有找到结果,请重新输入

容器引擎 CCE

  • 功能发布记录
  • 产品描述
    • 介绍
    • 优势
    • 使用限制
    • 应用场景
    • 核心概念
    • 特性
  • 开发指南
    • EFK日志采集系统部署指南
    • 创建LoadBalancer类型的Service
    • Prometheus监控系统部署指南
    • kubectl管理配置
    • 在CCE集群中使用-Network-Policy
  • 常用工具
    • 视图命令行场景示例
  • 产品公告
    • CCE 新版集群管理发布公告
    • CCE 控制台升级公告
    • Kubernetes 版本发布说明
      • CCE发布Kubernetes 1.18版本说明
      • CCE发布Kubernetes 1.30版本说明
      • CCE Kubernetes 版本更新说明
      • CCE发布Kubernetes 1.22版本说明
      • CCE发布Kubernetes 1.20版本说明
      • CCE发布Kubernetes 1.28版本说明
      • CCE发布Kubernetes 1.24版本说明
      • CCE发布Kubernetes 1.26版本说明
    • 安全漏洞修复公告
      • 漏洞CVE-2020-14386修复公告
      • 修复漏洞CVE-2021-30465公告
      • 漏洞CVE-2019-5736修复公告
      • 漏洞CVE-2025-1097、CVE-2025-1098等修复公告
      • 关于 runc 的安全问题(CVE-2024-21626)影响声明
  • 快速入门
    • 快速部署nginx应用
    • 使用CCE容器引擎流程概述
  • 典型实践
    • CCE集群网络说明及规划
    • CCE典型实践之容器网络模式选择
    • Pod异常问题排查
    • 通过 CCE Ingress 实现虚机和容器服务的统一接入
    • CCE集群使用Jenkins持续发布
    • CCE-访问公网实践
    • Linux系统配置常用参数说明
    • 用户使用自定义 CNI 插件方法
    • CCE典型实践之Guestbook搭建
    • 使用KMS对etcd数据加密
    • 添加CGroup V2节点
    • CCE容器运行时选择
    • CCE使用检查清单
    • VPC-ENI模式集群访问公网实践
    • 利用 Velero 实现将应用跨云迁移到 百度CCE
    • 使用 CNI 配置容器内网络参数
    • CCE Resource Recommender 用户文档
    • CCE集群中使用私有镜像实践
    • 云原生AI
      • 使用 CCE AITraining Operator 实现弹性容错训练
      • 部署 TensorFlow Serving 推理服务
      • GPU虚拟化之隔离性最优型的最佳实践
  • 操作指南
    • 多用户访问控制
    • 使用须知
    • 命名空间管理
      • 设置资源配额
      • 设置资源限制
      • 命名空间基本操作
    • 弹性伸缩
      • 使用 cce-autoscaling-placeholder 实现秒级弹性伸缩
      • CCE 集群节点自动伸缩
      • 容器定时水平伸缩(CronHPA)
      • 容器水平伸缩(HPA)
    • 存储管理
      • 使用云盘CDS
      • 使用并行文件存储PFS
      • 使用对象存储BOS
      • 使用并行文件存储PFS L2
      • 使用本地存储
      • 使用数据湖存储加速工具RapidFS
      • 使用文件存储CFS
      • 概述
    • 节点管理
      • 移出节点
      • kubelet容器监控只读端口风险提示
      • 管理污点
      • 设置GPU显存共享
      • 添加节点
      • 自定义Kubelet参数
      • 设置节点封锁
      • 节点排水
      • 管理节点标签
    • 组件管理
      • CCE CSI BOS Plugin 说明
      • Kube Scheduler 说明文档
      • CCE CSI PFS L2 Plugin
      • CCE NodeLocal DNSCache 说明
      • CCE Ingress NGINX Controller 说明
      • CCE RDMA Device Plugin 说明
      • CCE Node Problem Detector 说明
      • CCE Credential Controller 说明
      • Kube Controller Manager 说明
      • CCE Ingress Controller 说明
      • CCE GPU Manager 说明
      • CCE Backup Controller 说明
      • CCE QoS Agent 说明
      • CCE Descheduler 说明
      • 组件概述
      • CCE Image Accelerate 说明
      • CCE Network Plugin说明
      • Kube ApiServer 说明
      • CCE Log Operator 说明
      • CoreDNS 说明
      • CCE NPU Manager 说明
      • CCE AI Job Scheduler 说明
      • CCE LB Controller 说明
      • CCE P2P Accelerator 说明
      • CCE_Hybrid_Manager说明
      • CCE CSI PFS Plugin 说明
      • CCE Deep Learning Frameworks Operator 说明
      • CCE Node Remedier 说明
      • CCE CSI CDS Plugin 说明
      • CCE Ascend Mindx DL说明
      • CCE Calico Felix 说明
      • CCE Virtual Kubelet组件
      • CCE Fluid说明
      • CCE Onepilot 说明
      • CCE CronHPA Controller 说明
      • CCE 动态调度插件说明
    • 云原生AI
      • 云原生AI概述
      • GPU虚拟化
        • MPS 最佳实践&注意事项
        • GPU独占和共享说明
        • GPU在离线混部使用说明
        • GPU虚拟化适配表
        • 单GPU容器共享多卡使用说明
        • 共享GPU场景下的镜像构建注意事项
        • 关闭节点显存共享功能注意事项
      • 队列管理
        • 逻辑队列和物理队列使用说明
        • 修改队列
        • 删除队列
        • 新建队列
      • 任务管理
        • 基于 NCCL的RDMA分布式训练示例
        • 新建AITraining任务
        • 新建PaddlePaddle任务
        • 删除任务
        • 查看任务信息
        • 新建Mxnet任务
        • 新建TensorFlow任务
        • 新建Pytorch任务
      • 数据集管理
        • 删除数据集
        • 操作数据集
        • 查看数据集
        • 新建数据集
      • AI监控大盘
        • 接入监控实例并开启采集任务
        • NVIDIA芯片资源观测
          • AI Job Scheduler组件
          • GPUManager组件
          • GPU资源池总览
          • GPU节点资源
          • GPU工作负载资源
        • 昇腾芯片资源观测
          • 昇腾节点资源
          • 昇腾资源池总览
          • 昇腾工作负载资源
      • AI 加速套件
        • 使用AIAK-Inference 加速推理业务
        • 使用AIAK-Training Pytorch版
        • AIAK 简介
        • 使用 AIAK-Training 部署分布式训练任务
    • Helm管理
      • Helm模板
      • Helm实例
    • 应用管理
      • 部署
      • 保密字典
      • 服务
      • 配置字典
      • 容器组
      • 概述
    • 镜像仓库
      • 使用容器镜像构建服务
      • 镜像仓库基本操作
    • Serverless集群
      • 在Serverless集群中使用Service
      • 产品概述
      • 创建Serverless集群
    • 工作负载
      • 设置工作负载自动水平伸缩
      • Statefulset管理
      • 使用私有镜像创建工作负载
      • Job管理
      • 查看容器组
      • CronJob管理
      • Daemonset管理
      • 免密拉取容器镜像
      • Deployment管理
    • 节点组管理
      • 节点组管理
      • 节点组介绍
      • 升级节点组
      • 添加外部已有节点
      • 自定义节点组 Kubelet 配置
      • 添加备选机型
      • 节点组节点故障检测自愈
      • 配置扩缩容策略
    • 监控日志
      • 使用Prometheus监控集群
      • CCE 事件中心
      • 集群审计仪表盘
      • CCE 集群异常事件报警
      • Java应用监控
      • 集群服务画像
      • 日志管理
      • 集群审计
      • 日志中心
        • 在容器引擎控制台配置采集规则
        • 查看集群控制面日志
        • 日志概述
        • 查看业务日志
        • 使用CRD配置采集规则
    • 网络管理
      • CCE 集群内容器访问集群外服务
      • 容器网段空间耗尽如何继续扩容(VPC-ENI模式)
      • 容器网段空间耗尽如何继续扩容(VPC网络模式)
      • CCE IP Masquerade Agent 用户指南
      • 创建VPC-ENI模式集群
      • 对等连接场景下容器流量转发配置
      • 使用Network Policy网络策略
      • CCE 支持 IPv4 和 IPv6 双栈网络
      • 在CCE集群中使用NetworkPolicy
      • 网络编排
        • 集群 Pod 子网拓扑分布(容器网络 v2)
        • 容器网络 QoS 管理
        • VPC-ENI指定子网分配IP(容器网络 v2)
      • 网络连通性
        • 容器网络通过 NAT 网关访问公网
      • 网络维护
        • CCE容器网络常见错误码对应表
      • DNS
        • DNS 原理概述
        • DNS 问题排查指南
        • CoreDNS 组件手动升级指南
    • 虚拟节点
      • 管理虚拟节点
      • 配置BCIPod
      • 配置bci-profile
    • 备份中心
      • 备份概述
      • 恢复管理
      • 备份仓库
      • 备份管理
    • 巡检与诊断
      • GPU运行环境检查
      • 集群巡检
      • 故障诊断
    • 流量接入
      • NGINX Ingress 使用配置参考
      • CCE基于nginx-ingress实现灰度发布
      • BLB Ingress Annotation说明
      • 通过CCE使用K8S_Ingress
      • 通过YAML创建LoadBalancer_Service
      • 通过CCE使用K8S_Service
      • LoadBalancer Service Annotation说明
      • 使用直连 Pod 模式 LoadBalancer Service
      • Service复用已有负载均衡BLB
      • 通过YAML创建CCE_Ingress
      • 使用 NGINX Ingress
    • 权限管理
      • 配置集群OIDC认证
      • 配置IAM标签权限策略
      • 配置IAM自定义权限策略
      • 配置IAM预置权限策略
      • 权限概述
      • 配置预置RBAC权限策略
    • 配置管理
      • Secret管理
      • Configmap管理
    • 集群管理
      • 集群快照
      • CCE 安全组
      • 查看集群
      • 创建集群
      • 操作集群
      • 升级集群Kubernetes版本
      • 通过kubectl连接集群
      • 托管集群使用说明
      • CCE 支持 GPUSharing 集群
      • CCE节点资源预留说明
      • CCE 节点 CDS 扩容
  • 服务等级协议SLA
    • CCE服务等级协议SLA(V1.0)
  • Solution-Fabric
    • Fabric解决方案
  • API参考
    • 通用说明
    • 公共头和错误返回
    • 概述
  • 常见问题
    • windows下使用kubectl
    • 自动扩缩容常见问题
    • 通过kubectl创建简单的服务
    • 业务应用如何使用负载均衡?
    • 常见问题总览
    • 集群管理常见问题
  • API_V2参考
    • 通用说明
    • Instance相关接口
    • 附录
    • Autoscaler相关接口
    • 组件管理相关接口
    • 套餐适配相关接口
    • Task相关接口
    • 公共头和错误返回
    • Network相关接口
    • 服务域名
    • Cluster相关接口
    • Kubeconfig相关接口
    • InstanceGroup相关接口
    • RBAC相关接口
    • 概述
  • 产品定价
    • 产品定价
  • Solution-Xchain
    • 超级链解决方案
  • SDK
    • Go-SDK
      • 节点组管理
      • 节点管理
      • 集群管理
      • 初始化
      • 安装SDK工具包
      • 概述
  • 文档中心
  • arrow
  • 容器引擎CCE
  • arrow
  • 操作指南
  • arrow
  • 组件管理
  • arrow
  • CCE QoS Agent 说明
本页目录
  • 组件介绍
  • 组件功能
  • 限制说明
  • 安装组件
  • 配置节点资源水位
  • 使资源水位对节点生效
  • 配置 Pod QoS
  • 配置 CPU QoS
  • 场景一:离线任务支持多级 CPU 优先级,通过 CPU 比例划分,无抢占关系
  • 场景二:离线任务支持多级 CPU 优先级,通过 CPU 比例划分,无抢占关系
  • 场景三:部署在线 CPU 任务,sensitive 优先级实现 CPU 绑核
  • 配置网络 QoS
  • 开启网络优先级功能
  • 场景一:在线可以抢占离线带宽
  • 版本记录

CCE QoS Agent 说明

更新时间:2025-08-21

组件介绍

cce-qos-agent 基于 BaiduLinux 的能力,为容器提供基于 Kubernetes 原生 QoS 的服务质量保障、容器隔离与加固能力,同时提升资源利用率。

注意:QoS 相关能力仅支持在使用 BaiduLinux3 作为操作系统的节点上使用,若您的节点使用其他操作系统,相关能力无法生效。

组件功能

  • 配置节点资源水位,当整机资源用量超过配置的资源水位时,将触发对低优容器的压制或驱逐;
  • 容器 QoS 增强,包括如下表所示能力
功能 说明
CPU QoS 增强 支持 CPU 优先级配置,可以通过对工作负载设置优先级,保证高优先级业务在发生资源竞争时的资源供给量,并压制低优先级业务。
内存 QoS 增强 支持内存背景回收、OOMKill 优先级等,提升整体内存性能。
网络 QoS 增强 支持网络带宽优先级配置,出入方向限速等,灵活限制容器对网络的使用。

限制说明

  • 集群版本在 1.18.9 以上
  • BaiduLinux3 作为节点操作系统
  • 能够使用 kubectl 访问集群,操作步骤见:通过kubectl连接集群

安装组件

  1. 登录百度智能云官网,并进入管理控制台。
  2. 选择“产品服务 > 云原生 > 容器引擎 CCE”,单击进入容器引擎管理控制台。
  3. 单击左侧导航栏中的 集群管理 > 集群列表。
  4. 在集群列表页面中,单击目标集群名称进入集群管理页面。
  5. 在集群管理页面单击 组件管理 。
  6. 在组件管理列表中选择 CCE QoS Agent 组件单击“安装”。 install.png
  7. 在组件配置页面中完成节点资源水位配置。 config.png
  8. 点击“确定”按钮完成组件的安装。

配置节点资源水位

配置项含义如下:

  • CPU驱逐水位线:当整机CPU使用量达到销毁水位线时,驱逐全部的低优服务保障高优服务,默认值 80%;
  • CPU压制水位线:当整机CPU使用量达到压制水位线时,压制全部的低优服务保障高优服务,默认值 60%;
  • 内存整机最大水位线:当整机内存超过最大内存使用量时,驱逐低优服务保障高优服务,默认值 80%;
  • 内存低优最大水位线:当低优内存超过低优内存使用量时,驱逐低优服务保障高优服务,默认值 60%;
  • 整机最大入网流量:当整机入网流量超过最大入网流量,禁止将离线应用调度到节点;
  • 离线最大入网流量:当离线入网流量超过最大入网流量,将对已有的离线负载进行网络压制;
  • 整机最大出网流量:当整机入网流量超过最大入网流量,禁止将离线应用调度到节点;
  • 离线最大出网流量:当离线入网流量超过最大入网流量,将对已有的离线负载进行网络压制;
  • 是否开启网络带宽抢占:当整机带宽不足时,在线任务将抢占离线任务带宽,默认关闭;

使资源水位对节点生效

完成 cce-qos-agent 组件的安装后,需要为节点添加标签(label)cce.baidu.com/sla-pool="default",使资源水位对节点生效。

以节点 10.0.3.13 为例,在终端执行以下命令:

Shell
1kubectl label node 10.0.3.13 cce.baidu.com/sla-pool="default"

配置 Pod QoS

用户在安装了单机引擎之后,可以通过 Pod 的 label 扩展Pod的增强隔离加固能力。 支持的 配置项如下表:

能力 能力描述 Pod Label 参数说明 单位 默认值
CPU 优先级 配置 CPU 优先级。 cpu.priority 支持将 Pod 配置为在线、离线任务 - 无
设置memcg背景回收能力 背景回收能力:控制Pod级别的异步回收cache动作,当Pod的cache触发到高水位线(memory.high_wmark_distance)时,会开始回收cache,直到cache达到低水位线(memory.low_wmark_distance) memory.background_reclaim 是否开启内存背景回收 bool 0
memory.low_wmark_distance 内存背景回收低水位线 byte 0
memory.high_wmark_distance 内存背景回收高水位线 byte 0
设置OOM时,Pod被kill的优先级值 该功能在进行OOM操作时,会首先判定cgroup的优先级,选择低优先级的cgroup进行OOM操作,cgroup的优先级值(memory.oom_kill_prioirty)越大,优先级越低。 memory.oom_kill_priority 设置oom kill优先级,优先级越高优先杀死 int 5000
控制发生OOM时,cgroup内的进程组的kill模式 控制发生OOM时,cgroup内的进程组的kill模式:0: 不杀死进程组内所有的进程 1: 杀死进程组内所有的进程 memory.kill_mode 控制OOM kill模式,是否杀死进程组所有进程。 bool 0
设置网络优先级 设置 Pod 网络优先级 net.priority 可选值: besteffort bool 0

配置 CPU QoS

支持的 CPU 优先级及与 Kubernetes QoS 的对应关系如下:

CPU 优先级 K8S QoS 说明
sensitive Guaranteed 绑核,CPU 必须是 1000m 的整数倍
stable Guaranteed/Burstable 实现更好的资源弹性和更灵活的资源调整能力,要求至少需要填写 requests
batch BestEffort 离线任务;相对 BestEffort,CPU 使用比例是 BE 的两倍
besteffort BestEffort 离线任务

场景一:离线任务支持多级 CPU 优先级,通过 CPU 比例划分,无抢占关系

场景描述:

  1. 部署两个离线 CPU 任务,CPU 优先级分别为 batch 和 besteffort。
  2. 优先级为 batch 的任务的 CPU 运行时间约为优先级为 besteffort 任务的两倍。

操作步骤:

  1. 部署 离线 CPU 任务,以下yaml 包含两个 cpu stress 任务,分别配置优先级为 batch 和 besteffort
YAML
1apiVersion: apps/v1
2kind: Deployment
3metadata:
4  name: stress-batch
5spec:
6  selector:
7    matchLabels:
8      app: stress-batch
9  template:
10    metadata:
11      labels:
12        app: stress-batch
13        cpu.priority: batch
14    spec:
15      nodeSelector:
16        kubernetes.io/hostname: 10.0.3.13
17      containers:
18      - name: stress
19        image: registry.baidubce.com/public-tools/stress-ng:latest
20        command:
21        - "stress-ng"
22        args:
23        - --cpu
24        - "0"
25        - --cpu-method
26        - all
27        - -t
28        - 1h
29---
30apiVersion: apps/v1
31kind: Deployment
32metadata:
33  name: stress-besteffort
34spec:
35  selector:
36    matchLabels:
37      app: stress-besteffort
38  template:
39    metadata:
40      labels:
41        app: stress-besteffort
42        cpu.priority: besteffort
43    spec:
44      nodeSelector:
45        kubernetes.io/hostname: 10.0.3.13
46      containers:
47      - name: stress
48        image: registry.baidubce.com/public-tools/stress-ng:latest
49        command:
50        - "stress-ng"
51        args:
52        - --cpu
53        - "0"
54        - --cpu-method
55        - all
56        - -t
57        - 1h
  1. 部署后在 Pod 所在节点节点计算两个容器在过去 1s 的运行时间
Shell
1#!/bin/bash
2batchPodID="eccb11ba-b875-4614-ac07-2e811397239a"
3batchContainerID="6e677ceb30c28438bf32d1191d74e7fa0131124ea08fe8647950e07c7a34bef5"
4
5bePodID="8339d083-5aae-48bd-a2cf-9c91a777dc53"
6beContainerID="6c10640a79479f8d6606d3823a4666cffb225913990b6aab1bfdf8bcf3a6cf47"
7
8batch_start=`cat /sys/fs/cgroup/cpu/kubepods/besteffort/pod${batchPodID}/${batchContainerID}/cpuacct.bt_usage`
9be_start=`cat /sys/fs/cgroup/cpu/kubepods/besteffort/pod${bePodID}/${beContainerID}/cpuacct.bt_usage`
10sleep 1
11batch_end=`cat /sys/fs/cgroup/cpu/kubepods/besteffort/pod${batchPodID}/${batchContainerID}/cpuacct.bt_usage`
12be_end=`cat /sys/fs/cgroup/cpu/kubepods/besteffort/pod${bePodID}/${beContainerID}/cpuacct.bt_usage`
13
14expr "${batch_end}" - "${batch_start}"
15expr "${be_end}" - "${be_start}"

得到计算结果:

cal.png

可以看到 batch 优先级任务所占用的 CPU 时间约为 besteffort 优先级任务的两倍。

场景二:离线任务支持多级 CPU 优先级,通过 CPU 比例划分,无抢占关系

场景描述:

  1. 在 case1 的部署离线任务的基础上,部署在线任务
  2. 在线任务完成对离线任务的 CPU 抢占。

操作步骤:

  1. 部署在线 CPU 任务,优先级配置为 stable
YAML
1apiVersion: apps/v1
2kind: Deployment
3metadata:
4  name: stress-stable
5spec:
6  selector:
7    matchLabels:
8      app: stress-stable
9  template:
10    metadata:
11      labels:
12        app: stress-stable
13        cpu.priority: stable
14    spec:
15      nodeSelector:
16        kubernetes.io/hostname: 10.0.3.13
17      containers:
18      - name: stress
19        image: registry.baidubce.com/public-tools/stress-ng:latest
20        command:
21        - "stress-ng"
22        args:
23        - --cpu
24        - "0"
25        - --cpu-method
26        - all
27        - -t
28        - 1h
29        resources:
30          requests:
31            cpu: 1
32            memory: 2Gi
  1. 再次执行 case 1 中的脚本,发现离线任务几乎未执行

cal2.png

可以看到,在线任务可以实现对离线任务的绝对抢占,当整机资源不足时,将保证在线任务的运行,而离线任务将无法执行。

场景三:部署在线 CPU 任务,sensitive 优先级实现 CPU 绑核

场景描述:

  1. 部署 CPU 优先级为 sensitive 的任务,实现 cpu 绑核

操作步骤:

  1. 部署任务,配置 CPU 优先级为 sensitive
YAML
1apiVersion: apps/v1
2kind: Deployment
3metadata:
4  name: stress-sensitive
5spec:
6  selector:
7    matchLabels:
8      app: stress-sensitive
9  template:
10    metadata:
11      labels:
12        app: stress-sensitive
13        cpu.priority: sensitive
14    spec:
15      nodeSelector:
16        kubernetes.io/hostname: 10.0.3.13
17      containers:
18      - name: stress
19        image: registry.baidubce.com/public-tools/stress-ng:latest
20        command:
21        - "stress-ng"
22        args:
23        - --cpu
24        - "0"
25        - --cpu-method
26        - all
27        - -t
28        - 1h
29        resources:
30          requests:
31            cpu: 1
32            memory: 2Gi
33          limits:
34            cpu: 1
35            memory: 2Gi
  1. 通过 cgroups 查看绑核结果,在 pod 所在节点执行如下脚本
Shell
1#!/bin/bash
2sensitivePodID="f203ffd5-8618-4568-8547-836db6a906f2"
3sensitiveContainerID="2c551bfde9d0f5e9f46f049ac8acf856567bd9441dbdedac5fec1151f8a93721"
4
5cat /sys/fs/cgroup/cpuset/kubepods/pod${sensitivePodID}/${sensitiveContainerID}

得到结果:

image.png

可以看到,该容器已经绑定了 7 号 cpu。

配置网络 QoS

开启网络优先级功能

在组件中心,修改单机隔离引擎配置,开启“网络优先级功能”

image (1).png

场景一:在线可以抢占离线带宽

场景描述:

  1. 在同一节点,先后部署低网络优先级任务,和默认网络优先级任务,观察任务的带宽变化,预期低网络优先级的任务的带宽可以被抢占

操作步骤:

  1. 部署 server 服务
YAML
1 apiVersion: apps/v1
2kind: Deployment
3metadata:
4  name: net-server-1
5  labels:
6    app: net-server-1
7spec:
8  replicas: 1
9  selector:
10    matchLabels:
11      app: net-server-1
12  template:
13    metadata:
14      labels:
15        app: net-server-1
16    spec:
17      nodeSelector:
18        kubernetes.io/hostname: 10.0.3.14
19      containers:
20        - name: server
21          image: registry.baidubce.com/public-tools/iperf3:latest
22          args: [ "-s", "-p", "5201"]
23          ports:
24            - name: http
25              containerPort: 5201
26              hostPort: 5201
27              protocol: TCP
28          resources:
29            limits:
30              cpu: 4
31              memory: 2Gi
32            requests:
33              cpu: 4
34--- 
35apiVersion: v1
36kind: Service
37metadata:
38  name: net-server-1
39spec:
40  selector:
41    app: net-server-1
42  ports:
43  - port: 5201
44    targetPort: 5201
45
46--- 
47apiVersion: apps/v1
48kind: Deployment
49metadata:
50  name: net-server-2
51  labels:
52    app: net-server-2
53spec:
54  replicas: 1
55  selector:
56    matchLabels:
57      app: net-server-2
58  template:
59    metadata:
60      labels:
61        app: net-server-2
62    spec:
63      nodeSelector:
64        kubernetes.io/hostname: 10.0.3.15
65      containers:
66        - name: server
67          image: registry.baidubce.com/public-tools/iperf3:latest
68          args: [ "-s", "-p", "5201"]
69          ports:
70            - name: http
71              containerPort: 5201
72              hostPort: 5201
73              protocol: TCP
74          resources:
75            limits:
76              cpu: 4
77              memory: 2Gi
78            requests:
79              cpu: 4
80--- 
81apiVersion: v1
82kind: Service
83metadata:
84  name: net-server-2
85spec:
86  selector:
87    app: net-server-2
88  ports:
89  - port: 5201
90    targetPort: 5201
  1. 部署任务,配置网络优先级为 besteffort
YAML
1apiVersion: apps/v1
2kind: Deployment
3metadata:
4  name: offline-net-client
5  labels:
6    app: offline-net-client
7spec:
8  replicas: 1
9  selector:
10    matchLabels:
11      app: offline-net-client
12  template:
13    metadata:
14      labels:
15        app: offline-net-client
16        net.priority: besteffort
17    spec:
18      nodeSelector:
19        kubernetes.io/hostname: 10.0.3.13
20      containers:
21        - name: main
22          image: registry.baidubce.com/public-tools/iperf3:latest
23          args: [ "-c", "net-server-1.default.svc", "-p", "5201", "-b", "2000Mb" ,"-t","3600"]

观察任务带宽:

image (2).png

  1. 部署网络优先级为在线的任务,观察在线和离线任务带宽
YAML
1apiVersion: apps/v1
2kind: Deployment
3metadata:
4  name: online-net-client
5  labels:
6    app: online-net-client
7spec:
8  replicas: 1
9  selector:
10    matchLabels:
11      app: online-net-client
12  template:
13    metadata:
14      labels:
15        app: online-net-client
16    spec:
17      nodeSelector:
18        kubernetes.io/hostname: 10.0.3.13
19      containers:
20        - name: main
21          image: registry.baidubce.com/public-tools/iperf3:latest
22          args: [ "-c", "net-server-2.default.svc", "-p", "5201", "-b", "2000Mb" ,"-t","3600"]

观察在线任务带宽:

image (3).png

观察离线任务带宽:

image (4).png

可以看到,当整机带宽不足时,将优先保证在线任务使用带宽,离线任务的带宽将被抢占。

版本记录

版本号 适配集群版本 更新时间 更新内容 影响
0.1.0 v1.18+ 2023.09.13 CPU QoS 增强:支持 CPU 优先级配置,可以通过对工作负载设置优先级,保证高优先级业务在发生资源竞争时的资源供给量,并压制低优先级业务。
内存 QoS 增强:支持内存背景回收、OOMKill 优先级等,提升整体内存性能.
网络 QoS 增强:支持网络带宽优先级配置,出入方向限速等,灵活限制容器对网络的使用。
无

上一篇
CCE Backup Controller 说明
下一篇
CCE Descheduler 说明