Service
即使工作负载分布在多个后端上,也可以通过一个面向外部的端点公开集群中运行的应用。
Kubernetes 网络模型由几个部分组成
集群中的每个 Pod 都获得其自己的、集群范围内的唯一 IP 地址。
localhost
相互通信。Pod 网络(也称为集群网络)处理 Pod 之间的通信。它确保(不考虑有意网络分段)
所有 Pod 都可以与所有其他 Pod 通信,无论它们是在同一 节点 上还是在不同节点上。Pod 可以直接相互通信,无需使用代理或地址转换(NAT)。
在 Windows 上,此规则不适用于主机网络 Pod。
节点上的代理(例如系统守护程序或 Kubelet)可以与该节点上的所有 Pod 通信。
Service API 允许你为由一个或多个后端 Pod 实现的 Service 提供稳定的(长期存在的)IP 地址或主机名,其中构成 Service 的各个 Pod 会随时间而变化。
Kubernetes 自动管理 EndpointSlice 对象,以提供有关当前支持 Service 的 Pod 的信息。
Service 代理实现会监视 Service 和 EndpointSlice 对象集,并使用操作系统或云提供商 API 来拦截或重写数据包,以此对数据面编程以将 Service 流量路由到其后端。
Gateway API(或其前身 Ingress)允许你使 Service 可供集群外部的客户端访问。
type: LoadBalancer
提供一种更简单但配置选项较少的集群入口机制。NetworkPolicy 是内置的 Kubernetes API,允许你控制 Pod 之间或 Pod 与外部世界之间的流量。
在较旧的容器系统中,不同主机上的容器之间没有自动连通性,因此通常需要显式创建容器之间的链接,或将容器端口映射到主机端口,以便其他主机上的容器可以访问它们。这在 Kubernetes 中是不需要的;Kubernetes 的模型是,从端口分配、命名、服务发现、负载均衡、应用配置和迁移的角度来看,Pod 可以像虚拟机或物理主机一样对待。
该模型只有少部分由 Kubernetes 本身实现。对于其他部分,Kubernetes 定义了 API,但相应功能由外部组件提供,其中一些是可选的
Pod 网络命名空间的设置由实现 容器运行时接口 的系统级软件处理。
Pod 网络本身由Pod 网络实现管理。在 Linux 上,大多数容器运行时使用容器网络接口 (CNI) 与 Pod 网络实现交互,因此这些实现通常称为 CNI 插件。
Kubernetes 提供了一个默认的 Service 代理实现,称为 kube-proxy,但一些 Pod 网络实现会使用它们自己的 Service 代理,该代理与实现的其余部分更紧密地集成。
NetworkPolicy 通常也由 Pod 网络实现。 (一些更简单的 Pod 网络实现不实现 NetworkPolicy,或者管理员可以选择在没有 NetworkPolicy 支持的情况下配置 Pod 网络。 在这些情况下,API 仍然存在,但不会产生任何效果。)
Gateway API 有许多实现,其中一些特定于特定的云环境,一些更侧重于“裸金属”环境,还有一些更通用。
使用 Service 连接应用 教程通过实践示例让你了解 Service 和 Kubernetes 网络。
集群网络 解释了如何为你的集群设置网络,并提供了所涉及技术的概述。
即使工作负载分布在多个后端上,也可以通过一个面向外部的端点公开集群中运行的应用。
使用协议感知的配置机制(理解 URI、主机名、路径等 Web 概念)使你的 HTTP(或 HTTPS)网络服务可用。 Ingress 概念允许你根据通过 Kubernetes API 定义的规则将流量映射到不同的后端。
为了使 Ingress 在你的集群中工作,必须有一个 Ingress 控制器 运行。你需要选择至少一个 Ingress 控制器并确保它在你的集群中设置好。此页面列出了你可以部署的常见 Ingress 控制器。
Gateway API 是 API 种类的一个家族,提供动态基础设施供给和高级流量路由。
EndpointSlice API 是 Kubernetes 用于让你的 Service 能够扩展以处理大量后端,并允许集群高效更新其健康后端列表的机制。
如果你想在 IP 地址或端口级别(OSI 第 3 层或第 4 层)控制流量流,NetworkPolicies 允许你指定集群内以及 Pod 和外部世界之间的流量流规则。你的集群必须使用支持 NetworkPolicy 强制实施的网络插件。
你的工作负载可以使用 DNS 发现集群内的 Service;本页面解释了其工作原理。
Kubernetes 允许你配置单栈 IPv4 网络、单栈 IPv6 网络或同时激活两种网络族类的双栈网络。本页面解释了如何配置。
拓扑感知路由 提供了一种机制,有助于将网络流量保持在其源区域内。优先处理集群中 Pod 之间的同区域流量有助于提高可靠性、性能(网络延迟和吞吐量)或降低成本。
如果集群中有两个 Pod 需要通信,并且它们都实际运行在同一节点上,请使用 Service 内部流量策略 将网络流量保持在该节点内。避免通过集群网络进行往返有助于提高可靠性、性能(网络延迟和吞吐量)或降低成本。