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
自定义缩放指标
- 您可以使用 Keda - https://keda.sh/ 项目进行自定义事件驱动的自动缩放。
如果您具体询问 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
中的 metrics
和 behavior
字段在 autoscaling/v1
中均无效,但在 autoscaling/v2beta2
中完全有效 API.
检查你的AKS集群是否支持这个API版本,运行:
$ kubectl api-versions | grep autoscaling
autoscaling/v1
autoscaling/v2beta1
autoscaling/v2beta2
如果你的结果和我的相似(即你可以看到autoscaling/v2beta2
),说明你的AKS集群支持这个API版本。
我们使用的是 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
自定义缩放指标
- 您可以使用 Keda - https://keda.sh/ 项目进行自定义事件驱动的自动缩放。
如果您具体询问 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
中的 metrics
和 behavior
字段在 autoscaling/v1
中均无效,但在 autoscaling/v2beta2
中完全有效 API.
检查你的AKS集群是否支持这个API版本,运行:
$ kubectl api-versions | grep autoscaling
autoscaling/v1
autoscaling/v2beta1
autoscaling/v2beta2
如果你的结果和我的相似(即你可以看到autoscaling/v2beta2
),说明你的AKS集群支持这个API版本。