ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] 参考:[https://testerhome.com/articles/24797](https://testerhome.com/articles/24797) 参考:[https://www.qikqiak.com/k8s-book/docs/39.kubedns.html](https://www.qikqiak.com/k8s-book/docs/39.kubedns.html) 详解:[https://www.cnblogs.com/tylerzhou/p/11009412.html](https://www.cnblogs.com/tylerzhou/p/11009412.html) ## 容器网络中涉及的几个地址 **Node Ip**:物理机地址。 **POD Ip**:Kubernetes的最小部署单元是Pod,一个pod 可能包含一个或多个容器,简单来讲容器没有自己单独的地址,他们共享POD 的地址和端口区间。 **ClusterIp**:Service的Ip地址,外部网络无法ping通改地址,因为它是虚拟IP地址,没有网络设备为这个地址负责,内部实现是使用Iptables规则重新定向到其本地端口,再均衡到后端Pod;只有Kubernetes集群内部访问使用。 **Public Ip** :Service对象在Cluster IP range池中分配到的IP只能在内部访问,适合作为一个应用程序内部的层次。如果这个Service作为前端服务,准备为集群外的客户提供业务,我们就需要给这个服务提供公共IP。 ## 容器网络流量模型 容器网络至少需要解决如下几种场景的通信: POD内容器间通信 同主机POD间 通信 跨主机POD间 通信 集群内Service Cluster Ip和外部访问 ### 同一pod内的容器共识存储卷 Pod中的容器可以通过“localhost”来互相通信,他们使用同一个网络命名空间,对容器来说,hostname就是Pod的名称。Pod中的所有容器共享同一个IP地址和端口空间,你需要为每个需要接收连接的容器分配不同的端口。也就是说,Pod中的应用需要自己协调端口的使用。 把不同的容器放在同一个pod里让它们之间的通信变得非常直接和简单,它们可以通过以下几种方法达到通信目的. 你可以使用一个共享的存储卷来简单高效的地在容器间共享数据.大多数情况下,使用一个共享目录在同一pod里的不同容器间共享数据就够了. 一个标准的同一pod内容器共享存储卷的用例是一个容器往共享存储卷里写入数据,其它的则从共享目录里读取数据 [https://blog.csdn.net/qq\_27068845/article/details/85255072](https://blog.csdn.net/qq_27068845/article/details/85255072)