【发布时间】:2021-11-23 22:57:09
【问题描述】:
我们正在使用 AKS 1.19.11 版本,想知道我们是否可以在 AKS 中启用可配置的缩放行为,也可以使用 Horizontal Pod Autoscaler。
如果是,则当前使用的 hpa 设置为 apiversion: autoscaling/v1。是否可以使用这些 api 版本配置这些 hpa 行为属性?
【问题讨论】:
标签: kubernetes azure-aks kubernetes-pod hpa
我们正在使用 AKS 1.19.11 版本,想知道我们是否可以在 AKS 中启用可配置的缩放行为,也可以使用 Horizontal Pod Autoscaler。
如果是,则当前使用的 hpa 设置为 apiversion: autoscaling/v1。是否可以使用这些 api 版本配置这些 hpa 行为属性?
【问题讨论】:
标签: kubernetes azure-aks kubernetes-pod hpa
如果您专门询问behavior 字段,答案是:不,它在apiVersion: autoscaling/v1 中不可用,如果您想利用它,则需要使用autoscaling/v2beta2。写得很清楚here:
从 v1.18 开始,v2beta2 API 允许缩放行为 通过 HPA 行为字段配置。
如果您有疑问,您可以通过尝试应用包含此字段的新 HorizontalPodAutoscaler 对象定义轻松自行检查,但使用 autoscaling/v1 代替必需的 autoscaling/v2beta2。您应该会看到类似于以下的错误消息:
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 中的 metrics 和 behavior 字段在 autoscaling/v1 中无效,但它们在 autoscaling/v2beta2 API 中完全有效。
要检查您的 AKS 集群是否支持此 API 版本,请运行:
$ kubectl api-versions | grep autoscaling
autoscaling/v1
autoscaling/v2beta1
autoscaling/v2beta2
如果您的结果与我的相似(即您可以看到 autoscaling/v2beta2),则表示您的 AKS 集群支持此 API 版本。
【讨论】:
当然,你可以使用它。
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
【讨论】: