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

伸缩负载

本节主要讲解工作负载弹性伸缩和手动伸缩的配置方式。请根据实际业务选择。

  • 弹性伸缩:支持告警策略。配置完成后可基于资源变化自动触发实例的增减。
  • 手动伸缩:配置完成后立即触发实例的增减。

约束与限制

  • 当前仅支持无状态负载弹性伸缩。
  • CCI 2.0当前仅支持在土耳其-伊斯坦布尔、非洲-约翰内斯堡、亚太-新加坡和中东-利雅得局点使用弹性伸缩。

弹性伸缩

  • 当配置spec.metrics.resource.target.type为Utilization时,您需要在创建工作负载时指定资源的requests值。
  • 当配置spec.metrics.resource.target.type为Utilization时,其数值的计算规则为:资源使用率 = 资源使用量 / 用户实际可使用的容器组规格。您可参考容器组规格的计算方法来确认您的容器组实际规格。

您可以根据业务需求自行定义伸缩策略,包括弹性指标、阈值以及步长等,以降低人为反复调整资源以应对业务变化和高峰压力的工作量,帮助您节约资源和人力成本。当前支持一种弹性伸缩策略:

告警策略:支持根据CPU/内存的使用率,进行工作负载的自动伸缩。工作负载创建完成后即可设置,在CPU/内存超过或少于一定值时,自动增减实例。

  • 告警策略:支持根据CPU/内存的使用率,进行工作负载的自动伸缩。
    1. 登录云容器实例 CCI2.0控制台。
    2. 在左侧导航栏中选择“负载管理 > 无状态负载”,单击工作负载名称进入负载详情。
    3. 在“负载详情”中,单击“弹性伸缩”,单击“YAML创建”配置弹性伸缩策略。

      弹性伸缩策略文件格式说明

      • hpa.yaml资源描述
        kind: HorizontalPodAutoscaler
        apiVersion: cci/v2
        metadata:
          name: nginx              # HPA的名称    
          namespace: test          # HPA所在的命名空间
        spec:
          scaleTargetRef:         # 引用进行自动伸缩的目标资源
            kind: Deployment      # 目标资源类型,例Deployment 
            name: nginx           # 目标资源名称   
            apiVersion: cci/v2    # 目标资源版本  
          minReplicas: 1          # HPA伸缩的最小副本数
          maxReplicas: 5          # HPA伸缩的最大副本数
          metrics:
            - type: Resource                 # 使用资源指标
              resource:
                name: memory                 # 资源名称,例如cpu或memory    
                target:
                  type: Utilization          # 指标类型,可以是Utilization(百分比)或AverageValue(绝对值)
                  averageUtilization: 50     # 资源使用率,例当CPU使用率达到50%时触发扩容
          behavior:
            scaleUp:
              stabilizationWindowSeconds: 30  # 扩容后稳定时间,单位为秒
              policies:
              - type: Pods           #指定扩缩容的Pods数量
                value: 1
                periodSeconds: 30  # 每 30 秒检查一次
            scaleDown:
              stabilizationWindowSeconds: 30  # 缩容后稳定时间,单位为秒
              policies:
              - type: Percent      #按照现有Pods的百分比来扩缩容
                value: 50
                periodSeconds: 30  # 每 30 秒检查一次
      • hpa.json资源描述
        {
        	"kind": "HorizontalPodAutoscaler",
        	"apiVersion": "cci/v2",
        	"metadata": {
        		"name": "nginx",             # HPA的名称
        		"namespace": "test"          # HPA所在的命名空间
        	},
        	"spec": {
        		"scaleTargetRef": {         # 引用进行自动伸缩的目标资源
        			"kind": "Deployment",        # 目标资源类型,例Deployment
        			"name": "nginx",             # 目标资源名称
        			"apiVersion": "cci/v2"       # 目标资源版本
        		},
        		"minReplicas": 1,             # HPA伸缩的最小副本数
        		"maxReplicas": 5,             # HPA伸缩的最大副本数
        		"metrics": [
        			{
        				"type": "Resource",             # 使用资源指标
        				"resource": {
        					"name": "memory",       # 资源名称,例如cpu或memory
        					"target": {
        						"type": "Utilization",           # 指标类型,可以是Utilization(百分比)或AverageValue(绝对值)
        						"averageUtilization": 50         # 资源使用率,例当CPU使用率达到50%时触发扩容  
        					}
        				}
        			}
        		],
        		"behavior": {
        			"scaleUp": {
        				"stabilizationWindowSeconds": 30,
        				"policies": [
        					{
        						"type": "Pods",
        						"value": 1,
        						"periodSeconds": 30
        					}
        				]
        			},
        			"scaleDown": {
        				"stabilizationWindowSeconds": 30,
        				"policies": [
        					{
        						"type": "Percent",
        						"value": 50,
        						"periodSeconds": 30
        					}
        				]
        			}
        		}
        	}
        }
    4. 单击“确定”
      可看到弹性伸缩策略。
      图1 弹性伸缩策略

      待到触发条件发生时,弹性伸缩策略会自动启动。

手动伸缩

  1. 登录云容器实例 CCI2.0控制台。
  2. 在左侧导航栏中选择“负载管理 > 无状态负载”,单击工作负载名称右侧“YAML编辑”。
  3. 修改YAML文档中spec.replicas数量,例如修改为“3”,单击“确定”后实例伸缩操作即可生效。
  4. “Pod列表”处,可查看到新的实例在创建中,待状态为运行中时,表示已成功完成实例伸缩操作。

    图2 手动伸缩