0%

解决K8S中Pod无法跨节点通信的问题

这是由于,采用kubeadm安装的时候,使用的命令并非默认命令,而是:

1
kubeadm init --pod-network-cidr=10.222.0.0/16

所以,K8S调度分发到每个NODE的时候分配的子网并不是默认的 10.244.0.0/16,但是当我们使用如下命令:

1
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

安装kube-flannel网络插件的时候,使用的又是默认的10.244.0.0/16来进行iptables规则配置,就出现了,POD发出的IP包经过iptables转换之后无法到达对应的主机。

解决办法:

  • kubectl delete -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml删除flannel插件。

  • wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml将yml文件下载下来。

  • 编辑yml中的net-conf.json字段,使其中的子网分配为你kubeadm初始化的子网地址。

  • 重新应用kubectl apply -f kube-flannel.yml