Как настроить поведение 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
можно до определенной степени настроить, но только при создании нового кластера.