Carsonyang
你好,我换成了 flannel 后,发现一个事情,还是不通,但是这回我留了一个心眼
# 正常的节点上有这个路由
10.233.66.0/24 via 10.233.66.0 dev flannel.1 onlink
在集群正常的节点上 ping 10.233.66.1 可以通 ( 属于我一直搞不定的节点的 cni0 - ip)
但是 ping 10.233.66.2 的时候,还是不通,这个节点实在搞不定, 不知道是不是docker 本身的问题也有关系???
然后我使用观测,通过父节点去 ping 10.233.66.2 ,结果在部署该容器(10.233.66.2)的节点上使用观测 发现是有转发成功的!!! 显然是本地的 flannel.1 节点与docker通讯出现了问题
tcpdump -i flannel.1 -nn icmp
09:46:37.909310 IP 10.233.64.0 > 10.233.66.2: ICMP echo request, id 55058, seq 1, length 64
09:46:38.959799 IP 10.233.64.0 > 10.233.66.2: ICMP echo request, id 55058, seq 2, length 64
09:46:39.983796 IP 10.233.64.0 > 10.233.66.2: ICMP echo request, id 55058, seq 3, length 64
没有 10.233.66.2 > 10.233.64.0 的回执!!!!
然后我执行
iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
902K 160M KUBE-FIREWALL all -- * * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy DROP 0 packets, 0 bytes) -- policy DROP --> 所以转发失败
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
890K 177M KUBE-FIREWALL all -- * * 0.0.0.0/0 0.0.0.0/0
Chain KUBE-FIREWALL (2 references)
pkts bytes target prot opt in out source destination
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 /* kubernetes firewall for dropping marked packets */ mark match 0x8000/0x8000
0 0 DROP all -- * * !127.0.0.0/8 127.0.0.0/8 /* block incoming localnet connections */ ! ctstate RELATED,ESTABLISHED,DNAT
# 接着执行允许转发 ,设置 Chain FORWARD -> policy ACCEPT ,即可完成通讯转发
iptables -P FORWARD ACCEPT
# 无法接收转发消息的机器上在观测下
tcpdump -i flannel.1 -nn icmp
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on flannel.1, link-type EN10MB (Ethernet), capture size 262144 bytes
09:55:45.068634 IP 10.233.64.0 > 10.233.66.2: ICMP echo request, id 59999, seq 1, length 64
09:55:45.068679 IP 10.233.66.2 > 10.233.64.0: ICMP echo reply, id 59999, seq 1, length 64
09:55:46.070404 IP 10.233.64.0 > 10.233.66.2: ICMP echo request, id 59999, seq 2, length 64
09:55:46.070443 IP 10.233.66.2 > 10.233.64.0: ICMP echo reply, id 59999, seq 2, length 64
问题解决了!!!!
# 如果还不行,要查阅下这个,开启转发配置
sysctl -a | grep ip_forward
net.ipv4.ip_forward = 1
net.ipv4.ip_forward_update_priority = 1
net.ipv4.ip_forward_use_pmtu = 0