Kubernetes

K8s Ingress 详解

·5 分钟阅读·1690 字

Kubernetes Ingress 七层路由完整原理、与 Service 的区别、配置示例与生产实践

📋 目录

K8s Ingress 详解

1. ⚡ Ingress 与 Service 对比

特性ServiceIngress
层级四层(TCP/UDP)七层(HTTP/HTTPS)
路由依据IP + 端口域名 + 路径
TLS 终止❌ 不支持✅ 支持
会话保持源 IPCookie(生产首选)
URL 重写❌ 不支持✅ 支持
每服务独立端口✅ 需要❌ 统一 80/443

2. 🔧 Ingress 核心概念

术语说明
IngressK8s API 对象,定义路由规则(期望状态)
Ingress Controller实际处理流量的反向代理/负载均衡器
Ingress ClassIngress 分类,集群可部署多个 Ingress Controller

⚠️ 面试重点:Ingress 资源本身不做流量转发,必须部署 Ingress Controller 才会生效。


3. ⚙️ 配置示例


apiVersion: networking.k8s.io/v1

kind: Ingress

metadata:

  name: example-ingress

  annotations:

    nginx.ingress.kubernetes.io/rewrite-target: /

spec:

  ingressClassName: nginx

  rules:

  - host: app.example.com

    http:

      paths:

      - path: /api

        pathType: Prefix

        backend:

          service:

            name: api-service

            port:

              number: 80

      - path: /

        pathType: Prefix

        backend:

          service:

            name: web-service

            port:

              number: 80

  tls:

  - hosts:

    - app.example.com

    secretName: app-tls-secret

4. 🚀 Ingress Controller 工作原理


客户端请求(app.example.com)

  ↓ DNS 解析到 Ingress Controller 公网 IP

  ↓ Ingress Controller 收到请求

  ↓ 匹配 Ingress 规则(host + path)

  ↓ 转发到对应的 ClusterIP Service

  ↓ Service 通过 kube-proxy DNAT 到后端 Pod

常见 Ingress Controller:nginx-ingress(生产最常用)、Traefik、HAProxy Ingress、云厂商 ALB Ingress


5. 🌐 面试考点

5.1. 面试题:Ingress 和 Service 的关系?

  1. Ingress 是七层,Service 是四层
  2. Ingress 依赖 Ingress Controller 才能工作
  3. Ingress 统一入口 + TLS,Service 是后端转发
  4. 生产架构:LoadBalancer → Ingress → Service → Pod

5.2. 面试题:Ingress Controller 和 Ingress 的区别?

  • Ingress 是 声明式 API 资源
  • Ingress Controller 是 实际运行的负载均衡器
  • Controller 持续 watch Ingress 资源变化,动态更新配置
  • 没有 Controller 的 Ingress = 空配置

关联文档

Yanche Blog

记录云原生、Linux、数据库等技术领域的学习心得,以及日常生活的思考与感悟。

© 2026 Yanche Blog. All rights reserved.

Powered by Astro