Как кубернеты HA guide, так и From Scratch guide рекомендуют запускать в контейнерах Etcd, kube-apiserver, kube-controller-manager и kube-scheduler. Идея самостоятельного хостинга Kubernetes на Kubernetes восходит довольно давно (см. PR 167 о Github K8s и связанных с ней проблемах/PR), но я не нашел дискуссию о том, почему такой подход настолько выгоден, что он должен быть " рекомендуется ". Вот преимущества и недостатки, как я вижу их в настоящее время:Преимущества для контейнерных мастер-процессов Kubernetes
Преимущества:
- Потенциально легкий путь обновления просто обновить манифестов и имеют kubelet тянуть новые образы.
- «Контейнерные преимущества»: двоичная среда и среда-хозяин отдельно, используются другие существующие изображения и т. Д.
- Следуют за всем рисунком Кубернете, так что «подходит для мозга», когда вы используете этот шаблон широко.
Недостатки:
- Повышенная сложность установки/конфигурация в некоторых случаях. Например, если ваш кластер Etcd отделен от ваших узлов Kubernetes, теперь вам нужно установить Docker (с возможными изменениями в хранилище в зависимости от дистрибутива Linux), kubelet и Etcd. Без использования контейнера Etcd у вас есть только один бинарный файл для установки.
- Повышенная сложность во время выполнения: при использовании более подвижных частей любая ошибка в Docker или kubelet может оказаться неработоспособной.
Я новичок в Кубернете (и контейнерах) и чувствую, что, возможно, мне недостает преимуществ (или недооценивать их ценность) по сравнению с дополнительной сложностью, которую она вводит. Но я также должен выбрать один из способов попробовать. Почему контейнерные основные компоненты рекомендуют использовать Kubernetes, несмотря на дополнительную сложность?