问题

今天有个客户三台master上有两台的kube-dns一直起不来,如图:

dns1

排查

  • 查看pod的日志:

    dns2

  • 看到报错后首先想到的就是rount有问题,然后通过查看路由发现,有问题的两台机器多了一条路由:

    dns3

  • 通过以下命令查看本机应该对应的flannel的路由:

      [root@node-dev-3 ~]# cat /run/flannel/subnet.env
      FLANNEL_NETWORK=10.5.0.0/16
      FLANNEL_SUBNET=10.5.2.1/24
      FLANNEL_MTU=1450
      FLANNEL_IPMASQ=true

解决方法

  • 删除多余的路由规则:

      [root@node-dev-3 ~]# route del -net 10.5.2.0 gw 172.26.7.12 netmask 255.255.255.0
  • 删除之前的旧dns pod

      [root@node-dev-3 ~]# kubectl delete pod -n kube-system kube-dns-xxx
  • 最后查看dns pod 已经正常运行

    dns4