Как получить доступ к kube-scheduler в кластере Kubernetes?

Я пытаюсь понять, как настроить планировщик kubernetes с помощью настраиваемой конфигурации, но у меня возникают некоторые проблемы с пониманием того, как именно доступен планировщик.

Планировщик работает как модуль в пространстве имен kube-system с именем kube-scheduler-it-k8s-master. В документации говорится, что вы можете настроить планировщик, создав файл конфигурации и вызвав kube-scheduler --config <filename> . Однако я не могу получить доступ к контейнеру планировщика напрямую, поскольку запуск kubectl exec -it kube-scheduler-it-k8s-master -- /bin/bash возвращает:

OCI runtime exec failed: exec failed: container_linux.go:370: starting container process caused: exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown
command terminated with exit code 126

Я попытался изменить /etc/kubernetes/manifests/kube-scheduler, чтобы смонтировать свой собственный файл конфигурации в модуле и явно вызвать kube-scheduler с установленной опцией --config, но мне кажется, что мои изменения отменяются, и планировщик запускается с настройками по умолчанию.

Мне кажется, я что-то не понимаю в планировщике Kubernetes. Должен ли я передать конфигурацию настраиваемого планировщика из самого модуля планировщика? Или это как-то удаленно?

Спасибо!


person Smaugy    schedule 28.01.2021    source источник
comment
Как вы загрузили свой кластер? Вы использовали что-то вроде kubeadm или это создано облачным провайдером?   -  person Shashank V    schedule 28.01.2021
comment
Это локальный кластер, загружаемый с помощью kubeadm @ShashankV.   -  person Smaugy    schedule 28.01.2021


Ответы (1)


Поскольку ваша проблема с X заключается в том, как изменить конфигурацию планировщика, вы можете попробовать следующее для этого.


Использование kubeadm

Если вы используете kubeadm для начальной загрузки кластера, вы можете использовать флаг --config при запуске kubeadm init для передачи настраиваемого объекта конфигурации типа ClusterConfiguration для передачи дополнительных аргументов компонентам плоскости управления.

Пример конфигурации для планировщика:

$ cat sched.conf
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.16.0
scheduler:
  extraArgs:
    address: 0.0.0.0
    config: /home/johndoe/schedconfig.yaml
    kubeconfig: /home/johndoe/kubeconfig.yaml
$ kubeadm init --config sched.conf

Вы также можете попробовать kubeadm upgrade apply --config sched.conf <k8s version> применить обновленную конфигурацию к живому кластеру.

Ссылка: https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/control-plane-flags/


Обновление статического модуля манифест

Вы также можете редактировать /etc/kubernetes/manifests/kube-scheduler.yaml, изменять флаги для передачи config. Убедитесь, что вы подключили файл к модулю, обновив разделы volumes и volumeMounts.

spec:
  containers:
  - command:
    - kube-scheduler
    - --authentication-kubeconfig=/etc/kubernetes/scheduler.conf
    - --authorization-kubeconfig=/etc/kubernetes/scheduler.conf
    - --bind-address=127.0.0.1
    - --kubeconfig=/etc/kubernetes/scheduler.conf
    - --leader-elect=true
    - --config=/etc/kubernetes/mycustomconfig.conf
    volumeMounts:
    - mountPath: /etc/kubernetes/scheduler.conf
      name: kubeconfig
      readOnly: true
    - mountPath: /etc/kubernetes/mycustomconfig.conf
      name: customconfig
      readOnly: true
  volumes:
  - hostPath:
      path: /etc/kubernetes/scheduler.conf
      type: FileOrCreate
    name: kubeconfig
  - hostPath:
      path: /etc/kubernetes/mycustomconfig.conf
      type: FileOrCreate
    name: customconfig
person Shashank V    schedule 28.01.2021
comment
Спасибо за ваш ответ! Я попытался обновить статический манифест модуля, но мой том с настраиваемой конфигурацией по какой-то причине не создается. Создается только kubeconfig том. - person Smaugy; 29.01.2021
comment
РЕДАКТИРОВАТЬ: похоже, я обнаружил проблему, тома не могут монтироваться на другие тома. Я изменил каталог монтирования пользовательской конфигурации, чтобы он не перекрывался с монтированием scheduler.conf, и он работает. Спасибо! - person Smaugy; 29.01.2021