当前位置: 首页 > article >正文

Service和Endpoints

在 Kubernetes 中,ServiceEndpoints 是两个非常重要的资源对象,它们共同用于定义和管理集群内部的服务发现和网络通信。下面详细介绍这两个资源对象的功能及其相互关系。

Service

Service 是 Kubernetes 中用于定义抽象逻辑服务的资源对象。它提供了稳定不变的网络标识符,即使后端的实际服务实例发生变更,Service 的 IP 地址和 DNS 名称仍然保持不变。Service 可以用于定义如何访问一组后端 Pod,通常通过标签选择器(label selector)来指定这些 Pod。

Service 的作用
  1. 服务发现:提供一个固定的 IP 地址和 DNS 名称来访问一组后端 Pod。
  2. 负载均衡:自动将流量分发到后端 Pod 上。
  3. 健康检查:支持健康检查机制,确保流量只分发到健康的后端实例。
  4. 端口映射:定义后端 Pod 的端口映射规则。
Service 的类型
  1. ClusterIP:默认类型,创建一个集群内部的虚拟 IP 地址,只能在集群内部访问。
  2. NodePort:为 Service 分配一个集群节点上的端口,使得外部可以通过 <节点IP>:<节点端口> 访问 Service
  3. LoadBalancer:为 Service 创建一个外部负载均衡器,并分配一个外部 IP 地址。
  4. ExternalName:将 Service 映射到一个 DNS 名称,而不是一组后端 Pod。
Service 示例

以下是一个简单的 Service 配置示例,用于定义一个集群内部的服务:

 

Yaml

深色版本

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: MyApp # 标签选择器
  ports:
  - protocol: TCP
    port: 80
    targetPort: 9376
  type: ClusterIP

在这个示例中,my-service 将流量分发到带有 app=MyApp 标签的所有 Pod,并将这些 Pod 的端口 9376 映射到 Service 的端口 80。

Endpoints

Endpoints 是 Kubernetes 中用于定义 Service 后端 Pod 实际 IP 地址和端口的资源对象。当 Pod 的 IP 地址发生变化时,Endpoints 会自动更新,以确保 Service 始终指向正确的后端 Pod。

Endpoints 的作用
  1. 动态更新:当后端 Pod 的 IP 地址发生变化时,Endpoints 会自动更新。
  2. 负载均衡Endpoints 用于存储 Service 后端 Pod 的实际 IP 地址和端口,以实现负载均衡。
Endpoints 示例

以下是一个简单的 Endpoints 配置示例,用于定义 Service 后端 Pod 的实际 IP 地址和端口:

 

Yaml

深色版本

apiVersion: v1
kind: Endpoints
metadata:
  name: my-service-endpoints
subsets:
- addresses:
  - ip: 10.2.3.4
  - ip: 10.2.3.5
  ports:
  - port: 9376

在这个示例中,my-service-endpoints 定义了 Service 后端 Pod 的实际 IP 地址为 10.2.3.410.2.3.5,端口为 9376。

Service 和 Endpoints 的关系

ServiceEndpoints 通常配合使用,以实现服务发现和负载均衡。Service 定义了如何访问一组后端 Pod,而 Endpoints 存储了这些后端 Pod 的实际 IP 地址和端口。

Service 被创建时,Kubernetes 控制器会自动生成相应的 Endpoints 对象,将带有相同标签选择器的 Pod 的 IP 地址和端口添加到 Endpoints 中。

综合示例

以下是一个综合示例,展示了如何定义 Service 并自动创建 Endpoints

 

Yaml

深色版本

# service.yaml
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: MyApp
  ports:
  - protocol: TCP
    port: 80
    targetPort: 9376
  type: ClusterIP

当创建 Service 时,Kubernetes 控制器会自动创建相应的 Endpoints 对象,将带有 app=MyApp 标签的 Pod 的 IP 地址和端口添加到 Endpoints 中。

总结

  • Service:用于定义逻辑服务的抽象,提供稳定不变的网络标识符。
  • Endpoints:用于存储 Service 后端 Pod 的实际 IP 地址和端口。

通过 ServiceEndpoints 的配合使用,可以实现服务发现、负载均衡和健康检查等功能,确保集群内部的服务通信的高效和稳定性。


http://www.kler.cn/news/324798.html

相关文章:

  • 使用C#,MSSQL开发的钢结构加工系统
  • 如何在iPad上用Chrome实现无痕浏览
  • Acwing 快速幂
  • 力扣 简单 876.链表的中间结点
  • Leetcode面试经典150题-383.赎金信
  • 2024年【电工(高级)】考试题及电工(高级)考试内容
  • ISO 21434车辆网络安全风险评估的全面流程解析
  • 小柴冲刺软考中级嵌入式系统设计师系列二、嵌入式系统硬件基础知识(3)嵌入式系统的存储体系
  • 大模型落地需要一把“梯子”
  • 酒店智能开关的组成与功能
  • 【第十四周】PyTorch深度学习实践1
  • 浅说差分算法(上)
  • excel-VBA知识点记录
  • 服务器数据恢复—SAN环境下LUN映射出错导致文件系统一致性出错的数据恢复案例
  • 物联网系统中OLED屏主流驱动方案详解
  • 每日OJ题_牛客_HJ108求最小公倍数_C++_Java
  • unixODBC编程(四)插入数据
  • 【js】Node.js的fs的使用方法
  • 长沙某公司.Net高级开发面试题
  • 【C语言零基础入门篇 - 15】:单链表
  • 甄选范文“论应用服务器基础软件”,软考高级论文,系统架构设计师论文
  • 静态路由和默认路由(实验)
  • 海滨体育馆管理系统:SpringBoot实现技巧与案例
  • 活动在线报名小程序源码系统 自主提交表单+创建表单 带完整的安装代码包以及搭建部署教程
  • LiveGBS流媒体平台GB/T28181功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大
  • 小阿轩yx-Ansible部署与应用基础
  • linux semaphore信号量操作
  • 基于nodejs+vue的农产品销售管理系统
  • 如何制作小程序商城
  • NLP任务的详细原理与步骤的详细讲解