Настройка конфигурации ресурсов для управляемых надстроек

В этой статье представлен обзор того, как настраивать конфигурацию ресурсов для управляемых компонентов Службы Azure Kubernetes (AKS) с оптимизированным масштабированием компонентов по затратам (предварительная версия).

Обзор

Включение функции масштабирования оптимизированных для затрат надстроек в кластере AKS устанавливает надстройку Вертикального автомасштабирования Pod (VPA) и пользовательские ресурсы VPA для управляемых надстроек AKS, поддерживающих эту возможность. Эта функция также позволяет вручную настраивать запросы ресурсов ЦП и памяти, а также ограничения в настройках развертывания и DaemonSets. Кроме того, можно настроить максимальный и минимальный допустимый ЦП и память и режим обновления VPA в пользовательских ресурсах VPA.

Предпосылки

Настройка аннотаций ресурсов

Аннотация Описание Ценности
kubernetes.azure.com/override-requests-limits Поддерживается возможность настройки запросов и ограничений для ресурсов CPU/памяти контейнера в Deployment или DaemonSet, если значение "включено". Установите значение в "disabled", чтобы восстановить значения AKS по умолчанию. "Включено" или "отключено"
kubernetes.azure.com/override-min-max Поддерживает возможность настройки политики контейнера максимального или минимально допустимого значения ЦП/памяти в настраиваемом ресурсе VPA, если значение "включено". Установите значение в "disabled", чтобы восстановить значения AKS по умолчанию. "Включено" или "отключено"
kubernetes.azure.com/override-update-mode Поддерживает возможность настройки значения политики updateMode обновления в пользовательском ресурсе VPA, если значение "включено". Установите значение в "disabled", чтобы восстановить значения AKS по умолчанию. "Включено" или "отключено"

Настройка запросов и ограничений ресурсов ЦП/памяти

После установки аннотации kubernetes.azure.com/override-requests-limits в значение "включено" в развертывание или DaemonSet, можно настроить запросы и ограничения по использованию ресурсов ЦПУ/памяти. В следующем примере показано, как настроить запросы на ЦП и память ресурсов в развертывании:

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"

Настройте максимальные и минимальные пределы ЦП и памяти.

После установки аннотации kubernetes.azure.com/override-min-max в пользовательском ресурсе VPA на состояние "включено" вы можете настроить максимальные и минимальные допустимые значения процессора и памяти в пользовательском ресурсе VPA. В следующем примере показано, как настроить максимальные и минимальные допустимые значения ЦП и памяти в пользовательском ресурсе VPA:

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
  ...

Настройка режима обновления ресурсов

После установки аннотации kubernetes.azure.com/override-update-mode значение "Включено" в пользовательском ресурсе VPA, можно настроить значение политики обновления updateMode в пользовательском ресурсе VPA на "Выкл." или "Начальное" (по умолчанию). В следующем примере показано, как настроить политику обновления, задав значение updateMode на "Initial" в пользовательском ресурсе VPA.

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"

Отключите VPA для определенной управляемой надстройки AKS.

Чтобы отключить VPA в определенной управляемой надстройке AKS, необходимо обновить файл YAML пользовательского ресурса VPA, чтобы задать kubernetes.azure.com/override-update-mode аннотацию "enabled" и updateMode значение "Off". В режиме Off VPA предоставляет только рекомендации по ЦП и памяти и не изменяет pod.

В следующем примере показано, как отключить VPA в надстройке CoreDNS:

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. Убедитесь, что аннотация kubernetes.azure.com/override-requests-limits в развертывании или DaemonSet имеет значение "включено".
  3. Убедитесь, что заметка kubernetes.azure.com/override-min-max в пользовательском ресурсе VPA имеет значение "Включено".
  4. Убедитесь, что заметка kubernetes.azure.com/override-update-mode в пользовательском ресурсе VPA имеет значение "Включено".

Дальнейшие шаги

Дополнительные сведения о настройке использования ресурсов кластера и освобождении ЦП и памяти для управляемых надстроек AKS см. в статье Автомасштабирование вертикальных модулей pod в AKS.