本文概述了如何使用成本优化的加载项缩放(预览版)为Azure Kubernetes 服务 (AKS)托管加载项自定义资源配置。
Overview
在 AKS 群集中启用成本优化的加载项缩放功能会为支持此功能的 AKS 托管加载项安装垂直 Pod 自动缩放程序(VPA)加载项和 VPA 自定义资源。 此功能还允许你在部署和 DaemonSet 中手动自定义资源 CPU 和内存请求和限制。 还可以自定义 VPA 自定义资源中允许的最大和最小 CPU 和内存以及 VPA 更新模式。
先决条件
- 查看 此功能支持的 AKS 托管加载项 和 限制 。
- 你需要一个已启用成本优化加载项缩放功能的 AKS 群集。 如果尚未启用,请参阅在 AKS 群集上启用成本优化的加载项缩放(预览版)。
自定义资源批注
| 注释 | 说明 | 价值观 |
|---|---|---|
kubernetes.azure.com/override-requests-limits |
支持在部署或 DaemonSet 中自定义容器资源 CPU/内存请求/限制(如果值为“已启用”)的功能。 将值设置为“disabled”以重置为 AKS 默认值。 | “已启用”或“已禁用” |
kubernetes.azure.com/override-min-max |
支持在 VPA 自定义资源中自定义容器策略最大/最小允许的 CPU/内存值(如果已启用)的功能。 将值设置为“disabled”以重置为 AKS 默认值。 | “已启用”或“已禁用” |
kubernetes.azure.com/override-update-mode |
支持在 VPA 自定义资源中自定义更新策略 updateMode 值(如果值已启用)的功能。 将值设置为“disabled”以重置为 AKS 默认值。 |
“已启用”或“已禁用” |
自定义资源 CPU/内存请求/限制
在部署或 DaemonSet 中将 kubernetes.azure.com/override-requests-limits 批注设置为“已启用”后,可以自定义资源 CPU/内存请求和限制。 以下示例演示如何自定义部署中的资源 CPU/内存请求和限制:
apiVersion: apps/v1
kind: Deployment
metadata:
name: coredns
namespace: kube-system
annotations:
# update value from "disabled" to "enabled"
kubernetes.azure.com/override-requests-limits: "enabled"
spec:
...
containers:
- name: coredns
resources:
limits:
# update cpu limits value won't be reconciled back
cpu: "3"
# update memory limits value won't be reconciled back
memory: "500Mi"
requests:
# update cpu requests value won't be reconciled back
cpu: "100m"
# update memory requests value won't be reconciled back
memory: "70Mi"
自定义允许的资源最大值/最小 CPU/内存
在 VPA 自定义资源中将 kubernetes.azure.com/override-min-max 批注设置为“已启用”后,可以自定义 VPA 自定义资源中允许的最大和最小 CPU 和内存值。 以下示例演示如何自定义 VPA 自定义资源中允许的最大和最小 CPU 和内存值:
apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
name: coredns
namespace: kube-system
annotations:
# update value from "disabled" to "enabled"
kubernetes.azure.com/override-min-max: "enabled"
spec:
resourcePolicy:
containerPolicies:
- containerName: coredns
maxAllowed:
# update maxAllowed cpu value won't be reconciled back
cpu: 3
# update maxAllowed memory value won't be reconciled back
memory: 500Mi
minAllowed:
# update minAllowed cpu value won't be reconciled back
cpu: 10m
# update minAllowed memory value won't be reconciled back
memory: 10Mi
...
自定义资源更新模式
在 VPA 自定义资源中将 kubernetes.azure.com/override-update-mode 批注设置为“已启用”后,可以将 VPA 自定义资源中的更新策略 updateMode 值自定义为“关闭”或“初始”(默认值)。 以下示例演示如何在 VPA 自定义资源中将更新策略 updateMode 值自定义为“Initial” :
apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
name: coredns
namespace: kube-system
annotations:
# update value from "disabled" to "enabled"
kubernetes.azure.com/override-update-mode: "enabled"
spec:
...
updatePolicy:
# update updateMode won't be reconciled back
updateMode: "Initial"
在特定的 AKS 托管加载项上禁用 VPA
若要在特定 AKS 托管加载项上禁用 VPA,需要更新 VPA 自定义资源 YAML 文件以将批注"enabled"设置为kubernetes.azure.com/override-update-mode和updateMode设置为 "Off"。 使用 关闭 模式时,VPA 仅提供 CPU 和内存建议,并且不会对 Pod 应用更改。
以下示例演示如何在 CoreDNS 加载项上禁用 VPA:
apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
name: coredns
namespace: kube-system
annotations:
# Set value to "enabled"
kubernetes.azure.com/override-update-mode: "enabled"
spec:
...
updatePolicy:
# Set value to "Off"
updateMode: "Off"
Troubleshooting
- 确保 AKS 托管加载项支持成本优化的加载项缩放功能。 有关详细信息,请参阅 支持的 AKS 托管加载项。
- 验证 Deployment 或 DaemonSet 中的
kubernetes.azure.com/override-requests-limits注解是否设置为“enabled”。 - 验证 VPA 自定义资源中的
kubernetes.azure.com/override-min-max注解是否设置为“enabled”。 - 验证 VPA 自定义资源中的
kubernetes.azure.com/override-update-mode注解是否设置为“enabled”。
后续步骤
若要进一步配置群集资源利用率并为 AKS 托管的加载项释放 CPU/内存,请参阅 AKS 中的垂直 Pod 自动缩放。