你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

自定义管理加载项的资源配置

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

概述

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

先决条件

自定义资源批注

注释 DESCRIPTION 价值观
kubernetes.azure.com/override-requests-limits 支持在部署或 DaemonSet 中自定义容器资源 CPU/内存请求/限制(如果值为“已启用”)的功能。 将值设置为“disabled”以重置为 AKS 默认值。 “enabled”或“disabled”
kubernetes.azure.com/override-min-max 支持在 VPA 自定义资源中自定义容器策略最大/最小允许的 CPU/内存值(如果已启用)的功能。 将值设置为“disabled”以重置为 AKS 默认值。 “enabled”或“disabled”
kubernetes.azure.com/override-update-mode 支持在 VPA 自定义资源中自定义更新策略 updateMode 值(如果值已启用)的功能。 将值设置为“disabled”以重置为 AKS 默认值。 “enabled”或“disabled”

自定义资源 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 文件以将批注kubernetes.azure.com/override-update-mode设置为"enabled"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"

故障排除

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

后续步骤

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