Kubernetes - Ошибка соединения узла с использованием kubeadm - PullRequest
0 голосов
/ 03 февраля 2020

Я пытаюсь создать новый кластер kubernetes, имея один главный и один рабочий узел. Я выполнил все настройки в главном узле с помощью инструмента kubeadm. Все компоненты плоскости управления работают в главном узле, и это проверяется путем проверки состояния модуля.

coredns-6955765f44-xspkr           0/1     Pending   0          8d
etcd-master-1                      1/1     Running   1          8d
kube-apiserver-master-1            1/1     Running   1          8d
kube-controller-manager-master-1   1/1     Running   1          8d
kube-proxy-8z8qr                   1/1     Running   1          8d
kube-scheduler-master-1            1/1     Running   1          8d

После установки kubectl, kubeadm, kubelet и docker в рабочий узел я попытался добавить подключиться к кластеру, выполнив команду kubeadmin join , указав токен и токен обнаружения, но получив ошибку ниже.

I0202 22:17:57.778406   28654 token.go:78] [discovery] Failed to request cluster info: [Get https://10.0.2.15:6443/api/v1/namespaces/kube-public/configmaps/cluster-info?timeout=10s: dial tcp 10.0.2.15:6443: connect: connection refused]

Я выполнил команду ping master с рабочего узла и смог это сделать , Я также отключил брандмауэр и даже после этого не смог присоединиться к кластеру.

Есть ли какие-либо предварительные условия, которые необходимо выполнить на рабочем узле, кроме установки вышеуказанных компонентов, как я уже упоминал? Любая помощь будет принята с благодарностью.

New Discovery

Одна интересная вещь, которую я только что нашел, - это IP-адрес enp0s3 . Хотя я использую IP-адрес enp0s8 для входа в виртуальную машину, enp0s3 на обоих основных рабочих узлах одинаков, что, как мне кажется, вызывает проблему. когда я генерирую токен с помощью команды создания куба kubeadm в главном узле, он дает URL-адрес kubeapi с ip enp0s3 as (kubeadm join 10.0.2.15:6443), который, как представляется, является общим как для главного, так и для рабочего узла.

Master enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.0.2.15 netmask 255.255.255.0 broadcast 10.0.2.255 inet6 fe80::b7:1fff:fe33:e924 prefixlen 64 scopeid 0x20<link> ether 02:b7:1f:33:e9:24 txqueuelen 1000 (Ethernet) RX packets 45801 bytes 50621300 (50.6 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 12270 bytes 811968 (811.9 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 Worker enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.0.2.15 netmask 255.255.255.0 broadcast 10.0.2.255 inet6 fe80::b7:1fff:fe33:e924 prefixlen 64 scopeid 0x20<link> ether 02:b7:1f:33:e9:24 txqueuelen 1000 (Ethernet) RX packets 703 bytes 588444 (588.4 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 305 bytes 23784 (23.7 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 Не уверен, что у этих виртуальных машин одинаковый IP для enp0s3, и есть ли способ решить эту проблему?

1 Ответ

0 голосов
/ 03 февраля 2020

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

Следуйте этим инструкции по развертыванию сетевой надстройки:

Например, чтобы развернуть Calico как сетевую надстройку, выполните на узле master следующее:

Calico является поставщиком сетевых и сетевых политик. Calico поддерживает гибкий набор сетевых параметров, так что вы можете выбрать наиболее эффективный вариант для вашей ситуации, включая сети без наложения и наложения, с или без BGP. Calico использует тот же механизм для обеспечения сетевой политики для хостов, модулей и (при использовании Istio & Envoy) приложений на уровне обслуживания me sh. Calico работает на нескольких архитектурах, включая amd64, arm64 и ppc64le.

. По умолчанию Calico использует 192.168.0.0/16 в качестве CIDR для Pod-сети, хотя это можно настроить в calico.yaml. файл. Для правильной работы Calico вам нужно передать этот же CIDR команде kubeadm init с помощью флага --pod-network-cidr=192.168.0.0/16 или через конфигурацию kubeadm.

kubectl apply -f https://docs.projectcalico.org/v3.11/manifests/calico.yaml

После установки сети Pod вы можете подтвердить что он работает, проверив, что модуль CoreDNS работает в выводе kubectl get pods --all-namespaces. И после того, как модуль CoreDNS запущен, вы можете продолжить, присоединившись к своим узлам.

Если ваша сеть не работает или CoreDNS не находится в рабочем состоянии, ознакомьтесь с нашими документами по устранению неполадок .


Также не забудьте сгенерировать новый токен для присоединяющихся работников, так как срок их действия истекает через 24 часа после того, как вы инициализировали свой мастер-узел, и ваш мастер работает уже 8 дней.

As упомянутые в kubernetes документация вы можете использовать следующую команду на вашем главном узле для генерации нового токена:

kubeadm token create

Обновление:

При использовании VirtualBox виртуальных машин для kubernetes рекомендуется использовать режим сетевого моста.

Это подробно объясняется в здесь .

Есть статья об изменении режима сети на мостовой здесь .

После изменения режима сети убедитесь, что также проверены, обновлены ли сетевые интерфейсы виртуальной машины. Мы не хотим иметь сеть объявление dress коллизии.

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

Для этого сначала используйте kubeadm reset, который лучше всего откатывает изменения, внесенные на этом хосте. с помощью 'kubeadm init' или 'kubeadm join'. Затем используйте kubeadm init с измененной конфигурацией для новых сетевых настроек.

Не забудьте установить сетевое дополнение kubernetes перед присоединением к другим рабочим узлам.

Надеюсь, это поможет.

...