使用HPA+Bursting插件弹性CCE容器实例到CCI
应用场景
在云容器引擎CCE服务中部署应用时,应用的流量大小时刻在进行变化,有高峰,有低谷,如果时刻保持高峰流量的节点数量,将导致资源闲置与成本浪费。通过配置HPA策略和安装CCE突发弹性引擎(对接 CCI),可以实现工作负载自动伸缩和快速使用Serverless容器资源(CCI)。CCI具有极速弹性、按需计费的特点,可以有效应对流量变化大的场景,并实现降本增效的目标。
HPA策略会持续监控应用程序的关键指标,如CPU使用率、内存使用率等,自动增加或减少Pod的数量,以适应当前应用流量大小,从而确保应用性能的稳定性和资源利用的高效性。CCE突发弹性引擎(对接 CCI)插件支持用户在短时高负载场景下,将部署在云容器引擎CCE上的无状态负载(Deployment)、有状态负载(StatefulSet)、普通任务(Job)、定时任务(CronJob)四种资源类型的容器实例(Pod)弹性调度至云容器实例CCI上,以减少集群扩容带来的消耗。
示例说明
在CCE集群中安装云原生监控插件和CCE突发弹性引擎(对接 CCI)插件后,创建工作负载并配置HPA策略和强制弹性Pod至CCI2.0策略。通过hey压测工具构造请求访问工作负载模拟应用的流量变化,观察工作负载弹性伸缩状态。
前提条件
- 已创建CCE集群并在集群中完成节点创建。
- 已使用kubectl命令行工具或CloudShell连接集群。
- CCE集群中已安装云原生监控插件,部署模式需选择“本地数据存储“,且已开启Mtrics API。
操作步骤
- 登录CCE控制台。
- 单击集群名称进入集群,单击左侧导航栏选的“插件中心“。搜索“CCE突发弹性引擎(对接 CCI)“插件,单击“安装“。

- 选择插件版本,推荐使用最新版本。规格配置,选择系统预置规格,系统会根据不同的预置规格配置插件的实例数及资源配额,具体配置值请以控制台显示为准。
- 网络互通(可选),开启后,支持CCE集群中的Pod与CCI集群中的Pod通过Kubernetes Service互通,并在插件安装时部署Proxy组件。详细功能介绍请参考网络。
- 参数配置,配置”CCI资源池默认子网”和”CCI 2.0资源池(bursting-node)扩展子网(可选)”。
- 单击左侧导航栏的“工作负载“,通过YAML创建无状态负载。YAML示例如下:
apiVersion: apps/v1 kind: Deployment metadata: labels: version: v1 name: n1 namespace: default spec: selector: matchLabels: app: n1 version: v1 template: metadata: labels: app: n1 version: v1 bursting.cci.io/burst-to-cci: 'enforce' # 配置强制弹性Pod到CCI spec: containers: - name: container-1 image: nginx:latest # 指定容器镜像。若使用“开源镜像中心”的镜像,可直接填写镜像名称;若使用SWR仓中的镜像,请在SWR中获取具体镜像地址 resources: requests: cpu: 500m memory: 1Gi limits: cpu: 500m memory: 1Gi imagePullSecrets: - name: default-secret --- - 单击左侧导航栏的“服务”,通过YAML创建服务。YAML示例如下:
apiVersion: v1 kind: Service metadata: name: n1 namespace: default labels: app: n1 version: v1 spec: ports: - name: cce-service-0 protocol: TCP # 访问Service的协议,支持TCP和UDP port: 80 # 访问Service的端口 targetPort: 80 # Service访问目标容器的端口,此端口与步骤2配置的容器中运行的应用强相关,如本例中nginx镜像默认使用80端口 selector: app: n1 version: v1 type: ClusterIP - 单击左侧导航栏的“策略”,通过YAML创建HPA策略。YAML示例如下:
kind: HorizontalPodAutoscaler apiVersion: autoscaling/v2 metadata: name: hpa-n1 namespace: default annotations: extendedhpa.metrics: '[{"type":"Resource","name":"cpu","targetType":"Utilization","targetRange":{"low":"45","high":"56"}}]' spec: scaleTargetRef: kind: Deployment name: n1 apiVersion: apps/v1 minReplicas: 1 maxReplicas: 10 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50 - 通过工具构造请求访问创建的Service,进行压测,参考命令如下,发起3000万个请求,并发300个客户端。
hey -n 30000000 -c 300 "http://$<service_ip>/"
$<service_ip>:4创建的Service的ClusterIP。

本文示例使用hey压测工具进行过压测,您也可以自定义配置其他压测工具。进行压测时,需保证配置的压测工具所在的网络环境可正常访问CCE集群。
- 观察HPA和负载状态。
压测前:


压测后:

