Добавление удаленного члена etcd в мастер Kubernetes - PullRequest
0 голосов
/ 09 июня 2019

Я следил за хелотным репо Келси Хайтауэра и успешно создал кластер с 3 основными узлами и 3 рабочими узлами. Вот проблемы, возникающие при удалении одного из участников etcd и последующем его добавлении, также со всеми используемыми шагами:

3 мастер-узла:
10.240.0.10 контроллер-0
10.240.0.11 контроллер-1
10.240.0.12 контроллер-2

Шаг 1:

isaac@controller-0:~$ sudo ETCDCTL_API=3 etcdctl member list   --endpoints=https://127.0.0.1:2379   --cacert=/etc/etcd/ca.pem   --cert=/etc/etcd/kubernetes.pem   --key=/etc/etcd/kubernetes-key.pem

Результат:

b28b52253c9d447e, запущен, контроллер-2, https://10.240.0.12:2380, https://10.240.0.12:2379
f98dc20bce6225a0, запущен, контроллер-0, https://10.240.0.10:2380, https://10.240.0.10:2379
ffed16798470cab5, запущен, контроллер-1, https://10.240.0.11:2380, https://10.240.0.11:2379

Шаг 2 (Удалить член etcd контроллера-2):

isaac@controller-0:~$ sudo ETCDCTL_API=3 etcdctl member remove b28b52253c9d447e   --endpoints=https://127.0.0.1:2379   --cacert=/etc/etcd/ca.pem   --cert=/etc/etcd/kubernetes.pem   --key=/etc/etcd/kubernetes-key.pem

Шаг 3 (добавить участника обратно):

isaac@controller-0:~$ sudo ETCDCTL_API=3 etcdctl member add controller-2 --peer-urls=https://10.240.0.12:2380  --endpoints=https://127.0.0.1:2379   --cacert=/etc/etcd/ca.pem   --cert=/etc/etcd/kubernetes.pem   --key=/etc/etcd/kubernetes-key.pem

Результат:

Элемент 66d450d03498eb5c добавлен в кластер 3e7cc799faffb625 ETCD_NAME = "контроллер-2" ETCD_INITIAL_CLUSTER = "контроллер-2 = * 1 039 *https://10.240.0.12:2380,controller -0 = * * -1 одна тысяча сорок-одна = https://10.240.0.11:2380" ETCD_INITIAL_ADVERTISE_PEER_URLS = "https://10.240.0.12:2380" ETCD_INITIAL_CLUSTER_STATE = "существующие"

Шаг 4 (запустить команду списка участников):

isaac@controller-0:~$ sudo ETCDCTL_API=3 etcdctl member list   --endpoints=https://127.0.0.1:2379   --cacert=/etc/etcd/ca.pem   --cert=/etc/etcd/kubernetes.pem   --key=/etc/etcd/kubernetes-key.pem

Результат:

66d450d03498eb5c, без запуска,, https://10.240.0.12:2380,
f98dc20bce6225a0, запущен, контроллер-0, https://10.240.0.10:2380, https://10.240.0.10:2379 ffed16798470cab5, запущен, контроллер-1, https://10.240.0.11:2380, https://10.240.0.11:2379

Шаг 5 (Запустите команду для запуска etcd в controller-2):

isaac@controller-2:~$ sudo etcd --name controller-2 --listen-client-urls https://10.240.0.12:2379,http://127.0.0.1:2379 --advertise-client-urls https://10.240.0.12:2379 --listen-peer-urls https://10.240.0.12:
2380 --initial-advertise-peer-urls https://10.240.0.12:2380 --initial-cluster-state existing --initial-cluster controller-0=http://10.240.0.10:2380,controller-1=http://10.240.0.11:2380,controller-2=http://10.240.0.1
2:2380 --ca-file /etc/etcd/ca.pem --cert-file /etc/etcd/kubernetes.pem --key-file /etc/etcd/kubernetes-key.pem

Результат:

2019-06-09 13: 10: 14.958799 I | etcdmain: etcd Версия: 3.3.9 2019-06-09 13: 10: 14.959022 I | etcdmain: Git SHA: fca8add78 2019-06-09 13: 10: 14.959106 I | etcdmain: версия Go: go1.10.3 2019-06-09 13: 10: 14.959177 I | etcdmain: Go OS / Arch: linux / amd64 2019-06-09 13: 10: 14.959237 I | etcdmain: установка максимального количества процессоров равным 1, общее количество доступных процессоров - 1 2019-06-09 13: 10: 14.959312 W | etcdmain: каталог данных не предоставлен, используется каталог данных по умолчанию ./controller-2.etcd 2019-06-09 13: 10: 14.959435 N | etcdmain: сервер уже инициализирован как участник прежде, начиная с члена etcd ... 2019-06-09 13: 10: 14,959575 C | etcdmain: не может прослушивать TLS для 10.240.0.12:2380: KeyFile и CertFile не представлены

Очевидно, что служба etcd не запустилась должным образом, поэтому я выполняю поиск неисправностей, как показано ниже:

isaac@controller-2:~$ sudo systemctl status etcd

Результат:

● etcd.service - etcd Загружен: загружен (/etc/systemd/system/etcd.service; включено; предустановка поставщика: включено)
Активен: неактивен (мертв) с Вс 2019-06-09 13:06:55 UTC; 29 мин. Назад Документы: https://github.com/coreos Процесс: 1876 ExecStart = / usr / local / bin / etcd --name controller-2 --cert-file = / etc / etcd / kubernetes.pem --key-file = / etc / etcd / kubernetes-key.pem --peer-cert-file = / etc / etcd / kubernetes.pem --peer- key-file = / etc / etcd / kube Основной PID: 1876 (код = выход, статус = 0 / УСПЕХ) 09 июня 13:06:55 контроллер-2 etcd [1876]: остановлен peer f98dc20bce6225a0 09 июня 13:06:55 контроллер-2 и т. д. [1876]: остановка peer ffed16798470cab5 ... 09 июня 13:06:55 контроллер-2 etcd [1876]: прекращено потоковое воспроизведение с одноранговым узлом ffed16798470cab5 (писатель) июнь 09 13:06:55 контроллер-2 и т. Д. [1876]: прекращена потоковая передача с одноранговым узлом ffed16798470cab5 (писатель) 09 июня 13:06:55 контроллер-2 и т. д. [1876]: остановил конвейерную передачу HTTP с равноправным узлом ffed16798470cab5 июн 09 13:06:55 контроллер-2 и т. д. [1876]: остановка потоковой передачи с равноправным узлом ffed16798470cab5 (потоковое чтение MsgApp v2) 09 июня 13:06:55 контроллер-2 и т. д. [1876]: прекратил потоковую передачу с одноранговой сети ffed16798470cab5 (потоковая программа чтения сообщений) Июн 09 13:06:55 контроллер-2 и т. Д. [1876]: остановлен одноранговый узел ffed16798470cab5 Июн 09 13:06:55 controller-2 etcd [1876]: не удалось найти участника f98dc20bce6225a0 в кластере 3e7cc799faffb625 09 июня 13:06:55 controller-2 etcd [1876]: забыл установить Type = notify в сервисе systemd файл

Я действительно пытался запустить член etcd, используя разные команды, но кажется, что etcd контроллера-2 все еще застрял в незапущенном состоянии.Могу ли я узнать причину этого?Любые указатели будут высоко оценены!Благодарю.

1 Ответ

1 голос
/ 10 июня 2019

Оказалось, я решил проблему следующим образом (благодарность Мэтью):

  1. Удалите каталог данных etcd с помощью следующей команды:
rm -rf  /var/lib/etcd/*
Чтобы исправить сообщение cannot listen on TLS for 10.240.0.12:2380: KeyFile and CertFile are not presented, я изменил команду для запуска etcd следующим образом:
sudo etcd --name controller-2 --listen-client-urls https://10.240.0.12:2379,http://127.0.0.1:2379 --advertise-client-urls https://10.240.0.12:2379 --listen-peer-urls https://10.240.0.12:2380 --initial-advertise-peer-urls https://10.240.0.12:2380 --initial-cluster-state existing --initial-cluster controller-0=https://10.240.0.10:2380,controller-1=https://10.240.0.11:2380,controller-2=https://10.240.0.12:2380 --peer-trusted-ca-file  /etc/etcd/ca.pem --cert-file /etc/etcd/kubernetes.pem --key-file /etc/etcd/kubernetes-key.pem --peer-cert-file /etc/etcd/kubernetes.pem --peer-key-file /etc/etcd/kubernetes-key.pem --data-dir /var/lib/etcd

Несколько замечаний, которые следует здесь отметить:

  1. Вновь добавленные аргументы --cert-file и --key-file представили требуемый ключ и сертификат controller2.
  2. Аргумент --peer-trusted-ca-file также представлен, чтобы проверить, подписан ли сертификат x509, представленный controller0 и controller1 известным CA.Если это не указано, может возникнуть ошибка etcdserver: could not get cluster response from https://10.240.0.11:2380: Get https://10.240.0.11:2380/members: x509: certificate signed by unknown authority.
  3. Значение, представленное для аргумента --initial-cluster, должно соответствовать значению, указанному в файле системного блока.
...