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

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: TCPport: 80targetPort: 9376type: 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.5ports:- 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: MyAppports:- protocol: TCPport: 80targetPort: 9376type: ClusterIP

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

总结

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

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

相关文章:

  • python学习记录3
  • ansible部署二进制mysql 8
  • 文献阅读——基于拉格朗日乘子的电力系统安全域边界通用搜索方法
  • 【RDMA】mlxconfig修改和查询网卡(固件)配置--驱动工具
  • 到时间没回家又不接电话?如何迅速确定孩子的位置?
  • spark读取数据性能提升
  • 【YashanDB知识库】客户端字符集与数据库字符集兼容问题
  • node的控制流,异步,以及异常处理
  • 【机器学习】---神经架构搜索(NAS)
  • react crash course 2024(7) react router dom
  • langchain 记忆力(memory),让语言大模型拥有记忆
  • SQL_over_partition_by_order_by
  • Java数据库连接jdbc
  • 广东高校建设AIGC实验室时需要注意哪几个关键点?
  • [JavaEE] 网络编程----UDP / TCP 回显服务器
  • 【Linux系统编程】快速查找errno错误码信息
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • Akka系列(七):Actor持久化之Akka persistence
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • ERLANG 网工修炼笔记 ---- UDP
  • gcc介绍及安装
  • git 常用命令
  • gitlab-ci配置详解(一)
  • iOS编译提示和导航提示
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • javascript从右向左截取指定位数字符的3种方法
  • java中的hashCode
  • Netty 4.1 源代码学习:线程模型
  • spring security oauth2 password授权模式
  • SQLServer插入数据
  • unity如何实现一个固定宽度的orthagraphic相机
  • webpack+react项目初体验——记录我的webpack环境配置
  • 基于组件的设计工作流与界面抽象
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 如何在 Tornado 中实现 Middleware
  • 实现简单的正则表达式引擎
  • 小程序开发中的那些坑
  • 携程小程序初体验
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 带你开发类似Pokemon Go的AR游戏
  • 进程与线程(三)——进程/线程间通信
  • ​ArcGIS Pro 如何批量删除字段
  • ​ssh免密码登录设置及问题总结
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #07【面试问题整理】嵌入式软件工程师
  • #如何使用 Qt 5.6 在 Android 上启用 NFC
  • (11)MSP430F5529 定时器B
  • (55)MOS管专题--->(10)MOS管的封装
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (三)c52学习之旅-点亮LED灯
  • (十一)手动添加用户和文件的特殊权限