K8S集群中Pod与Pod之间网络故障排查思路

K8S集群中Pod与Pod之间网络故障排查思路

1.Pod与Pod之间通信故障

在K8S集群中,可能会出现Pod与Pod之间无法通信的现象,也就是说Pod无法跨Node主机进行通信,Pod与Pod之间网络不通讯会导致无法请求Pod中的服务,Apiserver也可能会无法获取Pod的运行状态,产生一系列问题。

Pod与Pod之间网络不通讯,很有可能是网络组件产生了异常导致的。

排查Pod网络通信故障的通用思路:

  • 首先排查网络组件Calico的运行状态,即使处于Running状态,也要查一查Calico的运行日志,从日志中可以获取关键信息。
  • 排查Kube-proxy组件的运行状态,当Kube-proxy异常时,Calico也会产生问题。
  • 排查容器的运行日志,观察Docker服务的状态。

2.Pod与Pod之间网络通信故障排查思路

问题:由于Pod网络与物理机网段重合,导致Pod与Pod之间的网络不通讯。

1)首先排查Calico网络组件的运行日志,可以在日志中获取关键信息,如果是Pod网络与物理机网络重合导致的网络不通讯,会在日志中看到相应的报错内容,此时我们就需要修改Pod网段的IP地址了。

2)首先保存当前IP pool的信息。

  # kubectl get ippool
  NAME                  AGE
  default-ipv4-ippool   42d
  
  # kubectl get ippool default-ipv4-ippool -o yaml > default-ipv4-ippool.yaml

3)调整Pod的IP的新网络地址

[root@k8s-master ~]# vim default-ipv4-ippool.yaml
spec:
  blockSize: 26
  cidr: 100.64.0.0/10

在这里插入图片描述

4)删除现有的ippool,然后创建新的ippool。

# kubectl delete -f default-ipv4-ippool.yaml
# kubectl apply -f default-ipv4-ippool.yaml

5)情况ipvs/iptables转发策略,重新部署网络插件。

6)增加新的Node节点,验证是否是新的Pod地址,然后驱逐旧Node节点中的Pod。

7)删除旧Node节点,重新加入集群。

猜你喜欢

转载自blog.csdn.net/weixin_44953658/article/details/125864911