kubernetes - Не удалось присоединиться к главному узлу - ошибка предварительной проверки фазы выполнения: не удалось проверить подлинность сервера API - PullRequest
1 голос
/ 19 апреля 2020

Я новичок в k8s, так что это может быть очень простой вопрос для тех, кто имеет опыт в k8s.

Я работаю с двумя узлами

  1. master - 2cpu, 2 ГБ памяти
  2. рабочий - 1 процессор, 1 ГБ памяти
  3. ОС - ubuntu - hashicorp / bionic64

Я успешно настроил мастер-узел и вижу его

vagrant@master:~$ kubectl get nodes
NAME     STATUS   ROLES    AGE   VERSION
master   Ready    master   29m   v1.18.2

Вот токен, который я сгенерировал

vagrant@master:~$ kubeadm token create --print-join-command
W0419 13:45:52.513532   16403 configset.go:202] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]
kubeadm join 10.0.2.15:6443 --token xuz63z.todnwgijqb3z1vhz     --discovery-token-ca-cert-hash sha256:d4dadda6fa90c94eca1c8dcd3a441af24bb0727ffc45c0c27161ee8f7e883521 

Issue - Но когда я пытаюсь присоединиться к нему с рабочего узла, я получаю

vagrant@worker:~$ sudo kubeadm join 10.0.2.15:6443 --token xuz63z.todnwgijqb3z1vhz     --discovery-token-ca-cert-hash sha256:d4dadda6fa90c94eca1c8dcd3a441af24bb0727ffc45c0c27161ee8f7e883521 
W0419 13:46:17.651819   15987 join.go:346] [preflight] WARNING: JoinControlPane.controlPlane settings will be ignored when control-plane flag is not set.
[preflight] Running pre-flight checks
        [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/
error execution phase preflight: couldn't validate the identity of the API Server: 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
To see the stack trace of this error execute with --v=5 or higher

Вот порты, которые заняты

10.0.2.15:2379 
10.0.2.15:2380 
10.0.2.15:68

Обратите внимание, я использую CNI с -

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

1 Ответ

1 голос
/ 29 апреля 2020

Вот ошибки, которые я понял во время установки kubernetes -

(Подробный шаг установки - Шаги по установке )

Но вот ключевые ошибки что я и сделал -

Ошибка 1 - Так как я работал на виртуальных машинах, у меня было несколько адаптеров ethe rnet на обеих моих виртуальных машинах (мастер также как рабочий). По умолчанию CNI всегда принимает eth0 , но в нашем случае это должно быть eth1

1: lo: <LOOPBACK,UP,LOWER_UP>
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:bb:14:75 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:fb:48:77 brd ff:ff:ff:ff:ff:ff
    inet 100.0.0.1
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP>

Ошибка 2- То, как я инициализировал мой kubeadm без - apiserver-advertise-address и - pod-network-cidr

Итак, вот команда kubeadm, которую я использовал -

[vagrant@master ~]$ sudo kubeadm init --apiserver-advertise-address=100.0.0.1 --pod-network-cidr=10.244.0.0/16

Ошибка 3 - - Так как в наших виртуальных машинах есть адаптер rnet с несколькими модулями, поэтому я не нашел способа настроить дополнительные аргументы для переключения с eth0 до eth1 в calico.yml конфигурация.

Итак, я использовал фланель CNI *

[vagrant@master ~]$ wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

и в разделе args добавлено - - iface = eth1

- --iface=eth1
        args:
        - --ip-masq
        - --kube-subnet-mgr
        - --iface=eth1

А сработало после этого

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...