Мастера высокой доступности Kubernetes

У меня есть 2 кластера, работающих в Azure для 2 разных зон доступности, и я хотел бы кластеризовать мастера etcd в соответствии с https://kubernetes.io/docs/admin/high-availability/#replicated-api-servers .

Я создал токен обнаружения для 3 мастеров. Когда я пытаюсь инициализировать контейнер etcd, он терпит неудачу:

2017-10-27 20:28:17.554393 I | etcdmain: etcd Version: 3.0.17
2017-10-27 20:28:17.554435 I | etcdmain: Git SHA: cc198e2
2017-10-27 20:28:17.554441 I | etcdmain: Go Version: go1.6.4
2017-10-27 20:28:17.554444 I | etcdmain: Go OS/Arch: linux/amd64
2017-10-27 20:28:17.554448 I | etcdmain: setting maximum number of CPUs to 2, total number of available CPUs is 2
2017-10-27 20:28:17.554511 N | etcdmain: the server is already initialized as member before, starting as etcd member...
2017-10-27 20:28:17.554570 I | etcdmain: listening for peers on http://127.0.0.1:2380
2017-10-27 20:28:17.554594 I | etcdmain: listening for client requests on 127.0.0.1:4001
2017-10-27 20:28:17.868368 I | etcdmain: stopping listening for client requests on 127.0.0.1:4001
2017-10-27 20:28:17.868395 I | etcdmain: stopping listening for peers on http://127.0.0.1:2380
2017-10-27 20:28:17.868403 E | etcdmain: member "node-1" has previously registered with discovery service token (https://discovery.etcd.io/457f96956adb17ca0cc372e77b4e1420).
2017-10-27 20:28:17.868408 E | etcdmain: But etcd could not find valid cluster configuration in the given data dir (/var/etcd/data).
2017-10-27 20:28:17.868411 I | etcdmain: Please check the given data dir path if the previous bootstrap succeeded
2017-10-27 20:28:17.868462 I | etcdmain: or use a new discovery token if the previous bootstrap failed.

Оба кластера были созданы acs-engine в разных AZ. Это проблема, связанная с наличием 2 разных кластеров?? Если да, то как я могу сделать HA в этом сценарии? Я пытаюсь это сделать, поскольку Федерация еще не готова к производству.

Я полностью зациклен на этом.

Я был бы очень признателен за помощь в этом.

Спасибо.


person Hugo Marcelo Del Negro    schedule 03.11.2017    source источник


Ответы (1)


Высокодоступные настройки для мастеров Kubernetes предполагают, что вы используете несколько мастеров (обычно 3, чтобы иметь кворум для голосования) в одном кластере. Ваша текущая установка состоит из 2 отдельных кластеров с 1 мастером.

Если у вас есть несколько кластеров, вам следует взглянуть на Cluster Federation. хотя я готов поспорить, что это не то, что вам нужно, поскольку у вас обычно есть федеративные кластеры, имеющие по 3 основных настройки каждый.

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

person vascop    schedule 03.11.2017
comment
Большое спасибо, что посмотрели это. Я должен выполнять все это в MS Azure, поэтому единственным инструментом, который у меня есть, является acs-engine. Я вижу, что kops является официальным для AWS, что не является моим сегодняшним сценарием. Теперь представьте, что я могу еще увеличить количество мастер-узлов. С другой стороны, мои 2 кластера k8s работают в 2 разных зонах доступности. Как я могу связаться с мастером межрегионального кластера и синхронизировать их все? Это производственное развертывание, и Федерация еще не готова к этому, как и для MS Azure. Вы верите, что это возможно? Вы знаете, почему служба обнаружения не распознает моего другого мастера в другой зоне? Спасибо! - person Hugo Marcelo Del Negro; 03.11.2017
comment
Это единственный способ увеличить количество экземпляров на кластер, чтобы увеличить кворум узлов etcd? - person Hugo Marcelo Del Negro; 03.11.2017
comment
Бэкэнд, который используют серверы API, — это etcd, и поэтому узлы etcd должны быть настроены в кластере, а не как 2 автономных узла. - person vascop; 03.11.2017