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

多虚拟节点配置

功能说明

  • 支持在集群中存在1个全局虚拟节点和多个AZ级虚拟节点,调度到全局节点上的Pod在CCI侧会在所有支持的可用区中随机调度,调度到AZ级虚拟节点上的Pod在CCI侧只会被调度到对应的一个AZ中。如果您不想要CCI侧随机调度,您需要手动将全局级别的虚拟节点(即bursting-node节点)设为不可调度状态。
  • AZ级虚拟节点具有`failure-domain.beta.kubernetes.io/zone`和`topology.kubernetes.io/zone`两个Label,值为AZ名,可让Pod根据该节点Label来调度。
  • 全局虚拟节点默认存在,不可删除,AZ级虚拟节点可以根据configMap配置动态增减。
  • 支持配置节点的可调度CPU、Memory资源(capacity、allocatable)。
  • 自插件1.5.29版本起,CCI服务会在AZ故障时将对应的虚拟节点设置为不可调度,租户可以查看虚拟节点的status.conditions信息感知对应AZ是否故障以及故障原因。当CCI将虚拟节点设置为不可调度时,表示租户的存量业务可能受损,新业务不应继续往对应的虚拟节点调度。

约束与限制

  • 不带“.”的键,键的名称即为AZ名(不能配置为“global”,global意为全局节点),其值配置为"true"表示启用该AZ对应的虚拟节点。
  • 带“.”的键,第一个“.”之前为AZ名,”.”之后为节点参数,当前支持“cpu”、“memory”,值与k8s resource规则一致(支持k、Mi、Gi等单位)。“cpu”、“memory”为可选配置,不配置则会为较大的默认值(cpu:200k,memory:1600000Gi)。
  • 键只能为小写,且需要满足RFC 1123 subdomain格式(同节点名规则),AZ名最长支持47个字符。
  • AZ级虚拟节点的数量最多支持20个。
  • Bursting检测AZ故障周期默认是5分钟,用户可以通过设置resource-syncer的启动参数'--az-status-sync-period'参数自行决定检测周期,最小为1min。

配置样例

在kube-system命名空间下配置如下ConfigMap

apiVersion: v1
kind: ConfigMap
metadata:
  name: bursting-node
  namespace: kube-system
data:
  global.cpu: 2k           # global代表全局虚拟节点,全局虚拟节点默认创建,不可删除,可选配置节点的可用cpu、memory资源,不配置则为较大的默认值(cpu:200k,memory:1600000Gi)
  global.memory: 4000Gi
  region-a: "true"      # 如添加了键等于AZ名的配置项,且值为"true",则会自动创建出对应AZ的虚拟节点
  region-a.cpu: 5k      # cpu、memory为可选配置,不配置则为较大的默认值(cpu:200k,memory:1600000Gi)
  region-a.memory: 8000Gi
  region-b: "true"

如上配置则集群中预期存在3个节点

  • bursting-node
  • bursting-node-region-a
  • bursting-node-region-b