【一起来学kubernetes】12、k8s中的Endpoint详解
- 一、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的定义与作用
-
定义:Endpoint是K8s中用于描述Service实际访问点的资源。它包含了提供服务的Pod的IP地址和端口信息,这些信息是K8s实现服务发现和流量分发的关键依据。
-
作用:
- 服务发现:通过记录具体Pod的网络信息,让外部请求能够准确找到提供服务的实例。
- 负载均衡:K8s使用Endpoints来将流量路由到正确的Pod上,以实现负载均衡。
- 关联Service与Pod:Endpoint的主要作用是将Service与后端Pod关联起来,确保服务请求能够被正确地路由到可用的Pod实例上,实现了服务的高可用性和负载均衡。

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

三、Endpoint的查看与组成
-
查看Endpoint:可以使用
kubectl get endpoints命令来查看默认命名空间的Endpoint。输出结果会列出每个Service对应的Endpoint,包括IP地址和端口信息。 -
Endpoint的组成:
- IP地址:Pod或其他网络服务的IP地址。
- 端口:服务暴露的端口。
- TargetRef:指向实际目标(Pod)的引用,通常包括Pod的名称和命名空间。

四、EndpointSlice
-
概念:为了提高Endpoint的管理效率,K8s 1.21引入了EndpointSlice资源。EndpointSlice将Endpoint分片管理,每个EndpointSlice包含一组Endpoint,避免了单个Endpoint资源过大带来的性能问题。
-
优势:
- 增强扩展性:支持更大规模的集群和更多的Endpoint。
- 提高性能:在大规模集群环境下,EndpointSlice能够更好地适应不断增长的服务和Pod数量,保证服务发现和流量分发的高效运行。

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

六、Endpoint与Service的关系
在Kubernetes(K8s)中,Service和Endpoint是两个紧密相关但功能不同的资源。以下是它们之间的主要区别:
1、定义与功能
-
Service:
- 定义:Service是K8s中的一个抽象层,它定义了一种访问Pod集合的方式。
- 功能:Service允许通过统一的接口访问一组执行相同功能的Pod,无论这些Pod如何变化、扩展或缩减。它提供了服务发现和负载分发的功能,通过负载均衡器将网络流量分发到后端的Pod集合。
-
Endpoint:
- 定义:Endpoint是K8s中的一种资源,用于描述Service的实际访问点。
- 功能:Endpoint包含了提供服务的Pod的IP地址和端口信息,这些信息是K8s实现服务发现和流量分发的关键依据。它像一座桥梁,连接了抽象的服务访问入口(Service)和实际提供服务的工作负载(Pod)。
2、创建与管理
-
Service:
- 通常通过YAML文件或kubectl命令创建。
- 创建时,需要指定选择器(Selector)以匹配后端Pod。
- K8s会根据选择器自动发现匹配的Pod,并创建相应的Endpoint。
-
Endpoint:
- 在大多数情况下,Endpoint是自动创建的,与Service相关联。
- 也可以手动创建Endpoint,但这通常用于特殊情况,如与外部非K8s管理的服务进行集成。
- Endpoint的信息由Endpoint控制器监控和更新,以确保与Service和Pod的状态保持一致。
3、关系与交互
-
关系:
- Service是抽象层,定义了访问Pod集合的策略。
- Endpoint是实际实现,包含了Service的流量分发目标(即Pod的IP地址和端口)。
-
交互:
- 当外部请求访问Service时,K8s会根据Endpoint信息将请求路由到正确的Pod实例上。
- Service通过与Endpoint的映射关系,实现了服务的抽象化和负载均衡。
4、使用场景与特点
-
Service:
- 适用于需要访问一组Pod的场景,提供了负载均衡、服务发现和抽象等功能。
- 支持多种访问模式,如ClusterIP、NodePort、LoadBalancer和ExternalName。
-
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.1ports:- port: 80protocol: 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集群中的服务能够高效、稳定地运行。
相关文章:
【一起来学kubernetes】12、k8s中的Endpoint详解
一、Endpoint的定义与作用二、Endpoint的创建与管理三、Endpoint的查看与组成四、EndpointSlice五、Endpoint的使用场景六、Endpoint与Service的关系1、定义与功能2、创建与管理3、关系与交互4、使用场景与特点 七、Endpoint的kubectl命令1. 查看Endpoint2. 创建Endpoint3. 编辑…...
SpringBoot的并行SQL任务并完成所有任务之后返回操作
一、核心实现方案 1. 线程池配置与异步支持 通过 EnableAsync 启用异步支持,并自定义线程池避免默认线程池的性能问题: Configuration EnableAsync public class AsyncConfig {Beanpublic Executor taskExecutor() {ThreadPoolTaskExecutor executor …...
《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…...
Spring Boot应用首次请求性能优化实战:从数据库连接池到JVM调优
目录 问题现象与背景分析性能瓶颈定位方法论数据库连接池深度优化Spring Bean生命周期调优JVM层性能预热策略全链路监控体系建设生产环境验证方案总结与扩展思考1. 问题现象与背景分析 1.1 典型问题场景 在某互联网金融项目的Spring Boot应用上线后,运维团队发现一个关键现象…...
UE4-UE5虚幻引擎,前置学习一--Console日志输出经常崩溃,有什么好的解决办法
有些差异 这么牛逼的引擎,居然有这种入门级别的问题,一触发清理,大概率(80%)会崩溃 无论虚幻5还是UE4都有这个问题,挺烦人的 实在忍不了了,这次,今天 就想问问有什么好的处理方法么?&#x…...
(全)2024下半年真题 系统架构设计师 综合知识 答案解析01
系统架构设计师第二版教程VIP课程https://edu.csdn.net/course/detail/40283 操作系统 下列选项中不能作为预防死锁措施的是 。 A. 破坏“循环等待"条件 B. 破坏“不可抢占”条件 C. 破坏“互斥”条件 D. 破坏“请求和保持”条件 答案:C 解析&…...
程序化广告行业(18/89):交易模式与关键概念解析
程序化广告行业(18/89):交易模式与关键概念解析 大家好呀!一直以来,我都在深入研究程序化广告这个充满挑战与机遇的领域,在学习过程中收获了很多,也迫不及待想和大家分享。写这篇博客ÿ…...
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中还有内核级…...
基于大模型预测的难治性青光眼诊疗方案研究报告
目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、大模型预测难治性青光眼的原理与方法 2.1 大模型介绍 2.2 数据收集与预处理 2.3 模型训练与优化 三、术前风险预测与准备 3.1 术前眼压及视神经损伤风险预测 3.2 患者全身状况评估 3.3 术前准备工作 四…...
射频前端模块(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…...
k8s系统学习路径
学习 Kubernetes(K8s)需要循序渐进,结合理论知识和实践操作。以下是学习 Kubernetes 的推荐步骤: 1. 先决条件 • 掌握容器基础:先学习 Docker,理解容器化概念(镜像、容器、仓库)、…...
OSI 七层网络模型
文章目录 OSI 七层模型应用层表示层会话层传输层网络层数据链路层物理层 TCP/IP 四层模型应用层传输层网络层数据链路层 TCP/IP 特点OSI 和 TCP/IP 两者关系通信过程及相关协议常用协议及端口号常用协议分类参考链接 OSI 七层模型 七层模型,亦称OSI(Ope…...
虚拟电商-数据库分库分表(二)
本文章介绍:使用Sharding-JDBC实现数据库分库分表,数据库分片策略,实现数据库按月分表 一、Sharding-JDBC使用 1.1.准备环境 步骤一:分库分表sql脚本导入 创建了两个数据库:chongba_schedule0 和chongba_schedule1…...
进程间通信--匿名管道
进程间通信介绍 进程间通信目的 数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件&…...
人工智能治理的两会声音:技术规范与伦理风险探讨
摘要 在最近的两会期间,科技界代表聚焦人工智能(AI)治理问题,提出多项建议。这些建议涵盖AI技术规范、伦理风险预防与控制等方面。代表们强调建立健全法律法规和技术标准体系,确保AI健康发展。同时,重视公众…...
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、…...
Powershell如何查询 windows defender是否开启
可以通过PowerShell使用以下方法检查Windows Defender(Microsoft Defender Antivirus)的状态: 方法1:使用 Get-MpComputerStatus 命令 此命令会返回Microsoft Defender的全面状态,包括实时保护、病毒定义版本等&#…...
【漫话机器学习系列】133.决定系数(R²:Coefficient of Determination)
决定系数()详解 决定系数()是回归分析中用于评估模型拟合优度的一个重要统计指标。它表示自变量(特征变量)能够解释因变量(目标变量)变异的程度,取值范围为 [0,1] 或 (−…...
【MySQL】数据库简要介绍和简单应用
目录 数据库简要介绍 SQL 的简单应用 需要注意的: 数据库简要介绍 数据库(database)是指长期存储在计算机内,有组织的、可共享的数据集合。它可视为一个电子化的文件柜,用来存储电子文件,用户可以对文件中的数据进行査询、新增、更新、删…...
【Kubernets】Deployment 和 StatefulSet 有什么区别?什么时候用 StatefulSet?
Deployment 和 StatefulSet 的区别 在 Kubernetes 中,Deployment 和 StatefulSet 都用于管理 Pod,但它们适用于不同的场景。 1. Deployment:管理无状态应用 特点: 无状态:Pod 之间相互独立,不需要保持顺…...
Machine Learning: 十大基本机器学习算法
机器学习算法分类:监督学习、无监督学习、强化学习 基本的机器学习算法: 线性回归、支持向量机(SVM)、最近邻居(KNN)、逻辑回归、决策树、k平均、随机森林、朴素贝叶斯、降维、梯度增强。 机器学习算法大致可以分为三类: 监督学习算法 (Sup…...
洛谷 P2801 教主的魔法 题解
之前学过 莫队 算法,其运用了分块思想;但是我居然是第一次写纯种的分块题目。 题意 给你一个长度为 n n n 的序列 a a a(一开始 ∀ a i ∈ [ 1 , 1000 ] \forall a_i\in[1,1000] ∀ai∈[1,1000])。要求执行 q q q 次操作&…...
【八股文】ArrayList和LinkedList的区别
先讲讲两者是如何实现的 ArrayList public class ArrayList<E> extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, java.io.Serializable {transient Object[] elementData; private int size; } 通过源码可以看出,ArrayLis…...
函数的引用/函数的默认参数/函数的占位参数/函数重载
函数的引用 #include<iostream> using namespace std;//引用的本质在c内部实现,是一个指针常量//交换函数 //1.值传递 void mySwap01(int a, int b) {int temp a;a b;b temp; }//2.地址传递 void mySwap02(int *a, int *b) {int temp *a;*a *b;*b temp…...
