Я пытался настроить кластер из 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 никогда не будут полностью готовы.
Я рад предоставить любые дополнительные сообщения журнала, которые могут быть полезны.