Kubernetes主机间curl cluster ip时通时不通

1. 问题现象

测试部署了一个service,包括2个pod,分别在node1和node2上。

[root@k8s ~]# kubectl get svc 
NAME        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
nginx-svc   10.254.216.26   <none>        80/TCP    43m
[root@k8s ~]# kubectl get pod
NAME                                READY     STATUS    RESTARTS   AGE
busybox                             1/1       Running   3          65d
nginx-deployment-4087004473-d3tkv   1/1       Running   0          9m
nginx-deployment-4087004473-gdm3q   1/1       Running   0          54m

在node1(或者node2)上curl 10.254.216.26(cluster ip),只有当负载到本地pod时正常,curl <本地pod ip和另一个主机pod ip>是正常的。

2. 解决方案

参考 https://stackoverflow.com/questions/34639185/communication-failing-between-kubernetes-nodes-and-clusterip 添加路由后,

ip route add 10.254.0.0/16 dev flannel.1

主机间可以通信,但是本地pod不正常了。

删除上述路由信息,添加路由如下路由解决。

ip route add 10.254.0.0/16 dev docker0
标签:KubernetesCurl 发布于:2019-11-09 18:39:58