基于AI CLI和Skill实现CCE弹性至CCI 2.0
CCE突发弹性引擎(对接CCI)是一种虚拟kubelet,将Kubernetes API扩展到无服务器容器平台CCI,支持在短时高负载场景下将CCE工作负载弹性创建到CCI 2.0服务上。本文介绍如何通过AI CLI工具加载cce-cci-bursting-deployer,以一条提示词完成从集群预检到弹性验证的全流程配置。
约束与限制
环境与功能限制
- 仅支持VPC网络模式的CCE Standard集群和CCE Turbo集群。
- 集群所在子网不能与10.247.0.0/16重叠,否则会与CCI命名空间下的Service网段冲突。
- 暂不支持守护进程集(DaemonSet)。
- 安装bursting插件后会在CCI服务新建一个名为“bursting-”+“集群ID”的命名空间,该命名空间完全由bursting插件管理,不建议直接在CCI服务使用该命名空间。
- 具体Kubernetes版本与限制请参见CCE 突发弹性引擎(对接 CCI)插件功能概览。
IAM权限要求
| API Action | 权限 | 用途 |
|---|---|---|
cce:cluster:get | 获取集群详情 | 读取集群网络规格(VPC、子网、ENI) |
cce:addon:list | 列出插件 | 检查virtual-kubelet安装状态 |
cce:addon:create | 创建插件 | 安装virtual-kubelet插件 |
cce:addon:update | 更新插件 | 配置bursting参数 |
vpcep:endpoint:create | 创建 VPCEP | 创建SWR/OBS接口终端节点 |
vpcep:endpoint:list | 列出 VPCEP | 检查已有终端节点 |
vpcep:service:list | 列出 VPCEP 服务 | 发现公共服务详情 |
vpc:subnet:list | 列出子网 | 验证子网ID |
vpc:routetable:list | 列出路由表 | 查找OBS网关路由表 ID |
前提条件
- 使用插件前需要在CCI控制台对CCI服务进行授权。
- 如果使用CCI 2.0服务对接CCE突发弹性引擎,请先购买云服务VPCEP,具体操作步骤请参见环境设置。
- 已安装AI CLI工具并配置华为云凭证环境变量HUAWEI_AK、HUAWEI_SK、HUAWEI_PROJECT_ID。
- 已创建VPC网络模式的CCE Standard集群或CCE Turbo集群,且Kubernetes为1.21及以上版本。
- 已获取OBS VPCEP服务名。OBS终端节点需要精确的obs_endpoint_service_name,该值需要通过华为云工单获取,不能从类似区域的公共服务名推断。如果未提前提供该值,配置流程将在VPCEP创建阶段中断,等待用户补充后才能继续。请在开始配置前通过工单获取该信息并记录,避免流程中断。
操作流程
步骤一:创建CCE Turbo集群
创建一个Turbo集群,记录集群 ID 和所在区域。如果已有符合条件的集群,可跳过此步骤。


步骤二:通过 AI CLI 启动弹性配置
cce-cci-bursting-deployer采用预览优先设计:读操作(precheck、verify、discover、diagnose)可立即执行,写操作(VPCEP 创建、插件安装、工作负载部署)先返回预览方案,用户确认后再执行。
在AI CLI中输入以下提示词即可启动全流程:
我的CCE集群(集群ID:xxx,区域:cn-north-4)需要启用到CCI 2.0的弹性能力, 请按完整流程执行:precheck → VPCEP → 插件安装 → 冒烟部署 → 验证。 每个写操作先预览,我确认后再执行。

Skill会按以下顺序自动推进,每步涉及写操作时暂停等待确认:
- 集群预检(precheck)
调用huawei_precheck_cce_cci_bursting,自动解析集群网络拓扑、区分cci_subnet_id(Neutron UUID)和vpcep_subnet_id(VPC UUID)的子网角色、检查virtual-kubelet插件状态、执行NodeCheck检查物理节点addon headroom。
- 节点容量检查(NodeCheck)
如果precheck报告物理节点资源不足,Skill会调用huawei_check_cce_cci_node_capacity查看详细容量信息,并预览节点池扩容方案,用户确认后执行扩容。
- VPCEP终端节点创建
调用huawei_ensure_cce_cci_vpcep,自动发现并创建SWR和OBS兼容的接口终端节点。已存在的VPCEP自动复用,不会重复创建。
OBS终端节点需要精确的obs_endpoint_service_name,请通过华为云工单获取,不要猜测类似区域的公共服务名。如果未提前获取该值,Skill会在此步骤中断并提示用户补充。补充obs_endpoint_service_name后,Skill会继续完成OBS VPCEP终端节点创建,并恢复后续流程。

- 插件安装
调用huawei_setup_cce_cci_bursting,确认VPCEP依赖就绪后安装或更新virtual-kubelet插件。自动解析并写入区域project ID。该操作幂等:已有插件仅更新配置,不会卸载重装。

- 弹性就绪验证
调用huawei_verify_cce_cci_bursting,检查virtual-kubelet插件状态和虚拟节点(bursting-node)是否Ready。如果验证失败,Skill会调用huawei_diagnose_cce_cci_bursting_addon返回结构化诊断报告。
- 冒烟测试部署
调用huawei_discover_cce_cci_smoke_images发现租户自有SWR基础版镜像,然后调用huawei_deploy_cce_cci_smoke_workload创建Deployment。该Deployment自动添加bursting.cci.io/burst-to-cci: enforce标签强制调度到 CCI,不指定image参数时自动选用发现的租户镜像。

- 最终验证
再次调用huawei_verify_cce_cci_bursting,确认所有Pod在CCI虚拟节点上达到Running状态,并在CCE控制台可见。

步骤三:配置ScheduleProfile调度策略
弹性基础配置完成后,可通过创建ScheduleProfile控制工作负载调度行为。
| 调度策略 | 说明 | 适用场景 |
|---|---|---|
| localPrefer | 优先调度到CCE,资源不足时弹性到CCI | 日常弹性扩容 |
| enforce | 强制调度到CCI | 测试验证、CI/CD临时任务 |
| auto | 由调度器打分决定是否弹性到CCI | 灵活调度 |
在AI CLI中输入以下提示词创建ScheduleProfile:
请帮我创建一个 ScheduleProfile,命名空间 default, 匹配标签 app=nginx,策略为 localPrefer, 本地最大实例数 20,CCI 缩容优先级 10。

label策略优先级高于ScheduleProfile。如果Pod同时有bursting.cci.io/burst-to-cci: off标签和enforce profile,Pod不会被调度到CCI。
至此,CCE到CCI 2.0的弹性配置与调度策略全部完成。

常见问题与诊断方式
当弹性配置过程中遇到问题,可在AI CLI中直接描述现象,Skill会调用相应诊断工具返回结构化报告。
| 问题现象 | 诊断提示词 |
|---|---|
| CCI Pod ImagePullBackOff或镜像拉取超时 | CCI Pod拉镜像失败,请诊断 |
| 虚拟节点不Ready | 虚拟节点不Ready,请诊断addon |
| addon Pod Pending或反复重启 | addon Pod Pending,帮我检查节点容量 |
| addon日志报region mismatch | addon日志报region不匹配,请诊断 |
| addon日志报IAM denied或project ID missing | addon报IAM denied,请诊断 |
| OBS网关节点failed,VPCEP创建失败 | OBS VPCEP创建失败,请使用我通过华为云工单获取的服务名:<实际的obs_endpoint_service_name>重试 |