曾国藩:一勤天下无难事

K8s的一次路由故障

2019.02.27

问题

今天有个客户三台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