【问题标题】:Kubernetes Pod communication across nodes, How does it work?Kubernetes Pod 跨节点通信,它是如何工作的?
【发布时间】:2022-03-05 07:13:41
【问题描述】:

我一直在研究 kubernetes pod 通信是如何跨节点工作的,到目前为止,这是我的收获:

基本上,下图描述。每个 pod 如何拥有连接到 veth 的网络接口 eth0,然后桥接到主机的 eth0 接口。

在 pod 之间进行跨节点通信的一种方法是相应地配置路由表。

假设节点 A 的地址域为 10.1.1.0/24,节点 B 的地址域为 10.1.2.0/24。

我可以在节点 A 上配置路由表,将 10.1.2.0/24 的流量转发到 10.100.0.2(节点 B 的 eth0),类似地配置节点 B 将 10.1.1.0/24 的流量转发到 10.100.0.1(节点A的eth0)

如果我的节点没有被路由器分隔,或者如果路由器被相应地配置,这可以工作,因为否则它们会丢弃以私有 IP 地址作为目标的数据包,这是不切实际的!

在这里,我们将讨论 SDN,我不太清楚,但显然是解决方案。 据我所知,SDN 封装数据包以设置可路由的源和目标 Ips

所以基本上要在 kubernetes 上部署一个创建 SDN 的容器网络插件,你基本上是创建守护程序集和其他辅助 kubernetes 对象。

我的问题是:

这些守护程序集如何替换路由表修改并确保 pod 可以跨节点通信?

同样是 pod 的守护程序集如何影响网络和其他具有不同命名空间的 pod?

【问题讨论】:

  • Tim Hockin(SIG 网络上的 Kubernetes 工程师)recently posteddocument 的流程图解释了 kube-proxy 如何作用于 iptables 规则。值得一读。
  • Kube 代理实际上处理服务资源实现,它修改 iptables 以在接收到以服务 IP 地址为目的地的数据包时将数据包重定向到 pod,这是另一个话题,但谢谢!

标签: kubernetes sdn


【解决方案1】:

这些守护程序集如何替换路由表修改并确保 pod 可以跨节点通信?

可以使用 kubenet-pluginCNI-plugin 自定义网络,如在每个节点上运行的 Network Pluginskubelet 中所述。网络插件负责处理路由,可能使用kube-proxy。例如。 Cilium CNI 插件是一个complete replacement of kube-proxy,正在使用eBPF instead of iptables

同样是 pod 的守护程序集如何影响网络和其他具有不同命名空间的 pod?

是的,DaemonSet 是普通的 pod。 Kubelet 是一个特殊的node-component,用于管理 Pod,但不是由 Kubernetes 创建的容器除外。

Life of a packet 是关于 Kubernetes 网络的推荐演示文稿

【讨论】:

  • 感谢您的回答,我已经查阅了链接的文档,将观看视频,但这并不满足我,我想要更深入的解释。
猜你喜欢
  • 1970-01-01
  • 2021-11-10
  • 1970-01-01
  • 2019-04-08
  • 2021-12-30
  • 2020-01-15
  • 2020-04-20
  • 1970-01-01
  • 2018-06-09
相关资源
最近更新 更多