CoreDNS никогда не запускается в моем кластере RPi Kubernetes

Я пытался настроить кластер из 4 Raspberry Pi 4 для запуска Kubernetes после старый гид. Я уже однажды делал это успешно. Но после переезда и некоторых других изменений я решил воссоздать кластер с новыми установками Raspberry Pi OS и последней версии kubeadm (1.19) и т. Д. Единственным исключением является то, что я использую Weave 2.6.5 вместо последней. per этот комментарий, так как кажется, что последняя версия Weave не работает на Pis - я в этом убедился.

К сожалению, после совершенно новых, свежих установок всего, кажется, что модули CoreDNS никогда не появятся. Weave.net успешно заработал. Но CoreDNS никогда этого не делает. Вот список моих беговых подов:

$ k get pods -n kube-system
NAME                                   READY   STATUS    RESTARTS   AGE
coredns-f9fd979d6-6jlq7                0/1     Running   0          6m4s
coredns-f9fd979d6-qqnzw                0/1     Running   0          6m5s
etcd-k8s-master-1                      1/1     Running   0          24m
kube-apiserver-k8s-master-1            1/1     Running   0          24m
kube-controller-manager-k8s-master-1   1/1     Running   2          24m
kube-proxy-dq62m                       1/1     Running   0          24m
kube-scheduler-k8s-master-1            1/1     Running   2          24m
weave-net-qb7t7                        2/2     Running   0          17m

Также немного странно, что kube-controller-manager и kube-scheduler периодически перезагружаются, но мне интересно, не связано ли это с тем, что DNS никогда не запускается? В любом случае, вот образец логов pod для контейнеров DNS:

$ k logs -n kube-system pod/coredns-f9fd979d6-6jlq7
.:53
[INFO] plugin/reload: Running configuration MD5 = db32ca3650231d74073ff4cf814959a7
CoreDNS-1.7.0
linux/arm, go1.14.4, f59c03d
[INFO] plugin/ready: Still waiting on: "kubernetes"
[INFO] plugin/ready: Still waiting on: "kubernetes"
I1027 17:22:37.977315       1 trace.go:116] Trace[1427131847]: "Reflector ListAndWatch" name:pkg/mod/k8s.io/[email protected]/tools/cache/reflector.go:125 (started: 2020-10-27 17:22:07.975379387 +0000 UTC m=+0.092116055) (total time: 30.00156301s):
Trace[1427131847]: [30.00156301s] [30.00156301s] END
I1027 17:22:37.977301       1 trace.go:116] Trace[2019727887]: "Reflector ListAndWatch" name:pkg/mod/k8s.io/[email protected]/tools/cache/reflector.go:125 (started: 2020-10-27 17:22:07.976078211 +0000 UTC m=+0.092814546) (total time: 30.000710725s):
Trace[2019727887]: [30.000710725s] [30.000710725s] END
E1027 17:22:37.977433       1 reflector.go:178] pkg/mod/k8s.io/[email protected]/tools/cache/reflector.go:125: Failed to list *v1.Namespace: Get "https://10.96.0.1:443/api/v1/namespaces?limit=500&resourceVersion=0": dial tcp 10.96.0.1:443: i/o timeout
E1027 17:22:37.977471       1 reflector.go:178] pkg/mod/k8s.io/[email protected]/tools/cache/reflector.go:125: Failed to list *v1.Service: Get "https://10.96.0.1:443/api/v1/services?limit=500&resourceVersion=0": dial tcp 10.96.0.1:443: i/o timeout
I1027 17:22:37.978491       1 trace.go:116] Trace[911902081]: "Reflector ListAndWatch" name:pkg/mod/k8s.io/[email protected]/tools/cache/reflector.go:125 (started: 2020-10-27 17:22:07.97561805 +0000 UTC m=+0.092354423) (total time: 30.002742659s):
Trace[911902081]: [30.002742659s] [30.002742659s] END
E1027 17:22:37.978535       1 reflector.go:178] pkg/mod/k8s.io/[email protected]/tools/cache/reflector.go:125: Failed to list *v1.Endpoints: Get "https://10.96.0.1:443/api/v1/endpoints?limit=500&resourceVersion=0": dial tcp 10.96.0.1:443: i/o timeout
[INFO] plugin/ready: Still waiting on: "kubernetes"
[INFO] plugin/ready: Still waiting on: "kubernetes"

Как разработчик приложений я использовал Kubernetes, и он мне очень понравился. Но я должен признаться, когда я вхожу в суровую ходовую часть того, что он делает (читай: когда это не работает), я очень теряюсь. Локальный IP-адрес моего Pi - 192.168.1.194. Фактически все локальные IP-адреса находятся в диапазоне 192.168.x.x. Так почему же кажется, что он пытается получить доступ к 10.96.0.1, а затем получает тайм-аут ввода-вывода? Это нормально? Это всего лишь часть внутреннего устройства Docker, например, поддельный IP-адрес, сопоставленный с системой Docker, или что-то подобное?

И что еще более важно, что мне нужно сделать, чтобы DNS заработал? Естественно, я могу нормально свернуть вещи с консоли, поэтому DNS работает на Pi. Ранее во время установки я также выполнил следующие команды:

sudo iptables -P FORWARD ACCEPT
sudo ufw allow 8080
sudo ufw allow 16443
sudo ufw allow ssh
sudo ufw default allow routed
sudo ufw enable

По моему опыту, эти несколько команд были всем, что нужно для разблокировки работы DNS, но, к сожалению, на этот раз этого недостаточно, поскольку контейнеры CoreDNS никогда не будут полностью готовы.

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


person soapergem    schedule 27.10.2020    source источник
comment
Какой сетевой плагин вы используете? Как раскрутить кластер k8s? 10.96.0.1 кажется вашим IP-адресом kube-apiserver. Вам нужна внутренняя система DNS K8s для правильного обнаружения сервисов и так далее. Попробуйте: curl 10.96.0.1:443/version со своих узлов - Вы использовали: --bind -address или -advertise-address во время установки? Проверьте логи модуля kube-apiserver!   -  person Berndinox    schedule 27.10.2020
comment
Как упоминалось выше, я использую weave-net 2.6.5 в качестве сетевого плагина. И я установил сам Kubernetes, просто установив kubeadm, а затем запустив kubeadm init. Более обширный список команд, которые я выполнял, включен в первую ссылку, которой я поделился . Я уверен, что не использовал ни один из двух упомянутых вами аргументов (адрес привязки или адрес рекламы), и на самом деле я даже не уверен, что это за аргументы? Похоже, они не являются аргументами для инициализации kubeadm. .   -  person soapergem    schedule 28.10.2020


Ответы (1)


Разобрался ... Я болван. Я разрешил порт 16443 через брандмауэр (ufw), но я должен был разрешить 6443. Открытие этого порта устранило все.

person soapergem    schedule 05.11.2020