SAE应用的弹性规则对应于Kubernetes的HPA(HorizontalPodAutoscaler)资源类型。本文介绍如何使用kubectl-sae工具管理弹性规则,并提供相关的K8s YAML配置文件示例。
前提条件
已安装kubectl-sae工具,并配置AccessKey ID、AccessKey Secret、应用部署地域,详见安装与配置kubectl-sae工具。
管理弹性规则
kubectl-sae工具支持创建、查看、更新、删除弹性规则。
为应用创建弹性规则
编写文件名为
hpa.yaml
的文件,其中包含弹性规则的配置信息。配置文件的示例如下,各配置项的详细信息请参考K8s YAML配置项说明。apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: annotations: sae.aliyun.com/alias: test-app # 弹性策略昵称,选填 sae.aliyun.com/enabled: "true" # 是否启用该弹性策略,选填 name: metric-test-app # 固定格式:metric-${应用名} namespace: default spec: behavior: # 选填 scaleDown: # 缩容配置 policies: - periodSeconds: 15 type: Pods value: 10 stabilizationWindowSeconds: 200 scaleUp: # 扩容配置 policies: - periodSeconds: 15 type: Pods value: 5 stabilizationWindowSeconds: 100 maxReplicas: 8 metrics: - resource: name: cpu target: averageUtilization: 80 type: Utilization type: Resource - resource: name: memory target: averageUtilization: 80 type: Utilization type: Resource - pods: metric: name: tcpActiveConn target: averageValue: "100" type: AverageValue type: Pods - pods: metric: name: tcpTotalConn target: averageValue: "100" type: AverageValue type: Pods - external: metric: name: qps target: averageValue: "100" type: AverageValue type: External - external: metric: name: rt target: averageValue: 100k type: AverageValue type: External minReplicas: 1 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: test-app # 固定格式:${应用名}
在
hpa.yaml
文件所在路径执行以下命令,实现为应用创建弹性规则。kubectl-sae apply -f hpa.yaml
查看弹性规则列表
kubectl-sae get hpa -l sae.aliyun.com/app-name=${deployment-name} -n ${namespace}
# ${deployment-name}为应用的名称,如果不通过-l参数指定应用名称,则默认显示范围内所有应用绑定的HPA列表
# ${namespace}为命名空间ID,如果不通过-n参数指定命名空间,则默认使用default命名空间
输出结果字段说明如下:
字段 | 说明 |
NAME | 弹性规则名称,格式为 |
REFERENCEKIND | 关联类型。 |
REFERENCENAME | 关联应用名。 |
MINPODS | 最小实例数。 |
MAXPODS | 最大实例数。 |
CURRENTREPLICAS | 当前实例数。 |
DESIREDREPLICAS | 期望实例数。 |
ENABLED | 弹性规则是否启用。 |
查看弹性规则详情
kubectl-sae工具支持使用get
或describe
命令查看弹性规则详情。返回结果中包含弹性规则的配置项,详情请参考K8s YAML配置项说明。
通过get命令查看弹性规则详情
kubectl-sae get hpa ${hpa-name} -o {yaml | json} -n ${namespace}
# ${hpa-name}为HPA名称
# -o参数指定返回结果的格式
# ${namespace}为命名空间ID,如果不通过-n参数指定命名空间,则默认使用default命名空间
通过describe命令查看弹性规则详情
kubectl-sae describe hpa ${hpa-name} -n ${namespace}
# ${hpa-name}为HPA名称
# ${namespace}为命名空间ID,如果不通过-n参数指定命名空间,则默认使用default命名空间
更新弹性规则
kubectl-sae工具支持使用edit
或apply
命令更新弹性规则。
通过edit命令在线编辑弹性规则配置信息
执行以下命令,将会以YAML文件的形式打开指定弹性规则的配置信息。
kubectl-sae edit hpa ${hpa-name} -n ${namespace} # ${hpa-name}为HPA名称 # ${namespace}为命名空间ID,如果不通过-n参数指定命名空间,则默认使用default命名空间
在打开的YAML文件中按需修改配置信息,保存并关闭文件,等待配置信息变更完成。
通过apply命令实现按照YAML配置文件更新弹性规则
修改已有的弹性规则的配置文件hpa.yaml
。在配置文件所在路径执行以下命令,实现弹性规则配置信息的变更。
kubectl-sae apply -f hpa.yaml
删除弹性规则
执行以下命令,解绑指定的弹性规则。
kubectl-sae delete hpa ${hpa-name} -n ${namespace}
# ${hpa-name}为HPA名称
# ${namespace}为命名空间ID,如果不通过-n参数指定命名空间,则默认使用default命名空间
K8s YAML配置项说明
SAE应用的弹性规则对应于Kubernetes的HPA(HorizontalPodAutoscaler)资源类型。相关的K8s YAML配置项说明详见下表。
配置项 | 说明 |
metadata.name | 弹性规则名称。使用固定格式 创建时必须指定此配置项。 更新时不支持此配置项。 |
metadata.namespace | 弹性规则所在的命名空间。 更新时不支持此配置项。 |
metadata.annotations: sae.aliyun.com/alias | 弹性规则昵称。 更新时不支持此配置项。 |
metadata.annotations: sae.aliyun.com/enabled | 弹性规则是否启用。取值如下:
|
metadata.uid | 弹性规则名称。使用固定格式 更新时不支持此配置项。 |
metadata.labels | 使用固定格式如下:
更新时不支持此配置项。 |
spec.behavior.scaleDown.policies[i] | 如果需要配置HPA缩容步长,示例如下:
创建时此配置项为可选项。 |
spec.behavior.scaleUp.policies[i] | 如果需要配置HPA扩容步长,示例如下:
创建时此配置项为可选项。 |
spec.maxReplicas | 最大实例数。 |
spec.minReplicas | 最小实例数。 |
spec.scaleTargetRef | 使用固定格式如下:
创建时必须指定此配置项。 更新时不支持此配置项。 |