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

Docker CoreDNS从未在我的RPi Kubernetes群集上启动,docker,kubernetes,dns,raspberry-pi,weave,Docker,Kubernetes,Dns,Raspberry Pi,Weave,我一直在尝试建立一个由4个树莓皮4组成的集群来运行Kubernetes。我以前做过一次,很成功。但是在一次移动和一些其他更改之后,我决定重新创建集群,安装Raspberry Pi OS和最新版本的kubeadm(1.19),等等。唯一的例外是我使用的是Weave 2.6.5,而不是最新的per,因为最新版本的Weave似乎在Pis上不起作用——这是我自己确认的 不幸的是,在全新的、全新的安装之后,CoreDNS吊舱似乎永远不会出现。Weave.net开发成功。但CoreDNS从来没有这样做过。以

我一直在尝试建立一个由4个树莓皮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控制器管理器和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。打开该端口可以修复所有问题。

您使用什么网络插件?如何启动k8s集群?10.96.0.1似乎是您的kube apiserver IP。您需要一个K8s内部DNS系统来进行正确的服务发现等。Try:curl从您的节点--您在安装过程中使用了:-绑定地址还是--播发地址?检查kube apiserver吊舱的日志!如上所述,我使用weave net 2.6.5作为网络插件。我通过简单地安装kubeadm然后运行kubeadm init来安装Kubernetes本身。在我共享的中有一个更广泛的我运行的命令列表。我肯定我没有使用你提到的两个参数中的任何一个(绑定地址或广告地址),事实上我甚至不确定这些参数是什么?对kubeadm init来说,它们似乎不是。