Как использовать параметр конфигурации kubeadm-init- «controlPlaneEndpoint»? - PullRequest
0 голосов
/ 26 июня 2019

Я думаю, что мой фокус на том, как использовать этот параметр конфигурации - "controlPlaneEndpoint" В настоящее время глючит использование «controlPlaneEndpoint». https://kubernetes.io/docs/setup/independent/high-availability/

Я действительно надеюсь, что вы можете набраться терпения, чтобы увидеть мою реальную ситуацию.

Во-первых, параметр конфигурации - "controlPlaneEndpoint" - это vip или балансировка нагрузки, верно? Итак, я настраиваю «controlPlaneEndpoint» с 4-х уровневой балансировкой нагрузки; Я пробовал aws \ ali. Все результаты показывают, что во время использования будет вероятность тайм-аута, и «nodexxx not found» появляется 100% времени во время установки с kubeadm.

Почему это происходит? Если я использую 4 уровня балансировки нагрузки в параметре «controlPlaneEndpoint», будут проблемы с сетью. Например, у меня есть три основных сервера, ServerA, ServerB, ServerC, и я ввожу команду «kubectl get pod» на сервере A. Вероятность тайм-аута составляла 33%. Все нормально, когда запрос serverA направляется либо на ServerB, либо на ServerC через 4-х уровневое распределение нагрузки Если запрос направлен на сам ServerA через 4-уровневую балансировку нагрузки, то должен произойти тайм-аут.

Поскольку 4-уровневая балансировка нагрузки не может использоваться, когда ServerA является сервером, а также запросчиком. Это сетевая функция 4-уровневой балансировки нагрузки. По той же причине, когда я создаю новый кластер с помощью kubeadm, мой первый мастер - это serverA. Хотя серверный сервер ServerA уже запущен в докере, и я могу telnet ServerA-IP: 6443 успешно, kubelet проверит 4-уровневый балансировщик нагрузки IP: prot в параметре - «controlPlaneEndpoint». Таким образом, «nodexxx not found» появлялся 100% времени во время установки с kubeadm, когда я настраивал «controlPlaneEndpoint».

В общедоступной облачной среде, такой как ali, я не могу использовать keepalived + haproxy. Это означает, что я должен использовать 7 уровней балансировки нагрузки для k8s-apiserver, если я хочу использовать параметр- "controlPlaneEndpoint". право?

Как настроить kubeadm-config с балансировкой нагрузки на уровне 7? Это https, у меня была проблема с сертификацией kubeadm. Есть ли документация?

1 Ответ

1 голос
/ 20 июля 2019

У нас точно такая же проблема, но с балансировщиком нагрузки Azure (уровень 4).

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

2) На всех других главных узлах, где выполняется "соединение kubeadm", есть вероятность 1 / N сбоя, когда балансировщик нагрузки выбирает сам узел, а не какой-либо из ((N-1) узлы, которые уже находятся в кластере.

Мы взломали наш путь, используя правила iptables.Например, в первом узле перед «kubeadm init» мы делаем iptables для маршрутизации ip балансировщика нагрузки на 127.0.0.1:

iptables -t nat -A OUTPUT -p all -d $ {FRONTEND_IP} -j DNAT --to-destination 127.0.0.1

Конечно, мы удаляем правило iptables после kubeadm init.Я не рекомендую никому делать это, это неприятный хак, и я намерен с помощью этого поста заставить кого-то, кто может знать, чего нам не хватает, опубликовать, каково правильное решение.

На оригинальный постерЯ не думаю, что мы намерены использовать LB 7-го уровня.Документация ясна, когда говорят, что уровень 4 - это все, что нужно.

Я опубликую еще раз, если мы найдем правильное решение.

...