CoreDNS从未在我的RPi Kubernetes集群上启动



我一直在尝试按照旧指南设置一个由4个Raspberry Pi 4组成的集群来运行Kubernetes。我以前做过一次,很成功。但经过一次移动和其他一些更改,我决定用新安装的树莓派操作系统和最新版本的kubeadm(1.19(等重新创建集群。唯一的例外是,根据这条评论,我使用的是Weave 2.6.5,而不是最新版本,因为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控制器管理器和kube调度程序定期重新启动也有点奇怪,但我想知道这是否与DNS从未出现的事实无关?无论如何,以下是DNS容器的pod日志示例:

$ 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/client-go@v0.18.3/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/client-go@v0.18.3/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/client-go@v0.18.3/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/client-go@v0.18.3/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/client-go@v0.18.3/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/client-go@v0.18.3/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,也很喜欢它。但我必须承认,当我进入它正在做的事情的底层时(读作:当它不起作用时(,我发现自己迷失了方向。我的Pi的本地IP是192.168.1.194。事实上,所有本地IP都在192.168.x.x范围内。那么,为什么它似乎试图访问10.96.0.1,然后获得I/O超时呢?这正常吗?这只是Docker网络内部的一部分吗,比如映射到Docker系统的假IP之类的?

更重要的是,我可能需要做些什么,让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容器从未完全准备好。

我很乐意提供任何可能有用的额外日志消息。

我想明白了。。。我是个傻瓜。我允许16443端口通过防火墙(ufw(,但我应该允许6443端口通过。开放那个港口解决了一切问题。

最新更新