在 Kubernetes (K8s) 中,Service 和 Endpoints 是两个紧密相关但职责不同的资源对象。 用一句话概括它们的关系:Service 是“前台”也就是访问入口(定义了访问策略),Endpoints 是“通讯录”也就是后端列表(存储了实际的后端 Pod IP 地址)。 以下是详细的深度解析: 1. 核心概念对比 Service (抽象层): 作用: 提供一个稳定的虚拟 IP (ClusterIP) 和 DNS 名称。 目的: 屏蔽后端 Pod 的动态变化(Pod 可能会挂掉、重启、扩缩容,IP 会变)。客户端只需要访问 Service,不需要关心具体是哪个 Pod 在服务。 角色: 它是定义者,定义了“我是谁”以及“我要把流量转发给谁(通过标签选择器)”。 Endpoints (具体层): 作用: 维护一个动态的 IP 地址列表。 目的: 告诉 Service,当前时刻,真正活着的、准备好接收流量的 Pod 的 IP 和端口具体是多少。 角色: 它是执行者/数据源,它是 Service 和 Pod 之间的桥梁。 2. 它们是如何关联的?(工作原理) 它们之...