娜尼的妮妮

导航

k8s 四层网络结构

转自以下博客:

https://blog.csdn.net/yang75108/article/details/101101384?spm=1001.2014.3001.5501

https://blog.csdn.net/yang75108/article/details/101267444

https://blog.csdn.net/yang75108/article/details/101268208

这篇三篇文章以分层的形式写K8s 的网络架构,深入浅出,值得收藏。

网络分层:

第0层网络是节点网络,直接对外暴露 

第1层 POD 网络

 

同一个Node上,同一个pod的网络模式如下图:

 

关于docker0的理解:Docker在宿主机上默认的网络配置方式是bridge模式,docker server在启动的时候会自动在宿主机上创建一个名为docker0的虚拟网桥。同一个node上不同pod就是根据docker0进行寻址和网络连接。

 veth0是pod的虚拟网卡,pod内部的不同容器就是根据veth0进行寻址和互相访问

 

同一个Node上不同pod之间的网络连接方式:

 

 

不同node之间的pod访问有两种方案,一是路由,二是overlay,结构图分别如下:

路由:

 

 

overlay

 

 

由于pod 网络实现方法众多,引入了CNI(container network interface),采用这个插件可以实现Pod的网络的操作,不需要关心具体实现细节。

 

第2层:Service 网络:

 

 

 K8S master 上有个etcd组件,是这个网络机制的核心。关于etcd的原理和workflow可以参考文章https://zhuanlan.zhihu.com/p/96908130 

etcd会接收保存K8s中所有资源的信息,node中的Kubelet把信息实时传给master中的etcd,这就是上图中的服务注册,kube-DNS和kube-proxy获取etcd中的信息就是上图中的服务发现。

kube-DNS保存serviceName->ClusterIP的信息。ClusterIP并不是一成不变的,ServiceName是唯一的。Kube-Proxy保存CluserIP->PodIP的信息。这样两层可以实现POD 在集群之间的网络连接。

 

第4层:外部接入网络:

这部分还需要进一步消化,后面再补上

 

K8S 网络涉及的相关的概念

 

 

posted on 2021-08-10 13:52  娜尼的妮妮  阅读(1227)  评论(0编辑  收藏  举报