根据docker docs(强调我的):
<块引用>在 Linux 上,Docker 操纵 iptables 规则来提供网络隔离。虽然这是一个实现细节(...)你不应该修改Docker插入到你的iptables策略中的规则......
和
<块引用>可以在 /etc/docker/daemon.json 的 Docker 引擎配置文件中将 iptables 键设置为 false,但是此选项不适合大多数用户。不可能完全阻止 Docker 创建 iptables 规则,并且事后创建它们极其复杂,超出了这些说明的范围。将 iptables 设置为 false 很可能会破坏 Docker 引擎的容器网络。
文档确实清楚地表明您不应该弄乱这些选项,但他们没有提供任何进一步的信息。那么,问题是禁用 docker 对 iptables 操作的问题究竟是什么? 这将如何影响跑步:
我假设容器互联网连接将通过手动设置 docker0
的 NAT 规则来处理,如描述的,例如here。
答案 0 :(得分:1)
我决定回答部分与 Kubernetes 相关的问题。
典型的 Kubernetes 网络设置依赖于符合 CNI plugins 的第三方工具 (Container Network Interface Specification)。您可以找到不同的 Kubernetes 网络选项
在 Kubernetes networking model 文档中。
Kubernetes 有自己的一组 iptables
规则,由 kube-proxy
管理,用于在 Pod 和服务之间执行各种过滤和 NAT。最重要的链是 KUBE-SERVICES
、KUBE-SVC-*
和 KUBE-SEP-*
(参见:Kubernetes networking basics)。
同样重要的是要知道 Kubernetes 不需要使用 docker 默认网桥 (docker0
),因为它使用 CNI 进行网络设置。每个 Kubernetes CNI 插件的工作方式都略有不同,因此最好查看其官方文档中的详细概念。