Kubernetes 网络概述
节点
Kubernetes 通常被称为群集。 概括而言,群集是一组计算机,它们协同工作并共享资源,以帮助提高性能和可用性。 如果群集中有任何计算机发生故障,则群集上运行的服务可以继续在其余正常运行的计算机上运行。
在 Microsoft Azure 中,这些计算机称为虚拟机 (VM)。 在 Kubernetes 中,这些 VM 称为节点。
节点需要网络连接,以便它们可以相互通信并有效地路由网络流量。 节点还需要与提供核心 Kubernetes 服务和应用程序工作负载业务流程的 Kubernetes 控制平面进行通信,以便它们可以运行应用程序工作负载资源。
Pod
在 Kubernetes 中,应用程序工作负载资源包括 Pod、部署和集。 Pod 是 Kubernetes 群集中最小的可部署单元。 它们以一种能够充分利用节点上可用处理器和内存资源的方式分布在节点上。 Pod 通常表示应用程序的单个实例或子组件。 Pod 可能会运行一个购物车组件来管理客户购物车中的商品,或者运行一个发货组件来处理已完成的订单。
你可以运行同一 Pod 的多个副本。 副本跨节点分布多个 Pod 以提供高可用性。 使用 Pod 的多个副本,即使 Pod 中运行的某个组件出现故障,应用程序也可继续工作。
借助 Kubernetes 中的缩放功能,可以根据群集需求水平添加或删除 pod。 Kubernetes 中的自我修复功能可以替换任何发生故障的 Pod,并且对滚动更新的内置支持可自动部署新版本的应用程序,而无需任何停机。
Pod 在初始部署期间会被分配一个新的 IP 地址。 此 IP 地址用于与 Pod 的所有网络通信。 在许多情况下,为 Pod 分配新的 IP 地址。 当群集需求较高且发生缩放时,将部署新的 Pod。 更新应用程序时,会部署新 Pod 来替换旧 Pod。 如果 Pod 失败,则系统会使用新 Pod 会自动替换。 所有这些场景都会生成新的 Pod IP 地址。
如果 Pod IP 地址频繁发生变化,Kubernetes 如何知道将网络流量发送到何处才能到达应用程序? 答案就是服务。
服务
Kubernetes 服务位于一组 Pod 的前面,并提供一个静态 IP 地址。 流量到达服务后,服务会以轮循机制方式将流量分配到一组后端 Pod。 该服务会跟踪 Pod IP 地址的变化,以确保系统将网络流量发送到正确的 Pod。