【一起来学kubernetes】12、k8s中的Endpoint详解

news2025/3/16 21:03:22

      • 一、Endpoint的定义与作用
      • 二、Endpoint的创建与管理
      • 三、Endpoint的查看与组成
      • 四、EndpointSlice
      • 五、Endpoint的使用场景
      • 六、Endpoint与Service的关系
        • 1、定义与功能
        • 2、创建与管理
        • 3、关系与交互
        • 4、使用场景与特点
      • 七、Endpoint的kubectl命令
        • 1. 查看Endpoint
        • 2. 创建Endpoint
        • 3. 编辑Endpoint
        • 4. 删除Endpoint

在Kubernetes(简称K8s)中,Endpoint是一个非常重要的资源,它主要用于表示和管理服务(Service)所暴露的网络地址(IP地址和端口)。

在这里插入图片描述

一、Endpoint的定义与作用

  1. 定义:Endpoint是K8s中用于描述Service实际访问点的资源。它包含了提供服务的Pod的IP地址和端口信息,这些信息是K8s实现服务发现和流量分发的关键依据。

  2. 作用

    • 服务发现:通过记录具体Pod的网络信息,让外部请求能够准确找到提供服务的实例。
    • 负载均衡:K8s使用Endpoints来将流量路由到正确的Pod上,以实现负载均衡。
    • 关联Service与Pod:Endpoint的主要作用是将Service与后端Pod关联起来,确保服务请求能够被正确地路由到可用的Pod实例上,实现了服务的高可用性和负载均衡。

在这里插入图片描述

二、Endpoint的创建与管理

  1. 自动创建:在K8s中,当创建一个Service时,K8s会根据Service的选择器(Selector)自动发现匹配的Pod,并创建相应的Endpoint。这种自动化的创建机制大大简化了服务部署和管理的流程。
  2. 手动创建:虽然不常见,但Endpoint也可以手动创建。这通常用于特殊情况,比如需要显式指定Endpoint的IP地址和端口,例如在与外部非K8s管理的服务进行集成时,可能需要手动创建Endpoint来定义服务的访问信息,以便将其纳入K8s的服务管理体系中。
  3. Endpoint控制器:K8s的Endpoint控制器负责监控Service和Pod的变化,并自动更新Endpoint的信息。例如,当一个新的Pod创建时,Endpoint控制器会将该Pod的IP地址和端口添加到对应的Endpoint中;同样,当Pod被删除或发生故障时,Endpoint控制器也会及时更新Endpoint信息,确保服务的流量始终能够分发到健康的Pod实例上。

在这里插入图片描述

三、Endpoint的查看与组成

  1. 查看Endpoint:可以使用kubectl get endpoints命令来查看默认命名空间的Endpoint。输出结果会列出每个Service对应的Endpoint,包括IP地址和端口信息。

  2. Endpoint的组成

    • IP地址:Pod或其他网络服务的IP地址。
    • 端口:服务暴露的端口。
    • TargetRef:指向实际目标(Pod)的引用,通常包括Pod的名称和命名空间。

在这里插入图片描述

四、EndpointSlice

  1. 概念:为了提高Endpoint的管理效率,K8s 1.21引入了EndpointSlice资源。EndpointSlice将Endpoint分片管理,每个EndpointSlice包含一组Endpoint,避免了单个Endpoint资源过大带来的性能问题。

  2. 优势

    • 增强扩展性:支持更大规模的集群和更多的Endpoint。
    • 提高性能:在大规模集群环境下,EndpointSlice能够更好地适应不断增长的服务和Pod数量,保证服务发现和流量分发的高效运行。

在这里插入图片描述

五、Endpoint的使用场景

  1. 集群内部服务访问:在K8s集群内部,Pod可以通过Service的名称访问到后端的Pod,而Service则是通过Endpoint来实现这一功能的。
  2. 集群外部服务访问:在实际使用场景中,K8s集群有时需要访问集群外部的服务。这时,可以通过手动创建Endpoint或使用endpoints-operator等工具来自动管理外部服务的Endpoint,实现集群内部Pod对外部服务的访问。

在这里插入图片描述

六、Endpoint与Service的关系

在Kubernetes(K8s)中,Service和Endpoint是两个紧密相关但功能不同的资源。以下是它们之间的主要区别:

1、定义与功能
  1. Service

    • 定义:Service是K8s中的一个抽象层,它定义了一种访问Pod集合的方式。
    • 功能:Service允许通过统一的接口访问一组执行相同功能的Pod,无论这些Pod如何变化、扩展或缩减。它提供了服务发现和负载分发的功能,通过负载均衡器将网络流量分发到后端的Pod集合。
  2. Endpoint

    • 定义:Endpoint是K8s中的一种资源,用于描述Service的实际访问点。
    • 功能:Endpoint包含了提供服务的Pod的IP地址和端口信息,这些信息是K8s实现服务发现和流量分发的关键依据。它像一座桥梁,连接了抽象的服务访问入口(Service)和实际提供服务的工作负载(Pod)。
2、创建与管理
  1. Service

    • 通常通过YAML文件或kubectl命令创建。
    • 创建时,需要指定选择器(Selector)以匹配后端Pod。
    • K8s会根据选择器自动发现匹配的Pod,并创建相应的Endpoint。
  2. Endpoint

    • 在大多数情况下,Endpoint是自动创建的,与Service相关联。
    • 也可以手动创建Endpoint,但这通常用于特殊情况,如与外部非K8s管理的服务进行集成。
    • Endpoint的信息由Endpoint控制器监控和更新,以确保与Service和Pod的状态保持一致。
3、关系与交互
  1. 关系

    • Service是抽象层,定义了访问Pod集合的策略。
    • Endpoint是实际实现,包含了Service的流量分发目标(即Pod的IP地址和端口)。
  2. 交互

    • 当外部请求访问Service时,K8s会根据Endpoint信息将请求路由到正确的Pod实例上。
    • Service通过与Endpoint的映射关系,实现了服务的抽象化和负载均衡。
4、使用场景与特点
  1. Service

    • 适用于需要访问一组Pod的场景,提供了负载均衡、服务发现和抽象等功能。
    • 支持多种访问模式,如ClusterIP、NodePort、LoadBalancer和ExternalName。
  2. Endpoint

    • 主要用于描述Service的实际访问点,通常不需要直接管理。
    • 在特殊情况下,如与外部服务集成时,可能需要手动创建和管理Endpoint。

Service和Endpoint在K8s中扮演着不同的角色。Service是抽象层,定义了访问Pod集合的策略;而Endpoint是实际实现,包含了Service的流量分发目标。它们通过紧密协作,实现了服务发现和负载均衡等功能,为K8s集群中的服务提供了高效、稳定的运行环境。

在这里插入图片描述

七、Endpoint的kubectl命令

与Kubernetes(K8s)中的Endpoint相关的kubectl命令主要用于查看、创建、编辑和删除Endpoint资源。以下是一些常用的kubectl命令及其用法:

1. 查看Endpoint

要查看K8s集群中的Endpoint列表,可以使用以下命令:

kubectl get endpoints

这将显示集群中所有Endpoint的列表,包括它们的名称、命名空间、IP地址和端口号等信息。如果只想查看特定命名空间中的Endpoint,可以添加-n选项,后面跟命名空间的名称:

kubectl get endpoints -n your-namespace
2. 创建Endpoint

虽然Endpoint通常是由K8s自动创建的,与Service相关联,但在某些特殊情况下,也可以手动创建Endpoint。这通常涉及编写一个YAML文件来描述Endpoint资源,然后使用kubectl apply命令将其应用到集群中。

以下是一个创建Endpoint的YAML文件示例:

apiVersion: v1
kind: Endpoints
metadata:
  name: my-endpoint
subsets:
  - addresses:
      - ip: 192.168.1.1
    ports:
      - port: 80
        protocol: TCP

应用这个YAML文件到集群中:

kubectl apply -f my-endpoint.yaml
3. 编辑Endpoint

要编辑现有的Endpoint资源,可以使用kubectl edit命令。这将打开一个文本编辑器(通常是系统默认的编辑器,如vim或nano),允许你修改Endpoint的相关信息。

kubectl edit endpoints my-endpoint

在编辑器中,你可以找到和修改Endpoints的相关信息,如subsets、addresses和ports。完成编辑后,保存并退出编辑器,K8s将应用你的更改。

4. 删除Endpoint

要删除特定的Endpoint资源,可以使用kubectl delete endpoints命令。这将从K8s集群中移除指定的Endpoint。

kubectl delete endpoints my-endpoint

请注意,手动创建、编辑和删除Endpoint通常不是K8s的标准做法。在大多数情况下,K8s会自动管理Endpoint资源,以确保它们与Service和Pod的状态保持一致。手动操作Endpoint可能会导致服务发现和负载均衡问题,因此应谨慎进行。

Endpoint在K8s中扮演着至关重要的角色,它实现了Service与后端Pod的关联、服务发现和负载均衡等功能。通过合理管理和使用Endpoint,可以确保K8s集群中的服务能够高效、稳定地运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2316249.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《AI浪潮中的璀璨新星:Meta Llama、Ollama与DeepSeek的深度剖析》:此文为AI自动生成

《AI浪潮中的璀璨新星:Meta Llama、Ollama与DeepSeek的深度剖析》:此文为AI自动生成 引言:AI 大模型的群雄逐鹿时代 在科技飞速发展的当下,AI 大模型领域已成为全球瞩目的焦点,竞争激烈程度堪称白热化。从 OpenAI 推出…

LVGL移植到6818开发板

一、移植步骤 1.lv_config.h 配置文件启动 framebuffer 2、lv_config.h 配置文件关闭SDL 2.修改main.c 去掉SDL输入设备 3.修改Makefile 文件启动交叉编译 去掉警告参数 去掉SDL库 4.交叉编译代码 make clean #清空 ⭐ 必须要清空一次再编译! 因为修改了 lv_con…

UE4-UE5虚幻引擎,前置学习一--Console日志输出经常崩溃,有什么好的解决办法

有些差异 这么牛逼的引擎,居然有这种入门级别的问题,一触发清理,大概率(80%)会崩溃 无论虚幻5还是UE4都有这个问题,挺烦人的 实在忍不了了,这次,今天 就想问问有什么好的处理方法么?&#x…

(全)2024下半年真题 系统架构设计师 综合知识 答案解析01

系统架构设计师第二版教程VIP课程https://edu.csdn.net/course/detail/40283 操作系统 下列选项中不能作为预防死锁措施的是 。 A. 破坏“循环等待"条件 B. 破坏“不可抢占”条件 C. 破坏“互斥”条件 D. 破坏“请求和保持”条件 答案:C 解析&…

Linux系统之less命令的基本使用

Linux系统之less命令的基本使用 一、less命令介绍二、less命令的使用帮助2.1 less命令的帮助信息2.2 less命令主要选项解释 三、less命令的基本使用3.1 查看文件内容3.2 结合管道使用 四、注意事项 一、less命令介绍 在Linux和Unix类操作系统中,文件浏览是一项常见的…

【微知】plantuml在泳道图中如何将多个泳道框起来分组并且设置颜色?(box “浏览器“ #LightGreen endbox)

泳道分组并且着色 分组用 box和endbox ,颜色用#xxx,标注用"xxx" box "浏览器" #LightGreen participant "浏览器1" as Browser participant "浏览器2" as Browser2 endboxparticipant "服务端" as …

C#生产型企业ERP系统管理软件PCB行业ERP进销存MRP管理系统BOM管理

背景 本软件为为苏州某生产型电子科技企业开发的ERP管理软件。 功能说明 希哲管理系统v1.0是一款在流览器上使用的企业管理软件,使用上与客户端版的优势是: 1.安装更新部署方便,只需服务器部署了软件,其它客户端的用户无需安装&am…

文件系统 linux ─── 第19课

前面博客讲解的是内存级文件管理,接下来介绍磁盘级文件管理 文件系统分为两部分 内存级文件系统 : OS加载进程 ,进程打开文件, OS为文件创建struct file 和文件描述符表 ,将进程与打开的文件相连, struct file 内还函数有指针表, 屏蔽了底层操作的差异,struct file中还有内核级…

射频前端模块(FEM)的基本原理与架构:从组成到WiFi路由器的应用

射频前端模块(FEM)的基本原理与架构:从组成到WiFi路由器的应用 一、FEM是什么? 射频前端模块(Front-End Module, FEM)是无线通信系统中负责处理射频信号的核心组件。它将多个关键电路集成在一个模块中,包括功率放大器(PA)、低噪声放大器(LNA)、射频开关(Switch)、…

qemu分析之 KVM_EXIT_MMIO

基于qemu-2.8.1 address_space_rw 函数作用 这是QEMU内存子系统的核心函数,负责分块处理跨MemoryRegion的内存读取操作。主要场景包括: 处理跨越多个MemoryRegion的连续内存读取区分RAM直接访问与MMIO设备模拟处理不同位宽(1/2/4/8字节&am…

OSI 七层网络模型

文章目录 OSI 七层模型应用层表示层会话层传输层网络层数据链路层物理层 TCP/IP 四层模型应用层传输层网络层数据链路层 TCP/IP 特点OSI 和 TCP/IP 两者关系通信过程及相关协议常用协议及端口号常用协议分类参考链接 OSI 七层模型 七层模型,亦称OSI(Ope…

虚拟电商-数据库分库分表(二)

本文章介绍:使用Sharding-JDBC实现数据库分库分表,数据库分片策略,实现数据库按月分表 一、Sharding-JDBC使用 1.1.准备环境 步骤一:分库分表sql脚本导入 创建了两个数据库:chongba_schedule0 和chongba_schedule1…

进程间通信--匿名管道

进程间通信介绍 进程间通信目的 数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件&…

C#opencv 遍历图像中所有点 不在圆范围内的点变为黑色,在圆范围内的保持原色

C#opencv 遍历图像中所有点 不在圆范围内的点变为黑色,在圆范围内的保持原色 安装 Install-Package OpenCvSharp4 Install-Package OpenCvSharp4.Windows 普通实现 using System; using System.Collections.Generic; using System.Linq; using OpenCvSharp; // 添加OpenCV引用…

基于SSM + JSP 的图书商城系统

基于SSM的图书商城 网上书城、图书销售系统、图书销售平台 |Java|SSM|HTML|JSP| 项目采用技术: ①:开发环境:IDEA、JDK1.8、Maven、Tomcat ②:技术栈:Java、…

【漫话机器学习系列】133.决定系数(R²:Coefficient of Determination)

决定系数()详解 决定系数()是回归分析中用于评估模型拟合优度的一个重要统计指标。它表示自变量(特征变量)能够解释因变量(目标变量)变异的程度,取值范围为 [0,1] 或 (−…

Machine Learning: 十大基本机器学习算法

机器学习算法分类:监督学习、无监督学习、强化学习 基本的机器学习算法: 线性回归、支持向量机(SVM)、最近邻居(KNN)、逻辑回归、决策树、k平均、随机森林、朴素贝叶斯、降维、梯度增强。 机器学习算法大致可以分为三类: 监督学习算法 (Sup…

【八股文】ArrayList和LinkedList的区别

先讲讲两者是如何实现的 ArrayList public class ArrayList<E> extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, java.io.Serializable {transient Object[] elementData; private int size; } 通过源码可以看出&#xff0c;ArrayLis…

汇编语言 | 王爽 | 学习笔记

汇编语言 | 王爽 | 学习笔记 文章目录 汇编语言 | 王爽 | 学习笔记一、基础知识1、指令2、存储器3、总线1、总线2、CPU对存储器的读写3、CPU对外设的控制 4、内存地址空间 二、寄存器1、寄存器2、通用寄存器3、8086CPU给出物理地址的方法4、段寄存器1、CS和IP2、DS 和 [address…

JumpServer基础功能介绍演示

堡垒机可以让运维人员通过统一的平台对设备进行维护&#xff0c;集中的进行权限的管理&#xff0c;同时也会对每个操作进行记录&#xff0c;方便后期的溯源和审查&#xff0c;JumpServer是由飞致云推出的开源堡垒机&#xff0c;通过简单的安装配置即可投入使用&#xff0c;本文…