AKS HPA 设置可配置属性

AKS HPA setting configurable properties

我们使用的是 AKS 1.19.11 版本,想知道我们是否可以在 AKS 中启用可配置的缩放行为,如 Horizontal Pod Autoscaler

如果是,则当前使用的 hpa 设置为 apiversion: autoscaling/v1。是否可以使用这些 api 版本配置这些 hpa 行为属性?

当然可以用

HPA 文件中的构建示例:

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  labels:
    app: prediction-api
  name: prediction-api
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: prediction-api
  maxReplicas: 4
  minReplicas: 1
  targetCPUUtilizationPercentage: 70

自定义缩放指标

如果您具体询问 behavior 字段,答案是:不,它在 apiVersion: autoscaling/v1 中不可用,如果您想利用它,你需要使用 autoscaling/v2beta2。明确指出 here:

Starting from v1.18 the v2beta2 API allows scaling behavior to be configured through the HPA behavior field.

如果您有疑问,您可以通过尝试应用一个新的 HorizontalPodAutoscaler 对象定义轻松地自行检查,该定义包含此字段,但不是必需的 autoscaling/v2beta2,而是使用 autoscaling/v1.您应该会看到类似于下面的错误消息:

error: error validating "nginx-multiple.yaml": error validating data: [ValidationError(HorizontalPodAutoscaler.spec): unknown field "behavior" in io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerSpec, ValidationError(HorizontalPodAutoscaler.spec): unknown field "metrics" in io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerSpec]; if you choose to ignore these errors, turn validation off with --validate=false

如您所见,spec 中的 metricsbehavior 字段在 autoscaling/v1 中均无效,但在 autoscaling/v2beta2 中完全有效 API.

检查你的AKS集群是否支持这个API版本,运行:

$ kubectl api-versions | grep autoscaling
autoscaling/v1
autoscaling/v2beta1
autoscaling/v2beta2

如果你的结果和我的相似(即你可以看到autoscaling/v2beta2),说明你的AKS集群支持这个API版本。