文档首页/ 云容器实例 CCI/ 用户指南/ 通过CCE使用CCI/ 配置ClusterExtensionProfile或ExtensionProfile
更新时间:2025-08-12 GMT+08:00

配置ClusterExtensionProfile或ExtensionProfile

对于将工作负载调度到CCI 2.0的场景,用户可以通过配置ClusterExtensionProfileExtensionProfile对象来调度到CCI 2.0的Pod,灵活使用Cluster级别的ClusterExtensionProfile,Namespaced级别的ExtensionProfile对调度到CCI 2.0的pod进行配置,从而减少对业务YAML的修改。

配置ClusterExtensionProfile

  1. 生成YAML文件。

    YAML示例:
    apiVersion: bursting.cci.io/v1
    kind: ClusterExtensionProfile
    metadata:
      name: test-cluster-profile
    spec:
      actions:
        annotations:
          annotation1: value1
        hostPathReplacement:
        - emptyDir:
            sizeLimit: 10Gi
          name: volume1
          policyType: replaceByEmptyDir
        labels:
          label1: value1
      namespaceLabels:
        matchLabels:
          key2: value2
      policy: override

  1. 使用以下命令创建配置。

    kubectl apply -f <test-cluster-profile>     #所创建的YAML文件名,替换为实际值

  2. (可选)使用以下命令查询是否配置成功。

    kubectl get cextp

配置ExtensionProfile

  1. 生成YAML文件。

    YAML示例:
    apiVersion: bursting.cci.io/v1
    kind: ExtensionProfile
    metadata:
      name: test-profile
    spec:
      actions:
        annotations:
          annotation1: value1
        hostPathReplacement:
        - emptyDir:
            sizeLimit: 10Gi
          name: volume1
          policyType: replaceByEmptyDir
        labels:
          label1: value1
      namespaceLabels:
        matchLabels:
          key2: value2
      policy: override

  2. 使用以下命令创建配置。

    kubectl apply -f <test-profile>     #所创建的YAML文件名,替换为实际值

  3. (可选)使用以下命令查询是否配置成功。

    kubectl get extp

spec配置说明

表1 spec参数说明

主要参数

参数说明

policy

支持配置策略为addOnly或override,如果某项配置与Pod原有定义冲突,配置为addOnly不会覆盖Pod原有定义,配置为override会覆盖Pod原有定义。默认配置为addOnly。

namespaceLabels字段

用于根据命名空间的Label筛选命名空间。

objectLabels字段

用于根据Pod的Label筛选Pod。

注意:

matchLabels和matchExpressions的用法和匹配策略可参考K8S文档官方文档

actions参数说明:

表2 actions主要参数说明:

主要参数

参数说明

annotations

用于给Pod追加Annotations。

labels

用于给Pod追加Labels。

imageReplacement

用于给Pod添加镜像地址转换策略

hostPathReplacement

用于给Pod添加Hostpath卷转换策略

evictions

用于配置Pod磁盘压力驱逐策略。

podSidecars

用于给Pod添加sidecar

profile生效规则

  • 仅会在Pod创建时对新建的Pod生效,不会修改已存在的Pod。
  • 一个Pod最多仅会生效一个ClusterExtensionProfile和一个ExtensionProfile,若两种类型的profile都存在匹配上的,会先生效ClusterExtensionProfile,再生效ExtensionProfile。
  • 若Pod所在Namespace的Labels能被多个ClusterExtensionProfile匹配,仅会生效一个最精确匹配的profile。
  • 若Pod的Labels能被多个ExtensionProfile匹配,仅会生效一个最精确匹配的一个profile。
  • 最精确匹配的定义:
    • profile的objectLabels或namespaceLabels中所有matchLabels和matchExpression的数量之和大的更精确。
    • 数量一样的选择profile name字母序最小的。

支持磁盘压力后Pod驱逐

在未使用镜像快照的场景下,当节点磁盘空间小于100MiB时,会为Pod上报NodeFsDiskPressure的Condition;在使用镜像快照的场景下,当节点临时存储磁盘空间小于100MiB时或容器镜像磁盘空间小于100MiB时,会分别上报NodeFsDiskPressure或ImageFsDiskPressure的Condition。当节点临时存储磁盘空大于100MiB时或容器镜像磁盘空间大于100MiB时,对应的Condition会被移除。

当上述磁盘空间不足的情况发生时,默认情况下,系统不会做任何处理,可能会影响业务运行。基于Kubernetes的驱逐和调度机制,通过对指定的ClusterExtensionProfile或ExtensionProfile配置驱逐策略,实现自动驱逐Pod。

一般情况下,业务通过Deployment的方式部署。如果被驱逐的Pod由Deployment管理,Deployment会自动创建新的Pod。

在对应的ClusterExtensionProfile或ExtensionProfile增加内容如下,实现配置Pod驱逐策略:
  actions:    
    evictions:      
      - type: "Hard"        
        signal: "DiskPressure"
  • 方式一:通过ClusterExtensionProfile配置指定命名空间标签的Pod驱逐策略
    apiVersion: bursting.cci.io/v1
    kind: ClusterExtensionProfile
    metadata:  
      name: eviction-cluster-profile
    spec:  
      actions:    
        evictions:      
          - type: "Hard"        
            signal: "DiskPressure"  
      namespaceLabels:    
        matchLabels:      
            key: value
  • 方式二:通过ExtensionProfile配置在特定命名空间下的指定Label标识的Pod驱逐策略
    apiVersion: bursting.cci.io/v1
    kind: ExtensionProfile
    metadata:  
      name: eviction-cluster-profile
      namespace: default
    spec:  
      actions:    
        evictions:      
          - type: "Hard"        
            signal: "DiskPressure"  
      objectLabels:
        matchExpressions:
        - key: key2
          operator: In
          values:
          - v2
          - v3
        - key: key3
          operator: Exists
        matchLabels:
          key1: value1
      policy: addOnly