Kubernetes kubeadm init не работает из-за набора tcp 127.0.0.1:10248: connect: соединение отклонено

Я пытаюсь настроить очень простой 2-узловой кластер k8s 1.13.3 в частном облаке vSphere. Виртуальные машины работают под управлением Ubuntu 18.04. Брандмауэры отключены в целях тестирования. однако инициализация не удается из-за отказа в соединении. Есть ли что-то еще, что могло вызвать это, кроме блокировки портов? Я новичок в k8s и пытаюсь осмыслить все это.

Я поместил vsphere.conf в / etc / kubernetes /, как показано в этой сущности. https://gist.github.com/spstratis/0395073ac3ba6dc24349582b43894a77

Я также создал файл конфигурации, который будет указывать на то, когда я запускаю kubeadm init. Вот пример его содержания. https://gist.github.com/spstratis/086f08a1a4033138a0c42f80aef5ab40

Когда я запускаю sudo kubeadm init --config /etc/kubernetes/kubeadminitmaster.yaml, время ожидания истекает со следующей ошибкой.

[kubelet-check] Initial timeout of 40s passed.
[kubelet-check] It seems like the kubelet isn't running or healthy.
[kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get http://localhost:10248/healthz: dial tcp 127.0.0.1:10248: connect: connection refused.

Проверка sudo systemctl status kubelet показывает, что кубелет работает. У меня на моей главной виртуальной машине отключен брандмауэр для тестирования целей, чтобы я мог убедиться, что кластер загрузится сам.

   Loaded: loaded (/lib/systemd/system/kubelet.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/kubelet.service.d
           └─10-kubeadm.conf
   Active: active (running) since Sat 2019-02-16 18:09:58 UTC; 24s ago
     Docs: https://kubernetes.io/docs/home/
 Main PID: 16471 (kubelet)
    Tasks: 18 (limit: 4704)
   CGroup: /system.slice/kubelet.service
           └─16471 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml --cloud-config=/etc/kubernetes/vsphere.conf --cloud-provider=vsphere --cgroup-driver=systemd --network-plugin=cni --pod-i

Ниже приведены несколько дополнительных журналов, показывающих, что в подключении к https://192.168.0.12:6443/ отказано . Похоже, все это приводит к сбою kubelet и препятствует завершению процесса инициализации.

    Feb 16 18:10:22 k8s-master-1 kubelet[16471]: E0216 18:10:22.633721   16471 kubelet.go:2266] node "k8s-master-1" not found
    Feb 16 18:10:22 k8s-master-1 kubelet[16471]: E0216 18:10:22.668213   16471 reflector.go:134] k8s.io/kubernetes/pkg/kubelet/kubelet.go:453: Failed to list *v1.Node: Get https://192.168.0.12:6443/api/v1/nodes?fieldSelector=metadata.name%3Dk8s-master-1&limit=500&resourceVersion=0: dial tcp 192.168.0.1
Feb 16 18:10:22 k8s-master-1 kubelet[16471]: E0216 18:10:22.669283   16471 reflector.go:134] k8s.io/kubernetes/pkg/kubelet/kubelet.go:444: Failed to list *v1.Service: Get https://192.168.0.12:6443/api/v1/services?limit=500&resourceVersion=0: dial tcp 192.168.0.12:6443: connect: connection refused
    Feb 16 18:10:22 k8s-master-1 kubelet[16471]: E0216 18:10:22.670479   16471 reflector.go:134] k8s.io/kubernetes/pkg/kubelet/config/apiserver.go:47: Failed to list *v1.Pod: Get https://192.168.0.12:6443/api/v1/pods?fieldSelector=spec.nodeName%3Dk8s-master-1&limit=500&resourceVersion=0: dial tcp 192.1
    Feb 16 18:10:22 k8s-master-1 kubelet[16471]: E0216 18:10:22.734005   16471 kubelet.go:2266] node "k8s-master-1" not found

person Stavros_S    schedule 16.02.2019    source источник


Ответы (1)


Вы не можете использовать bootstrap-kubeconfig для инициализации мастер-кублета, поскольку, как вы сами понимаете, у него нет сервера api, с которым можно было бы связаться, чтобы сгенерировать свой закрытый ключ и сертификат. Словить 22. Я примерно на 80% уверен, что удаление --bootstrap-kubeconfig из аргументов kubelet поможет в этой ситуации. Я ожидал, что у kubelet уже есть ключ и сертификат в /var/lib/kubelet/pki, так что это тоже стоит проверить.

Кроме того, предполагая, что вы используете каталог /etc/kubernetes/manifests для запуска apiserver и controllermanager, убедитесь, что _ 5_ в /var/lib/kubelet/config.yaml указывает на правильный каталог. Вряд ли это проблема, но проверить это супер дешево.

person mdaniel    schedule 17.02.2019
comment
Спасибо за ответ, я подтвердил, что сертификат и ключ kubelet действительно находятся в папке PKI. Честно говоря, я не понимаю, что вы имеете в виду, когда говорите, что я не могу использовать bootstrap-kubeconfig. На этом этапе все, что я сделал, - это поместил упомянутые мной файлы конфигурации в их папки и выполнил команду kubeadm init на главном сервере. Было ли что-то еще, что я должен был сделать до этого? Я действительно новичок в k8s и следовал руководству. - person Stavros_S; 17.02.2019
comment
Чтобы продолжить, я также проверил /var/lib/kubelet/config.yaml и заметил, что он не содержит свойства staticPodPath. - person Stavros_S; 17.02.2019
comment
почему я не могу использовать bootstrap-kubeconfig, потому что этот механизм предназначен для (плюс-минус) развертываний на "голом железе", например, с использованием группы автомасштабирования в AWS (или ее эквиваленте GCP) - всего лишь kubelet и kubeadm, вы можете взять пустой компьютер и присоединить его к кластеру, связавшись с API для получения конфигурации кластера, а затем используя токен начальной загрузки для аутентификации на время, достаточное для запроса пары сертификатов из API. Это часть bootstrap-kubeconfig: авторизация с использованием токена, а затем генерация настоящего kubelet.conf из него. Но ни сервера API, ни процесса начальной загрузки - person mdaniel; 17.02.2019
comment
Так следует ли мне удалить --config /etc/kubernetes/kubeadminitmaster.yaml из моей команды инициализации? - person Stavros_S; 18.02.2019
comment
Кажется, что kubelet не может запустить ни один из необходимых ему контейнеров. - person Stavros_S; 18.02.2019
comment
Итак, я запустил sudo kubeadm reset && sudo kubeadm init –pod-network-cidr=10.244.0.0/16, и инициализация прошла нормально. Смогу ли я теперь настроить конфигурацию своего облачного провайдера? - person Stavros_S; 18.02.2019
comment
Конечно, но ваш вопрос превращается во что-то waaay, отличное от соединения, в котором отказано: 10248, поэтому я бы предложил открыть новый вопрос для вашей новой проблемы, потому что в этих комментариях нет способа решения - person mdaniel; 18.02.2019
comment
Я думаю, оглядываясь на ваш исходный ответ, как мне на самом деле удалить --bootstrap-kubeconfig из аргументов kubelet? - person Stavros_S; 18.02.2019
comment
vi /lib/systemd/system/kubelet.service и / или vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf (я не знаю, какой из этих файлов содержит оскорбительный аргумент). Учитывая ваше крайнее отсутствие интереса к отладке собственной проблемы, уверены ли вы, что не были бы счастливы с более простым решением, например kubespray? - person mdaniel; 18.02.2019
comment
Я пытался отладить проблемы, но то, что вы мне рассказывали, было мне не по зубам, поскольку я новичок в linux, k8s, контейнерах и vSphere. Действительно короткие сроки, чтобы что-то наладить и запустить, и мы пытались следовать документам и руководствам, но, очевидно, боролись ... Хотя, цените всю помощь, которую вы пытались предоставить :) - person Stavros_S; 18.02.2019