自定义托管附加组件的资源配置

本文概述了如何使用成本优化的加载项缩放(预览版)为Azure Kubernetes 服务 (AKS)托管加载项自定义资源配置。

Overview

在 AKS 群集中启用成本优化的加载项缩放功能会为支持此功能的 AKS 托管加载项安装垂直 Pod 自动缩放程序(VPA)加载项和 VPA 自定义资源。 此功能还允许你在部署和 DaemonSet 中手动自定义资源 CPU 和内存请求和限制。 还可以自定义 VPA 自定义资源中允许的最大和最小 CPU 和内存以及 VPA 更新模式。

先决条件

自定义资源批注

注释 说明 价值观
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

  1. 确保 AKS 托管加载项支持成本优化的加载项缩放功能。 有关详细信息,请参阅 支持的 AKS 托管加载项。
  2. 验证 Deployment 或 DaemonSet 中的 kubernetes.azure.com/override-requests-limits 注解是否设置为“enabled”。
  3. 验证 VPA 自定义资源中的 kubernetes.azure.com/override-min-max 注解是否设置为“enabled”。
  4. 验证 VPA 自定义资源中的 kubernetes.azure.com/override-update-mode 注解是否设置为“enabled”。

后续步骤

若要进一步配置群集资源利用率并为 AKS 托管的加载项释放 CPU/内存,请参阅 AKS 中的垂直 Pod 自动缩放。