什么是endpoints?

在 Kubernetes 中,Endpoints 是一个资源对象,它表示服务(Service)到 Pod 的网络连接。
Endpoints 的主要作用是将服务的虚拟 IP 地址映射到实际的 Pod IP 地址,从而实现服务发现和负载均衡。

1.Endpoints 的作用
服务发现 :Endpoints 提供了从服务名称到实际 Pod IP 地址的映射,使得客户端可以通过服务名称访问到后端的 Pod。
负载均衡 :Endpoints 列出了所有可以提供服务的 Pod 的 IP 地址和端口,Kubernetes 的代理(如 kube-proxy)可以根据这些信息实现负载均衡。
动态更新:当 Pod 的状态发生变化(如启动、停止、删除)时,Endpoints 会自动更新,确保服务始终指向可用的 Pod。

2.Endpoints 的工作原理
2.1 Service 和 Endpoints 的关系

当你创建一个 Service 时,Kubernetes 会自动创建一个对应的 Endpoints 对象。

Service 定义了服务的虚拟 IP 和端口,而 Endpoints 则列出了所有实际提供服务的 Pod 的 IP 和端口。
2.2 Endpoints 的自动管理

Kubernetes 控制平面(如 kube-controller-manager)中的 Endpoint Controller 负责管理 Endpoints 对象。

当 Pod 的状态发生变化时,Endpoint Controller 会自动更新 Endpoints 对象,确保其始终反映当前可用的 Pod。
2.3 kube-proxy 的作用

kube-proxy 是 Kubernetes 的网络代理,运行在每个节点上。

它根据 Endpoints 中的信息,将流量从服务的虚拟 IP 转发到实际的 Pod IP。

kube-proxy 支持多种代理模式,如 iptables、ipvs 和 userspace,用于实现高效的负载均衡。

3.Endpoints 的配置和管理
3.1 查看 Endpoints

你可以使用 kubectl 命令查看 Endpoints 的信息:

bash 复制代码
kubectl get endpoints
kubectl describe endpoints <service-name>

3.2 Endpoints 的 YAML 文件

Endpoints 对象通常由 Kubernetes 自动管理,但你也可以手动创建或修改 Endpoints。以下是一个 Endpoints 的 YAML 文件示例:

bash 复制代码
apiVersion: v1
kind: Endpoints
metadata:
  name: my-service
subsets:
  - addresses:
      - ip: 10.0.0.1
    ports:
      - port: 80

3.3 动态更新

Endpoints 会自动更新,以反映当前可用的 Pod。例如,当一个 Pod 被删除时,Endpoints 会自动移除该 Pod 的条目。

4.Endpoints 的应用场景
4.1 服务发现

客户端可以通过服务的虚拟 IP 或 DNS 名称访问服务,而无需知道后端 Pod 的具体 IP 地址。Endpoints 提供了从服务到 Pod 的映射。
4.2 负载均衡

Endpoints 列出了所有可用的 Pod,kube-proxy 根据这些信息实现负载均衡,将流量分发到不同的 Pod。
4.3 高可用性

通过自动更新 Endpoints,Kubernetes 确保服务始终指向可用的 Pod,从而提高系统的高可用性。

相关推荐
mengge.cloud4 小时前
prometheus+k8s+弹性伸缩,综合项目
云原生·容器·kubernetes·prometheus
Z21-X5 小时前
云原生运维学习笔记:ECShop全链路容器化部署与Docker底层资源隔离深度剖析
运维·笔记·学习·云原生
进击的荆棘7 小时前
Linux系统——线程同步与互斥之线程池和安全
linux·运维·服务器·安全·单例模式·线程
瑞雪兆丰年兮8 小时前
JavaWeb-day11-SpringBootWeb案例(文件上传)
java·运维·服务器·javaweb·oss
xbzb8 小时前
从零容器化部署 ECShop:Harbor 私有仓库 + 自定义 PHP 镜像 + LNMP 三容器
容器·php·harbor·镜像·仓库·ecshop
那明眸似水8 小时前
云原生项目三:Docker秒级启动NextCloud个人网盘存储办公系统
linux·运维·docker·云原生·容器
腾飞开源9 小时前
03_Kubernetes 核心概念拆解:从 Spec/Status 收敛到工作负载控制器的设计逻辑
云原生·容器·kubernetes
小南家的青蛙10 小时前
微服务体系下DevOps运维岗位面试方案设计
运维·面试·职场和发展·devops
知已难寻20 小时前
Docker 入门:容器技术与 Docker 基础
java·运维·服务器·docker·云原生·容器
xbzb1 天前
镜像到底存在哪:/var/lib/docker 的四级映射与 daemon.json 配置
docker·容器·json·镜像·daemon.json·四级