Kubeadm устанавливает CoreDNS и kube-proxy в фазе init add . Он устанавливается после того, как функциональность кластера basi c уже запущена (apiserver, manager manager et c.). Kubeadm устанавливает его так же, как если бы вы запускали kubectl apply
.
Вот код фазы дополнения init kubeadm , если вы хотите увидеть, как он на самом деле работает под капотом.
Apiserver, диспетчер контроллера и планировщик должны быть запущены с использованием папки манифеста (также известной как static pods
), потому что другого пути нет (технически это не на 100% правильно, потому что есть другие методы, например, вы можете запустить свой плоскость управления с использованием systemd). Как вы начинаете запускать вещи на kubernetes, когда kubernetes еще нет? Нет сервера API для обработки ваших запросов, нет планировщика для планирования ваших модулей, нет контроллера для управления ресурсами. После запуска основных компонентов вы можете запускать модули регулярно, используя api.
Кроме того, отвечая на ваш вопрос о том, что происходит при перезапуске плоскости управления или узлов? Вы должны знать, что состояние всего кластера k8s находится в etcd. Поэтому, когда вы перезагружаете плоскость управления, kubernetes считывает состояние из etcd, сравнивает его с реальностью и, если есть различия, корректирует реальность, чтобы соответствовать состоянию в etcd. например, если нет запущенных corens, но в etcd есть объект coredns, kubernetes запустит его.