K8s之Service、Endpoints、Pod三者关系

本文探讨了Service(服务)与Endpoints(端点)、Pod(容器)之间的关系,强调Service配置selector的重要性,以及自动关联内部Pod和服务与手动维护外部服务的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上篇文章我们了解到Service是一个规则的集合,今天我们来看看这Service、Endpoints、Pod三者的关系

 对应实验环境我们可以看到Endpoints其实就是后端pod的IP地址,因为本机实验环境只有一个node节点,故pod的reolicas=1,只有1个Endpoints,实际上在生产环境中,EndPoints应该是一组 提供同类型服务的Pod 的端点合,在图中的Endpoints就是:10.1.20.100,10.1.20.101,20.1.20.102

 

注意:Service配置selector,endpoint controller才会自动创建对应的endpoint对象;否则,不会生成endpoint对象

自动关联体系内的pod服务

手动维护体系外的外部服务 

### Kubernetes 服务发现机制原理详解 #### 一、服务注册与发现基础概念 Kubernetes 提供了一套内置的服务发现机制,使得应用程序可以轻松找到彼此而无需硬编码 IP 地址或端口号。这套机制依赖于 DNS 和环境变量两种主要方法。 - **DNS 解析**:当创建 Service 后,Kubernetes 自动为其分配一个唯一的 ClusterIP 并通过 CoreDNS 插件将其映射到对应的域名下。Pod 可以直接使用这个域名来进行通信[^1]。 - **环境变量注入**:对于同一命名空间内的 Pod,在启动时会自动获得一组与其所在命名空间中的 Services 对应的环境变量。这些变量包含了 Service 的名称、ClusterIP 和端口等信息。 #### 二、Service 资源对象的作用 ServiceKubernetes 中用于定义逻辑上的微服务集合的对象。它不仅能够实现内部流量路由的功能,还支持外部访问配置。更重要的是,Service 作为服务发现的核心组件之一,提供了稳定可靠的接口地址给客户端调用者。 - 创建 Service 后,即使背后的 Pods 发生变化(如重启、迁移),也不会影响到其他 Pod 或者外界对该服务的正常访问。 #### 三、Endpoint 控制器工作流程 为了使上述提到的服务发现功能得以顺利运作,还需要依靠 Endpoint Controller 来维护实际提供服务的具体实例列表——即 Endpoints 列表。每当有新的 Pod 加入某个 Deployment 或 StatefulSet 等控制器管理下的副本集时,Endpoint Controller 就会被触发更新相应的 Endpoints 记录;反之亦然,如果某些 Pod 出现异常被删除,则同样需要及时移除其在 Endpoints 中的信息。 ```yaml apiVersion: v1 kind: Endpoints metadata: name: my-service subsets: - addresses: - ip: 192.0.2.42 ports: - port: 8080 ``` 此 YAML 文件展示了如何手动指定 Endpoints 配置文件的内容结构。不过通常情况下并不建议这样做,因为这违背了自动化运维的理念,应该让 Kubernetes 自身去管理和同步最新的状态信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值