-
K8s network之五:Kubernetes集群Pod和Service之间通信的实现原理
Kubernetes集群内Pod之间默认可以无障碍的进行通信,但是通常情况下Pod是不稳定的,无法确定Pod会在何时因为何种原因被重启。当Pod重启后,其会得到一个新的IP地址。而且,如无特别指明,Pod有可能会在不同的节点之间被调度。当提供相同服务的Pod有多个时,就需要一个统一的对外地址来接收服务请求,并将请求以负载均衡的方式分发到Pod上。Kubernetes Service就是在这种背景下被引入的,Service是一种为一组提供相同服务的Pod提供单一不变的、简单透明的接入访问点的资源对象。Service的IP地址和端口在其整个生命周期不会改变,客户端可以通过服务IP:服务Port的方式发起服务请求,也可以直接访问服务名,由Kubernetes集群提供的DNS解析服务将请求分发到Service背后的Pod上。出于篇幅考虑,相关的yaml配置不会在文章中出现,特殊情况除外,相关的yaml配置可以参考Kubernetes官方文档。
-
K8s network之四:Kubernetes集群通信的实现原理
Kubernetes网络架构要求集群内的任意两个Pod之间可以在无需NAT的前提下进行通信。在集群中一共有四种Pod间通信的场景:Pod内容器之间相互通信、同一个节点内多个Pod之间相互通信、不同节点上的多个Pod之间相互通信以及Pod和Service之间的通信。其中,Pod和Service之间的通信过程分析请移步到《K8s network之五:Kubernetes集群Pod和Service之间通信的实现原理》,本文会着重分析多容器Pod内、同一节点上的Pod之间以及不同节点上的Pod之间的通信过程。出于篇幅考虑,相关的yaml配置不会在文章中出现,特殊情况除外,相关的yaml配置可以参考Kubernetes官方文档。