endpoint与ingress-nginx的区别

  1. Ingress-nginx
  • 作用
    • 流量入口管理:
      • Ingress-nginx 是一个 Ingress Controller,负责实现 Kubernetes 的 Ingress 资源功能。
      • 它充当集群的 外部访问入口,处理 HTTP/HTTPS 流量,并根据规则将请求路由到后端的 Service 或 Pod。
      • 支持基于域名、路径的路由,以及 TLS 终止、负载均衡等高级功能。
  • 关键特性:

    • 七层(L7)代理:基于 HTTP/HTTPS 协议的路由(如 example.com/api → service-a)。
    • 依赖资源:
      • 需要定义 Ingress 资源(YAML 文件)来描述路由规则。
      • 需要部署 ingress-nginx 的 Pod 作为控制器(通常以 Deployment + Service 形式运行)。
  • 典型场景:

    • 对外暴露多个 Web 服务(通过不同域名或路径区分)。
    • 替代传统的 NodePort/LoadBalancer,提供更灵活的流量管理。
# Ingress 资源定义示例
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
  - host: example.com
    http:
      paths:
      - path: /api
        pathType: Prefix
        backend:
          service:
            name: api-service
            port:
              number: 80

2、Endpoint(或 EndpointSlice)
作用:

  • 服务后端发现:

    • Endpoint 是 Kubernetes 自动维护的资源,用于记录一个 Service 后端所有 Pod 的 IP 和端口。
    • 当 Service 的 Pod 发生变化(扩缩容、重启)时,Endpoint 会自动更新。
    • EndpointSlice 是 Endpoint 的升级版,适用于大规模集群(更高效的数据分片)。
  • 关键特性

    • 四层(L4)代理:直接关联 Pod 的网络地址(IP:Port),不感知应用层协议(HTTP/HTTPS)。
    • 自动生成:
      • 由 Kubernetes 根据 Service 的 Label Selector 自动创建和管理。
      • 用户通常无需手动操作(除非使用 Headless Service 或自定义 Endpoint)。
  • 典型场景:

    • Service 流量转发的实际目标(如 ClusterIP 类型的 Service 通过 Endpoint 找到 Pod)。
    • 集成外部服务(手动创建 Endpoint 指向集群外 IP)。
# 查看某个 Service 的 Endpoint
kubectl get endpoints <service-name>

# 输出示例
NAME           ENDPOINTS                         
api-service    10.244.1.2:80,10.244.2.3:80
  • 核心区别对比
特性 Ingress-nginx Endpoint
功能层级 七层(HTTP/HTTPS) 四层(IP:Port)
主要作用 外部流量路由、TLS 终止、路径匹配 记录 Service 后端 Pod 的实际地址
资源类型 需要部署 Ingress Controller(如 Nginx Pod) Kubernetes 自动生成的资源对象
配置方式 通过 Ingress 资源定义规则 自动由 Service 和 Pod 生成
适用协议 HTTP/HTTPS/GRPC(应用层) 任何 TCP/UDP 协议(传输层)
手动操作频率 高(需定义路由规则) 低(通常自动维护)
  • 协作关系
用户访问 https://example.com/api → 请求到达 ingress-nginx Pod。

Ingress-nginx 查询 Ingress 资源,匹配到路径 /api 对应的后端 api-service。

Service api-service 通过 Endpoint 获取实际 Pod 的 IP 列表(如 10.244.1.2:80)。

流量被转发到目标 Pod。

deepseek_mermaid_20250814_3b7f64

总结:
Ingress-nginx:面向外部流量,提供高级路由能力(需主动配置)。
Endpoint:面向内部服务发现,自动跟踪 Pod 变化(无需配置)。
两者协同工作,共同完成 Kubernetes 服务的暴露和流量管理。

posted @ 2025-08-14 17:07  little小新  阅读(14)  评论(0)    收藏  举报