038.集群网络-K8S网络实现
一 Kubernetes网络实现
1.1 Kubernetes网络优势
在实际的业务场景中,业务组件之间的关系十分复杂,微服务的理念更是让应用部署的粒度更加细小和灵活。为了支持业务应用组件的通信,Kubernetes网络的设计主要致力于解决以下问题。- 容器到容器之间的直接通信。
- 抽象的Pod到Pod之间的通信。
- Pod到Service之间的通信。
- 集群外部与内部组件之间的通信。
二 Kubernetes网络通信
2.1 容器之间通信
同一个Pod内的容器(Pod内的容器是不会跨宿主机的)共享同一个网络命名空间,共享同一个Linux协议栈。所以对于网络的各类操作,就和它们在同一台机器上一样,它们甚至可以用localhost地址访问彼此的端口。这种方式简单、安全和高效,也能减小将已经存在的程序从物理机或者虚拟机移植到容器下运行的难度。 在Kubernetes使用如下方式利用Docker的网络模型:
2.2 Pod之间的通信
每一个Pod都有一个真实的全局IP地址,同一个Node内的不同Pod之间可以直接采用对方Pod的IP地址通信,而且不需要采用其他发现机制,例如DNS、Consul或者etcd。Pod容器既有可能在同一个Node上运行,也有可能在不同的Node上运行,所以通信也分为两类:同一个Node内Pod之间的通信和不同Node上Pod之间的通信。- 同一个Node内Pod之间的通信

- 不同Node上Pod之间的通信

- 在整个Kubernetes集群中对Pod的IP分配进行规划,不能有冲突;
- 需要一种方案,将Pod的IP和所在Node的IP关联起来,通过这个关联让Pod可以互相访问。

更多精彩