阻止 docker 操纵 iptables 规则的缺点是什么?

时间:2021-03-11 09:38:48

标签: docker kubernetes networking docker-compose iptables

根据docker docs(强调我的):

<块引用>

在 Linux 上,Docker 操纵 iptables 规则来提供网络隔离。虽然这是一个实现细节(...)你不应该修改Docker插入到你的iptables策略中的规则......

<块引用>

可以在 /etc/docker/daemon.json 的 Docker 引擎配置文件中将 iptables 键设置为 false,但是此选项不适合大多数用户。不可能完全阻止 Docker 创建 iptables 规则,并且事后创建它们极其复杂,超出了这些说明的范围。将 iptables 设置为 false 很可能会破坏 Docker 引擎的容器网络

文档确实清楚地表明您不应该弄乱这些选项,但他们没有提供任何进一步的信息。那么,问题是禁用 docker 对 iptables 操作的问题究竟是什么? 这将如何影响跑步:

我假设容器互联网连接将通过手动设置 docker0 的 NAT 规则来处理,如描述的,例如here

1 个答案:

答案 0 :(得分:1)

我决定回答部分与 Kubernetes 相关的问题。
典型的 Kubernetes 网络设置依赖于符合 CNI plugins 的第三方工具 (Container Network Interface Specification)。您可以找到不同的 Kubernetes 网络选项 在 Kubernetes networking model 文档中。

Kubernetes 有自己的一组 iptables 规则,由 kube-proxy 管理,用于在 Pod 和服务之间执行各种过滤和 NAT。最重要的链是 KUBE-SERVICESKUBE-SVC-*KUBE-SEP-*(参见:Kubernetes networking basics)。

同样重要的是要知道 Kubernetes 不需要使用 docker 默认网桥 (docker0),因为它使用 CNI 进行网络设置。每个 Kubernetes CNI 插件的工作方式都略有不同,因此最好查看其官方文档中的详细概念。