Возможна ли высокая доступность Kubernetes с использованием kubeadm без аварийного переключения / балансировки нагрузки?

Я пытаюсь добиться высокой доступности k8s с помощью kubeadm. Я следую документу k8s HA с использованием kubeadm

В официальном документе рекомендуется иметь механизм аварийного переключения / балансировщик нагрузки для kube-apiserver. Я пробовал keepalived, но в случае установки на aws / gcp instaces он попадает в ситуацию разделения мозга, поскольку многоадресная рассылка не поддерживается, и поэтому мне не разрешено ее использовать. Есть ли для этого выход?


person Yudi    schedule 09.07.2018    source источник


Ответы (3)


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

Как упоминалось в @jaxxstorm, облачные провайдеры дают вам возможность использовать собственные балансировщики нагрузки, и я также считаю, что это хороший полюс позиция с попыткой высокой доступности. Возможно, вас заинтересует документация по GCP.

Kubeadm в домашней среде Kubernetes требует дополнительной работы, и, с моей точки зрения, неплохо настроить Kubernetes The Hardway затем начинает играть с Kubeadm < / а>.

Хорошо, я предполагаю, что серверы для установки готовы. Чтобы создать несложную установку кластера с несколькими главными серверами, вам потребуется 3 главных узла (10.0.0.50-52) и балансировщик нагрузки (10.0.0.200).

Сгенерируйте токен и сохраните результат в файл:

kubeadm token generate

Создайте файл конфигурации kubeadm:

apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
etcd:
  endpoints:
  - "http://10.0.0.50:2379"
  - "http://10.0.0.51:2379"
  - "http://10.0.0.52:2379"
apiServerExtraArgs:
  apiserver-count: "3"
apiServerCertSANs:
- "10.0.0.50"
- "10.0.0.51"
- "10.0.0.52"
- "10.0.0.200"
- "127.0.0.1"
token: "YOUR KUBEADM TOKEN"
tokenTTL: "0"

Скопируйте файл конфигурации на все узлы.

Выполните инициализацию на первом главном экземпляре:

kubeadm init --config /path/to/config.yaml

Новый главный экземпляр будет иметь все сертификаты и ключи, необходимые для нашего главного кластера.

Скопируйте структуру каталогов /etc/kubernetes/pki на другие мастера в то же место.

На других главных серверах:

kubeadm init --config /path/to/config.yaml

Теперь приступим к настройке балансировщика нагрузки:

Скопируйте /etc/kubernetes/admin.conf в $HOME/.kube/config

затем отредактируйте $HOME/.config и замените

сервер: 10.0.0.50

с участием

сервер: 10.0.0.200

Проверьте, нормально ли работают узлы:

kubectl get nodes

На всех рабочих выполнить:

kubeadm join --token YOUR_CLUSTER_TOKEN 10.0.0.200:6443 --discovery-token-ca-cert-hash sha256:89870e4215b92262c5093b3f4f6d57be8580c3442ed6c8b00b0b30822c41e5b3

И это все! Если все было настроено чисто, теперь у вас должен быть высокодоступный кластер.

Мне показалось полезным руководство по "HA Kubernetes cluster via Kubeadm" , спасибо, @Nate Baker за вдохновение.

person d0bry    schedule 10.07.2018

Нет, для обеспечения высокой доступности с помощью kubeadm вам понадобится балансировщик нагрузки.

Если вы используете AWS / GCP, почему бы не подумать об использовании встроенных балансировщиков нагрузки для этих сред, таких как ELB или Google Cloud Load Balancer?

person jaxxstorm    schedule 09.07.2018

Вам определенно понадобится nginx / haproxy + keepalived для аварийного переключения и высокой доступности

person P Ekambaram    schedule 06.02.2019