自动伸缩hpa

自动伸缩HPA

1. 操作场景

容器云CSK支持Pod 水平自动伸缩功能(Horizontal Pod Autoscaling,HPA),可以在容器云控制台界面快速创建HPA,HPA会根据具体指标,自动扩展、缩减Pod的数量。

2. 注意事项

云硬盘类型的数据卷不建议同时挂载给多个Pod使用,当多个Pod同时进行数据写入时,会存在数据丢失的风险。所以,建议使用云硬盘类型数据卷的工作负载将Pod数量设置为1,且不绑定自动/定时伸缩策略;
HPA 在计算目标副本数时会有一个10%的容差范围。如果在此范围内,HPA 不会调整Pod数量,更多HPA算法细节请参见 Kubernetes官方文档
缩容时,存在一个300秒的稳定窗口,即每一次缩容需要等待300秒。

3. 指标说明

指标名称 单位(控制台) 范围(控制台) target
CPU使用量 1-100000 averageValue
CPU使用率 % 1-100 averageUtilization
内存使用量 MB 1-100000 averageValue
内存使用率 % 1-100 averageUtilization

4. 创建HPA

4.1. 通过容器云控制台创建HPA

在创建工作负载过程中,开启HPA

  • 登录容器云控制台;
  • 若默认进入的集群非目标集群,可在顶部的集群切换栏,切换进入集群;
  • 在容器云控制台左侧导航栏中,选择 【工作负载】并选择工作负载类型;

  • 单击【创建】,进入【创建工作负载】页面;

  • 在扩展配置部分选择开启HPA,根据实际需求完成参数配置:

    • 名称:设置HPA的名称;
    • 触发策略:根据实际需求选择不同的度量指标;
    • 最大pod数:默认为2,最大可支持100000;
    • 最小pod数:默认为1,最大可支持100000;

  • 完成工作负载的配置后,单击创建,完成工作负载创建的同时,也会创建相应的HPA。

为已有工作负载创建HPA

  • 登录容器云控制台;
  • 若默认进入的集群非目标集群,可在顶部的集群切换栏,切换进入集群;
  • 在容器云控制台左侧导航栏中,选择 【弹性伸缩】-【自动伸缩】;

  • 单击【创建】,进入【创建自动伸缩】页面。根据实际需求,完成参数设置;

    • 名称:设置HPA的名称;
    • 命名空间:根据实际需求选择集群下的命名空间;
    • 关联工作负载:根据实际需求选择集群下的工作负载,支持无状态和有状态2种;
    • 触发策略:根据实际需求选择不同的度量指标;
    • 最大pod数:默认为2,最大可支持100000;
    • 最小pod数:默认为1,最大可支持100000;
    • 标签:输入键-值对(Key-Value),为HPA设置标签;
    • 注解:输入键-值对(Key-Value),为HPA设置注解;

  • 单击确定,完成HPA创建。

4.2. 通过YAML创建HPA

  • 登录容器云控制台;
  • 若默认进入的集群非目标集群,可在顶部的集群切换栏,切换进入集群;
  • 在容器云控制台左侧导航栏中,选择 【弹性伸缩】-【自动伸缩】;

  • 单击【YAML 创建】,完成参数设置;

    • 模板:支持使用容器云提供的系统模板或自定义模板;
    • 模板内容:选择好模板后,在“模板内容”区域可以对模板进行编辑。完成参数设置后,点击“保存模板”可将改动保存到自定义模板;

  • 单击确定,完成HPA创建。

4.3. 通过kubectl创建HPA

YAML示例:

apiVersion: "autoscaling/v2"
kind: "HorizontalPodAutoscaler"
metadata:
  name: "hpa"
  namespace: "default"
spec:
  maxReplicas: 2
  metrics:
  - resource:
      name: "cpu"
      target:
        averageValue: "1"
        type: "AverageValue"
    type: "Resource"
  minReplicas: 1
  scaleTargetRef:
    apiVersion: "apps/v1"
    kind: "Deployment"
    name: "nginx"

参考YAML示例,准备 HPA YAML 文件;
安装kubectl,并连接集群。操作详情请参见 连接集群
执行以下命令,创建 HPA YAML 文件:

kubectl  --kubeconfig  KUBECONFIG_NAME create -f HPA YAML 文件名称

例如,创建一个文件名为 my-hpa.yaml 的 HPA YAML 文件,则执行以下命令:

kubectl  --kubeconfig  KUBECONFIG_NAME create -f my-hpa.yaml

执行以下命令,验证创建是否成功:

kubectl  --kubeconfig  KUBECONFIG_NAME get hpa

返回类似以下信息,即表示创建成功。

NAME    REFERENCE        TARGETS   MINPODS    MAXPODS    REPLICAS    AGE
my-hpa  Deployment/nginx 200m/1    1          2          1           2m17s

个结果匹配 ""

    无结果匹配 ""