一、问题现象
1、测试部署了一个service,包括2个pod,分别在node1和node2上。
[root@k8s-master ~]# kubectl get svc -o wide
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
kubernetes 10.254.0.1 <none> 443/TCP 18d <none>
mymysql 10.254.204.143 <nodes> 3306:30002/TCP 11d app=mymysql
mysql 10.254.137.129 <nodes> 3306:30004/TCP 11d app=mysql
nginx 10.254.132.190 <nodes> 80:30001/TCP 17d app=nginx
nginx1 10.254.158.154 <nodes> 80:30005/TCP 15d app=nginx1
redis 10.254.110.138 <nodes> 6379:30003/TCP 16d app=redis
tomcat 10.254.88.182 <nodes> 8080:30008/TCP 13d app=tomcat
[root@k8s-master ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE
centos-ssh-kp0zz 1/1 Running 0 8d 172.20.4.8 192.168.1.200
mymysql-q2v72 1/1 Running 0 5d 172.20.4.3 192.168.1.200
mysql-grml8 1/1 Running 0 11d 172.20.4.5 192.168.1.200
nginx-51l1m 1/1 Running 0 1h 172.20.66.20 192.168.1.201
nginx-gfpb7 1/1 Running 0 1h 172.20.4.12 192.168.1.200
nginx-tb5rb 1/1 Running 2 17d 172.20.66.4 192.168.1.201
nginx1-4101028372-zp4f8 1/1 Running 0 5m 172.20.66.5 192.168.1.201
nginx2-20kkr 1/1 Running 1 13d 172.20.66.8 192.168.1.201
php-apache-klbbq 1/1 Running 0 2d 172.20.4.11 192.168.1.200
redis-b440v 1/1 Running 1 16d 172.20.66.2 192.168.1.201
2、在node1(或者node2)上curl 10.254.132.190(cluster ip),只有当负载到本地pod时正常,curl <本地pod ip和另一个主机pod ip>是正常的。
二、解决方案
ip route add 10.254.0.0/16 dev flannel0
2.1、主机间可以通信,但是本地pod不正常了。
2.2、删除上述路由信息,添加如下路由解决。
ip route add 10.254.0.0/16 dev docker0