docker 容器无法使用 CNI 桥接器互相 ping 通(同一主机)

docker 容器无法使用 CNI 桥接器互相 ping 通(同一主机)

我正在尝试将桥接 CNI 插件与独立 kubelet 一起使用,但无法彼此 ping 通 pod(同一节点)。

我能够从主机和 pod 本身 (使用其子网 IP) ping 一个 pod。

此外,来自“呼叫者”pod的数据包到达网桥:10:28:00.951871 IP ip-10-0-1-4.eu-west-3.compute.internal > ip-10-0-1-5.eu-west-3.compute.internal: ICMP echo request, id 15, seq 22, length 64

但不是其他 pod 的接口(tcpdump 没有看到任何 ping)。

我尝试访问的 pod 有 10.0.1.5 IP 地址(我可以从主机和自身 ping 通它)

cni 配置:

{
    "cniVersion": "0.3.1",
    "name": "bridge",
    "type": "bridge",
    "bridge": "cnio0",
    "isGateway": true,
    "ipMasq": true,
    "ipam": {
        "type": "host-local",
        "ranges": [
          [{"subnet": "10.0.1.0/24"}] 
        ],
        "routes": [{"dst": "0.0.0.0/0"}]
    }
}

brctl 显示 2 个 veth 对实际上已连接到桥。

我还尝试添加firewallCNI 插件,并在桥接后加载它,但没有成功......

为了使其正常工作,我还需要配置其他东西吗?

答案1

我将其添加firewall为一个单独的文件。

将网桥和防火墙一起设置实际上是可行的:

cat <<EOF | sudo tee /etc/cni/net.d/10-bridge.conflist
{
    "cniVersion": "0.4.0",
    "name": "bridge-firewalld",
    "plugins": [
      {
        "type": "bridge",
        "bridge": "cnio0",
        "isGateway": true,
        "ipMasq": true,
        "ipam": {
            "type": "host-local",
            "subnet": "10.0.1.0/24",
            "routes": [
                { "dst": "0.0.0.0/0" }
            ]
        }
      },
      {
        "type": "firewall",
        "backend": "iptables"
      }
    ]
}
EOF

相关内容