为什么 kubernetes 环境要求开启 bridge-nf-call-iptables

为什么 kubernetes 环境要求开启 bridge-nf-call-iptables ? 背景 Kubernetes 环境中,很多时候都要求节点内核参数开启 bridge-nf-call-iptables:

参考官方文档 Network Plugin Requirements 如果不开启或中途因某些操作导致参数被关闭了,就可能造成一些奇奇怪怪的网络问题,排查起来非常麻烦。 为什么要开启呢?本文就来跟你详细掰扯下。 基于网桥的容器网络 Kubernetes 集群网络有很多种实现,有很大一部分都用到了 Linux 网桥:     每个 Pod 的网卡都是 veth 设备,veth pair 的另一端连上宿主机上的网桥。 由于网桥是虚拟的二层设备,同节点的 Pod 之间通信直接走二层转发,跨节点通信才会经过宿主机 eth0。 Service 同节点通信问题 不管是 iptables 还是 ipvs 转发模式,Kubernetes 中访问 Service 都会进行 DNAT,将原本访问 ClusterIP:Port 的数据包 DNAT 成 Service 的某个 Endpoint Read more…

calico网络问题排查

问题:今天同事安装了一套k8s环境, 结果发现calico网络互相访问不通,同台机器上的pod之间的calico ip都ping不通 分析解决: calico支持三种网络模式,可通过修过calico.yaml进行配置: overlay之ipip overlay之vxlan underlay之BGP overlay — ipip traffic flow   overlay — vxlan traffic flow underlay — BGP traffic flow 本环境用的是CrossSubnet且都在同网段,用的是BGP 下面是node信息:

  查看yks2上的路由:

  可以看到, 172.23.27.0/24 via 10.16.245.47 dev ens3 proto bird 这条路由,172.23.27.0/24这个地址是直接到yks2主机上的

在yks2上ping coredns:

上主机yks2上抓包: 首先抓宿主机网卡:

可以接收到包 看下yks2的路由:

Read more…