Как настроить поведение kube-scheduler на AKS?

Я пытаюсь настроить поведение kube-schedulerв кластере AKS (kubernetes v1.19.3), как описано в разделе " Конфигурация планировщика".

Моя цель - использовать NodeResourcesMostAllocated плагин, чтобы планировать поды, используя как можно меньшее количество узлов.

Рассмотрим следующий файл - most-allocated-scheduler.yaml

       apiVersion: kubescheduler.config.k8s.io/v1beta1
kind: KubeSchedulerConfiguration
profiles:
  - schedulerName: default-scheduler
  - schedulerName: most-allocated-scheduler
    plugins:
      score:
        disabled:
        - name: NodeResourcesLeastAllocated
        enabled:
        - name: NodeResourcesMostAllocated
          weight: 2

Согласно документации, я могу указать профили планирования, запустив что-то вроде:

       kube-scheduler --config most-allocated-scheduler.yaml

Но где именно я могу найти kube-scheduler, чтобы выполнить указанную выше команду? Я бы хотел сделать это в идеале на конвейере. Возможно ли такое при использовании AKS?

1 ответ

kube-scheduler является частью плоскости управления kubernetes. Его компоненты запланированы на главном узле, к которому в управляемых решениях Kubernetes, таких как AKS, GKE или EKS, у вас нет доступа.

Это означает, что изменить конфигурацию вашего kube-schedulerна работающем кластере AKS. Сравните с этим ответом на странице AKS GitHub.

Однако можно предоставить настраиваемую конфигурацию для вашего планировщика kube при создании нового кластера, используя определения кластера, в частности, в разделе schedulerConfig:

schedulerConfig

schedulerConfigобъявляет конфигурацию времени выполнения для демона kube-scheduler, работающего на всех главных узлах. подобноkubeletConfig, controllerManagerConfig, и apiServerConfigэто общий объект "ключ / значение" и дочернее свойствоkubernetesConfig. Пример настраиваемой конфигурации apiserver:

"kubernetesConfig": {
    "schedulerConfig": {
        "--v": "2"
    }
}

См. Здесь для справки о поддерживаемых параметрах kube-scheduler.

...

Однако имейте в виду, что не все параметры поддерживаются. Документы говорят, что например --kubeconfigне поддерживается, но, как вы можете прочитать здесь, этот флаг в любом случае устарел. Нет ничего о --config flag, чтобы вы могли просто попробовать, работает ли он.

Вы также можете добиться этого, используя Custom YAML для манифестов компонентов Kubernetes:

Пользовательские спецификации YAML можно настроить для kube-scheduler, kube-controller-manager, cloud-controller-manager и kube-apiserver в дополнение к описанным выше надстройкам. Вам нужно будет проходить в кодировке base64 строки из kubernetes манифеста YAML файл в KubernetesComponentConfig["данных"]. Например, чтобы передать настраиваемую конфигурацию kube-scheduler, выполните следующие действия:

"kubernetesConfig": {
    "schedulerConfig": {
            "data" : "<base64-encoded string of your k8s manifest YAML>"
        }
}

ПРИМЕЧАНИЕ. Пользовательский YAML для дополнений - это экспериментальная функция. поскольку Addons.Dataпозволяет предоставлять собственные скрипты, вы несете ответственность за любые нежелательные последствия их ошибок или сбоев. Используйте на свой риск.

Как видите, даже в управляемых решениях Kubernetes, таких как AKS, kube-scheduler можно до определенной степени настроить, но только при создании нового кластера.

Другие вопросы по тегам