本文踩坑之k8s网络不通的问题排除

运维 网络运维
kubernetes 网络不可用,测试结果是只能访问本机的podip、clusterip,访问别的机器的都过不去。

首先找出来保存很久的跨主机pod通信流程图。

本文踩坑之k8s网络不通的问题排除

简单解读下:

  • 数据从源容器中发出后,经由所在主机的Docker0虚拟网卡转发到flannel0虚拟网卡,这是个P2P的虚拟网卡,flanneld服务监听在网卡的另外一端。
  • Flannel通过Etcd服务维护了一张节点间的路由。
  • 源主机的flanneld服务将原本的数据内容UDP封装后根据自己的路由表投递给目的节点的flanneld服务,数据到达以后被解包,然后直 接进入目的节点的flannel0虚拟网卡,然后被转发到目的主机的Docker0虚拟网卡,最后就像本机容器通信一下的有Docker0路由到达目标容 器。

这样整个数据包的传递就完成了,

现象

kubernetes 网络不可用,测试结果是只能访问本机的podip、clusterip,访问别的机器的都过不去。

排查

查看flannel的日志,发现写入的规则都是10.244/16网段的

本文踩坑之k8s网络不通的问题排除

而我设置的pod网段都是10.20/24网段中。很明显这里的规则的意思是把10.244/16网段的流量转发到10.20/24网段了。有问题。。。

紧接着查看下加载的配置文件的文件,发现network网段在10.244.0.0/16网段,而子网在10.20.0.1/24网络,网络网段不匹配

本文踩坑之k8s网络不通的问题排除

解决

  1. kubectl get cm -n kube-system kube-flannel-cfg -o yaml  
  2. net-conf.json: |  
  3.  
  4. "Network": "10.20.0.0/16",  
  5. "Backend": {  
  6. "Type": "vxlan"  
  7.  

修改这里的network网段的位置,然后清除iptables,发现网络正常了。

责任编辑:赵宁宁 来源: 今日头条
相关推荐

2020-03-27 07:56:11

K8S生态体系运维

2022-04-22 13:32:01

K8s容器引擎架构

2024-02-20 16:55:14

K8S云计算

2023-11-06 07:16:22

WasmK8s模块

2023-05-04 15:49:59

KafkaK8sKubernetes

2021-07-14 18:21:38

负载均衡K8SgRPC

2023-09-06 08:12:04

k8s云原生

2024-03-28 18:08:44

Kubernetes抓包Pod

2022-09-05 17:28:25

k8sNode IPClusterIP

2023-11-07 08:23:05

2024-03-18 15:44:48

K8S故障运维

2024-01-26 14:35:03

鉴权K8sNode

2021-07-28 10:10:57

K8SMount PVCPod

2020-06-30 08:08:25

k8s监控

2023-05-25 21:38:30

2023-08-04 08:19:02

2023-08-03 08:36:30

Service服务架构

2020-05-12 10:20:39

K8s kubernetes中间件

2022-09-05 08:26:29

Kubernetes标签

2024-03-04 18:42:11

网络策略k8s网络通信
点赞
收藏

51CTO技术栈公众号