首页/云/云与容器速查/Ingress 七层路由
Kubernetes68 条

Ingress 七层路由

用一组规则把集群外 HTTP(S) 流量路由到内部 Service:按 host/path 转发、终结 TLS。Ingress 只是规则对象,真正干活的是 Ingress Controller。

云与容器速查云更新于 2026-10-13

Ingress 是什么

Ingress 是集群的七层入口规则:按域名与路径把集群外的 HTTP(S) 流量路由到内部 Service,并可在同一处配置 TLS 终止。要点在于 Ingress 本身只是规则对象,真正干活的是 Ingress Controller——没有部署 Controller 时,Ingress 只是一份躺在集群里、谁也不会执行的配置。

基本信息

apiVersionnetworking.k8s.io/v1,早期写法已从稳定 API 中移除
规则结构rules 下的 host 与 http.paths,pathType 取 Prefix 或 Exact
TLStls 段引用承载证书的 Secret,由 Controller 完成 HTTPS 终止
执行者需部署 Ingress Controller,如 nginx、traefik 或云厂商实现
演进方向Gateway API 是新一代入口方案,能力更强

典型使用场景

  • 统一入口:多个服务共用一个域名,按路径分发到不同后端
  • 多域名托管:一台入口承载多个域名的站点,证书分别绑定
  • 灰度切流:通过注解控制权重或规则,把部分流量导向新版本
  • 强制 HTTPS:在入口完成证书终止与跳转配置
  • 内网暴露:仅对内网域名提供路由,不占用公网地址

Ingress 示例

Ingress 示例
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: web
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /   # 注解与控制器绑定
spec:
  ingressClassName: nginx            # 指定由哪个控制器实现
  tls:
    - hosts: ["app.example.com"]
      secretName: app-example-tls    # 证书来自 tls 型 Secret
  rules:
    - host: app.example.com
      http:
        paths:
          - path: /
            pathType: Prefix         # 前缀匹配,必须显式声明
            backend:
              service:
                name: web
                port:
                  number: 80

常见路径类型

pathType匹配方式适用
Prefix按路径前缀匹配整站路由,最常用
Exact完全相等才匹配单一路径精确转发
ImplementationSpecific交由控制器解释依赖具体控制器实现,可移植性差
没有 Ingress Controller 时 Ingress 不会生效:如果 kubectl get ingress 显示的地址栏为空,通常就是没有控制器在实现这些规则。
注解是与控制器强绑定的:rewrite、超时、限流这类能力都靠注解实现,换一个控制器后这些配置可能全部失效,迁移前要逐条核对。

排障顺序建议

  • 先确认 Service 与后端 Pod 本身可用:直接访问 Service 或转发端口验证
  • 再看 Ingress 规则:域名、路径与后端端口是否与实际一致
  • 然后看控制器:日志里是否收到规则、是否报解析或证书错误
  • 最后看链路:负载均衡或云厂商入口是否把流量送到了控制器
  • 顺序反了容易白折腾:应用不通却在反复改路由规则

易错点

  • pathType 不写,行为与预期不一致导致路由结果漂移
  • 注解是控制器特定的,换控制器后 rewrite 等配置全部失效
  • Ingress 规则指向的 Service 名称或端口写错,返回 503 而不是 404
  • TLS 段引用的 Secret 不存在或证书过期,访问报证书错误

数据来源与参考

  • Kubernetes Docs:Ingress
  • Kubernetes Docs:Ingress Controllers

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌