更新时间:2025-08-12 GMT+08:00

调度负载到CCI 2.0

对于使用CCE集群和CCI的使用场景,用户可以按需将工作负载调度到CCE集群节点或者对接CCI的虚拟节点,本文详细介绍如何将CCE集群的工作负载调度到CCI 2.0上。

bursting插件当前提供了以下方式管理CCE集群的pod,使其能够调度到CCI 2.0:

约束与限制

  • 当前只有负载的原生标签能够被ScheduleProfile匹配,使负载能够被ScheduleProfile管理,将CCE集群的Pod调度到CCI 2.0。例如通过ExtensionProfile加到负载上的标签不能够被ScheduleProfile匹配,因此不会被ScheduleProfile管理调度功能。
  • 通过配置labels控制pod调度到CCI 2.0的方式,需要在创建工作负载前添加label,若对已创建的工作负载进行追加label操作,存量工作负载对应的pod不会更新,可选择该工作负载,单击“更多 -> 重新部署”实现更新。

前提条件

  • 插件版本:已安装CCE突发弹性引擎(对接 CCI)且插件,如果使用配置profile控制pod调度到CCI的方式请安装CCE突发弹性引擎(对接 CCI)插件版本为1.3.19及以上版本。
  • 集群类型:如果使用配置profile控制pod调度到CCI方式仅支持VPC网络模式的CCE Standard集群和CCE Turbo集群。

调度策略

CCE集群工作负载弹性调度到CCI 2.0策略有以下几种:

调度策略

策略图解

适用场景

强制调度策略(enforce)

CCE工作负载强制弹性到CCI 2.0。

自动调度策略(auto)

根据用户集群调度器实际打分决定是否弹性到CCI 2.0。

本地优先调度策略(localPrefer)

工作负载优先调度到CCE集群,集群资源不足时工作负载弹性到CCI 2.0。

不开启(off)

工作负载不会弹性到CCI 2.0。

方法一:通过配置labels控制pod调度到CCI

您可以通过控制台或YAML配置labels控制pod调度到CCI。

通过控制台配置

  1. 登录CCE控制台,单击集群名称,进入概览页面。
  2. 选择“工作负载”,单击“创建工作负载”。
  3. 在基本信息中“弹性至CCI”选择“不开启”以外的任意策略。

    • 本地优先调度:Pod优先调度至CCE节点,当CCE节点资源不足时将Pod弹性至CCI。
    • 强制调度:所有Pod均会弹性至CCI。

  4. 勾选相关的CCI资源池。

    • CCI 2.0资源池(bursting-node):新一代Serverless容器资源池。
    • CCI 1.0资源池(virtual-kubelet):存量Serverless容器资源池,即将日落。

      在CCE集群控制台(console)创建工作负载时,CCI弹性承载支持勾选“CCI 2.0资源池(bursting-node)”或者“CCI 1.0资源池(virtual-kubelet)”,如果使用CCI 1.0请勾选“virtual-kubelet”,如果使用CCI 2.0请勾选“bursting-node”。

  5. CCE工作负载具体操作步骤详情请参见创建工作负载,完成后单击“确定”即可。

通过YAML文件配置

  1. 登录CCE控制台,单击集群名称,进入概览页面。
  2. 选择“工作负载”,单击“YAML创建”。
  3. 在工作负载的yaml文件中添加virtual-kubelet.io/burst-to-cci标签。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test
      namespace: default
      labels:
        bursting.cci.io/burst-to-cci: 'auto'    # 弹性到CCI
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: test
      template:
        metadata:
          labels:
            app: test
        spec:
          containers:
            - image: 'nginx:perl'
              name: container-0
              resources:
                requests:
                  cpu: 250m
                  memory: 512Mi
                limits:
                  cpu: 250m
                  memory: 512Mi
              volumeMounts: []
          imagePullSecrets:
            - name: default-secret
    表1 关键参数说明

    参数

    类型

    描述

    bursting.cci.io/burst-to-cci

    String

    表示CCE集群工作负载弹性调度到CCI策略,取值如下:
    • enforce,CCE工作负载强制弹性到CCI 2.0。
    • auto,根据用户集群调度器实际打分决定是否弹性到CCI 2.0。
    • localPrefer,工作负载优先调度到CCE集群,集群资源不足时工作负载弹性到CCI 2.0。
    • off,工作负载不会弹性到CCI 2.0。

  1. 完成后单击“确定”。

方法二:通过配置profile控制pod调度到CCI

您可以通过控制台或YAML配置profile控制pod调度到CCI。

通过控制台配置

  1. 登录CCE控制台,单击集群名称,进入概览页面。
  2. 选择“策略 > CCI弹性承载策略”。
  3. 单击“创建CCI弹性承载策略”,并填写相关信息。

    表2 创建CCI弹性承载策略

    参数

    参数说明

    策略名称

    输入策略名称。

    命名空间

    选择弹性策略生效的命名空间。您可选择命名空间或创建命名空间,创建命名空间操作步骤详情请参见创建命名空间

    关联负载

    填写键值或引用负载标签。

    调度策略

    选择调度策略。

    • 本地优先调度:Pod优先调度至CCE节点,当CCE节点资源不足时将Pod弹性至CCI。
    • 强制调度:所有Pod均会弹性至CCI。

    分配策略

    • 本地:设置本地CCE集群。
    • CCI:设置CCI上运行的“最大实例数”。

    最大实例数

    设置“本地”或“CCI”运行的最大实例数。

    本地缩容优先级

    取值范围[-100, 100],数值越大越先缩容。

    CCI缩容优先级

    取值范围[-100, 100],数值越大越先缩容。

    CCI资源池

    • CCI 2.0资源池(bursting-node):新一代Serverless容器资源池。
    • CCI 1.0资源池(virtual-kubelet):存量Serverless容器资源池,即将日落。

  4. 单击“确定”。
  1. 选择“工作负载”,单击并创建工作负载,其中“高级配置 > 标签与注解”中添加Pod标签,其中键值与3创建关联负载中的键值需保持一致,其他操作步骤请参考创建工作负载
  2. 完成后单击“创建工作负载”即可。

通过YAML配置

  1. 登录CCE控制台,单击集群名称,进入概览页面。
  2. 选择“策略 > CCI弹性承载策略”。
  3. 单击“YAML创建”,创建profile对象。

    示例一:限制调度到CCE集群最大负载数,配置local maxNum和scaleDownPriority的profile模板如下:
    apiVersion: scheduling.cci.io/v2
    kind: ScheduleProfile
    metadata:
      name: test-local-profile
      namespace: default
    spec:
      objectLabels:
        matchLabels:
          app: nginx
      strategy: localPrefer
      virtualNodes:
        - type: bursting-node
      location:
        local: 
          maxNum: 20 # 当前暂不支持local/cci同时配置maxNum
          scaleDownPriority: 2
        cci: 
          scaleDownPriority: 10
    示例二:限制CCI集群最大负载数,配置cci maxNum和scaleDownPriority的profile的模板如下:
    apiVersion: scheduling.cci.io/v2
    kind: ScheduleProfile
    metadata:
      name: test-cci-profile
      namespace: default
    spec:
      objectLabels:
        matchLabels:
          app: nginx
      strategy: localPrefer
      virtualNodes:
        - type: bursting-node
      location:
        local: {}
        cci:
          maxNum: 20 # 当前暂不支持local/cci同时配置maxNum
          scaleDownPriority: 10
    表3 关键参数说明

    参数

    类型

    描述

    strategy

    String

    表示CCE集群工作负载弹性调度到CCI 2.0策略,取值如下:
    • enforce,CCE工作负载强制弹性到CCI 2.0。
    • auto,根据用户集群调度器实际打分决定是否弹性到CCI 2.0。
    • localPrefer,工作负载优先调度到CCE集群,集群资源不足时工作负载弹性到CCI 2.0。

    maxNum

    int

    表示pod最大数量配置。

    取值范围[0~int32]。

    scaleDownPriority

    int

    表示缩容优先级配置,数值越大所关联的pod越先缩容。

    取值范围[-100, 100]。

    • location配置local字段(CCE侧)和cci字段(CCI侧)控制pod数量和缩容优先级。
    • local字段和cci字段不可以同时设置maxNum。
    • 缩容优先级为非必填项参数,如果不配置缩容优先级,默认值将为空。

  1. 单击“确定”。
  2. 创建无状态负载,使用selector方式选择含有“app:nginx”的pod,关联上文创建的profile。

    kind: Deployment
    apiVersion: apps/v1
    metadata:
      name: nginx
    spec:
      replicas: 10
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
            - name: container-1
              image: nginx:latest
              imagePullPolicy: IfNotPresent
              resources:
                requests:
                  cpu: 250m
                  memory: 512Mi
                limits:
                  cpu: 250m
                  memory: 512Mi
          imagePullSecrets:
            - name: default-secret
    表4 特殊场景使用说明

    特殊使用场景

    使用说明

    pod同时使用label和profile控制调度CCI 2.0

    使用label控制调度CCI 2.0的方式优先级高于使用profile控制调度CCI 2.0的方式。

    例如label中策略为off,profile的策略为enforce,最终pod不会调度到CCI 2.0。

    pod同时被多个profile关联

    pod有且仅有一个关联profile。当pod被多个profile关联,根据profile匹配pod的label的数量,选出最大关联profile,存在多个时,选择字典序小的profile关联。

    pod最终被profileA关联

  3. 单击“确定”。