跨节点的Kubernets Pod通信,它如何工作?

时间:2019-11-14 15:05:45

标签: kubernetes sdn

我一直在研究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地址作为目的地的数据包,这是不切实际的!

enter image description here

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

因此,基本上要在创建SDN的kubernetes上部署一个Container网络插件,就基本上要创建守护程序集和其他辅助kubernetes对象。

我的问题是:

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

同时也是Pod的守护程序集如何影响网络和具有不同名称空间的其他Pod?

1 个答案:

答案 0 :(得分:1)

  

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

可以使用 kubenet-plugin CNI-plugin 自定义

网络,如Network Pluginskubelet节点。网络插件负责处理路由,可能使用kube-proxy。例如。 Cilium CNI插件是complete replacement of kube-proxy,正在使用eBPF instead of iptables

  

同时也是Pod的守护程序集如何影响网络和具有不同名称空间的其他Pod?

是的,DaemonSet是普通豆荚。 Kubelet是一种特殊的node-component,用于管理Pod,但不是由Kubernetes创建的容器。

Life of a packet 是有关Kubernetes Networking的推荐演示文稿