Ошибка инициализации kubeadm при использовании aws elb в качестве конечной точки плоскости управления - PullRequest
1 голос
/ 08 апреля 2020

Я пытаюсь настроить кластер HA kubernetes в AWS, и мне не повезло, используя ELB для плоскости управления (сейчас NLB с прослушивателем TLS, но пробовал с ALB и HTTPS также). Независимо от того, что я делаю, это всегда терпит неудачу на шаге самолета ожидания управления. Если я увеличу детализацию вывода, я могу видеть, как он свернет мою конечную точку балансировщика нагрузки каждую секунду в течение этого шага, и через 4 минуты он выходит из строя. Нет никаких указаний на то, что ответ от балансировщика нагрузки, вот пример вывода, который я вижу:

curl -k -v -XGET  -H "Accept: application/json, */*" -H "User-Agent: kubeadm/v1.17.3 (linux/amd64) kubernetes/06ad960" 'https://<load-balancer-dns>:443/healthz?timeout=10s'
I0408 13:51:07.899477   27075 round_trippers.go:443] GET https://<load-balancer-dns>:443/healthz?timeout=10s  in 4 milliseconds
I0408 13:51:07.899497   27075 round_trippers.go:449] Response Headers:

(нет ничего после заголовков ответа).

Странно то, что во время работы init я могу открыть конечную точку / healthz в браузере, в результате чего на странице появляется сообщение «ОК». Я также могу свернуть его из другого окна терминала, и я получаю HTTP 200, и все выглядит хорошо.

Дополнительные сведения - после сбоя инициализации нет разбитых контейнеров docker. Kubeadm предлагает проверить статус службы и журнал kubelet, и я вижу строки, подобные этой:

E0408 14:50:36.738997   11649 reflector.go:153] k8s.io/client-go/informers/factory.go:135: Failed to list *v1beta1.CSIDriver: Get https://<load-balancer-dns>:443/apis/storage.k8s.io/v1beta1/csidrivers?limit=500&resourceVersion=0: x509: certificate signed by unknown authority

Завершение этого адреса не приводит к ошибкам сертификата, хотя и дает 403. Сертификат должен быть доверенным, поскольку его цепочка (я считаю) импортирована правильно. Поэтому я не уверен, почему kubelet жалуется на это.

Кажется, проблема связана с используемым флагом --control-plane-endpoint. Если я вместо этого просто оставлю значение по умолчанию для IP-адреса одного экземпляра , kubeadm init будет успешно завершен, и кластер будет инициализирован, и я смогу присоединить к нему рабочих и т. Д. c.

FWIW, моя команда инициализации выглядит следующим образом:

kubeadm init --control-plane-endpoint "<load-balancer-dns>:<port>" --ignore-preflight-errors=ImagePull --apiserver-bind-port=30400 --v=10

Что можно проверить, чтобы точно определить, в чем проблема?

...