自动伸缩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。
为已有工作负载创建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