【问题标题】:coredns crashes with error "Failed to list *v1.Service: Get https://10.96.0.1:443/api/v1/****: dial tcp 10.96.0.1:443: connect: no route to host"coredns 崩溃并出现错误“无法列出 *v1.Service: Get https://10.96.0.1:443/api/v1/****: dial tcp 10.96.0.1:443: connect: no route to host”
【发布时间】:2020-04-20 05:57:26
【问题描述】:

CoreDNS pod 未运行。请查看以下状态。

kubectl get po --all-namespaces -o wide | grep -i coredns
kube-system            coredns-6955765f44-8qhkr                    1/1     Running            0          24m     10.244.0.59      k8s-master          <none>           <none>
kube-system            coredns-6955765f44-lpmjk                    0/1     Running            0          24m     10.244.1.43      k8s-worker-node-1   <none>           <none>

请在下面找到 pod 的日志。

kubectl logs coredns-6955765f44-lpmjk -n kube-system



E0420 03:43:03.855622       1 reflector.go:125] pkg/mod/k8s.io/client-go@v0.0.0-20190620085101-78d2af792bab/tools/cache/reflector.go:98: 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: connect: no route to host
E0420 03:43:03.855622       1 reflector.go:125] pkg/mod/k8s.io/client-go@v0.0.0-20190620085101-78d2af792bab/tools/cache/reflector.go:98: 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: connect: no route to host
E0420 03:43:03.855622       1 reflector.go:125] pkg/mod/k8s.io/client-go@v0.0.0-20190620085101-78d2af792bab/tools/cache/reflector.go:98: 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: connect: no route to host
E0420 03:43:03.855622       1 reflector.go:125] pkg/mod/k8s.io/client-go@v0.0.0-20190620085101-78d2af792bab/tools/cache/reflector.go:98: 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: connect: no route to host
E0420 03:43:05.859525       1 reflector.go:125] pkg/mod/k8s.io/client-go@v0.0.0-20190620085101-78d2af792bab/tools/cache/reflector.go:98: 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: connect: no route to host
E0420 03:43:05.859525       1 reflector.go:125] pkg/mod/k8s.io/client-go@v0.0.0-20190620085101-78d2af792bab/tools/cache/reflector.go:98: 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: connect: no route to host

【问题讨论】:

  • 你安装了法兰绒或印花布之类的cni吗?
  • kubernetes 部署在哪里?本地使用 Minikube 或公共云?
  • 我已经在集群中安装了 flannel pod 网络,并在虚拟机上本地使用 kubeadm 部署了 kubernetes 集群的 2 个节点。
  • 在运行kubeadm init 时,您是否为法兰绒指定了正确的 pod cidr?您是否也尝试过刷新 iptables?
  • 我已经刷新了所有节点上的 iptables 并删除了两个 coredns。现在两个 coredns 豆荚都显示健康。我不明白为什么在 iptable 刷新之前日志显示没有到主机的路由,因为我能够远程登录到端口 443 上的 ClusterIP。如果 iptable 导致此问题,那么我应该应用哪个 iptable 规则来永久解决此问题。

标签: kubernetes kubernetes-pod coredns


【解决方案1】:

要解决 CoreDNS pod 的 no route to host 问题,您必须通过运行来刷新 iptables:

systemctl stop kubelet
systemctl stop docker
iptables --flush
iptables -tnat --flush
systemctl start kubelet
systemctl start docker

另外请注意,法兰绒已从kubeadm documentation 中的 CNI 列表中删除:

原因是集群生命周期已经 遇到一些与 flannel 相关的问题(在 kubeadm 或 kops 门票),我们没有为用户提供好的答案,因为 项目没有积极维护。 - 添加注释,CNI 的问题应记录在相应的问题中 跟踪器,Calico 是我们 e2e 测试 kubeadm 的唯一 CNI。

因此推荐的方法也将移至 Calico CNI。

【讨论】:

    【解决方案2】:

    我使用带有法兰绒的 K8s 1.19.7 没有任何错误,一旦我升级到 1.21.1,它就开始显示上述错误并且以下修复对我有用

    firewall-cmd --permanent --zone=trusted --add-source=10.244.0.0/16
    firewall-cmd --reload
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-21
      • 2021-09-25
      • 2022-11-24
      • 1970-01-01
      • 2013-08-21
      • 2022-12-30
      • 1970-01-01
      • 2016-02-26
      相关资源
      最近更新 更多