首页/云/Kubernetes 速查/Ingress Controller 做了什么
网络与服务55 条

Ingress Controller 做了什么

控制器是让 Ingress 落地的执行者:监听 Ingress/Service/Secret 变化,生成并热加载反向代理配置,同时承载入口流量。

Kubernetes 速查云更新于 2026-10-13

控制器做了什么

Ingress 只是一份声明式的路由意图,真正让它落地的是 Ingress Controller:它监听 Ingress、Service、Secret、Endpoints 等对象的变化,把规则渲染成反向代理(多数实现是 nginx、Traefik、Envoy 等)的配置并热加载,同时自身作为数据面承接全部入口流量。它通常由两部分组成——控制器进程与承接流量的 Service(LoadBalancer 或 NodePort),两者都健康时入口才可用。

基本信息

常见实现ingress-nginx、Traefik、HAProxy Ingress、Contour、云厂商实现
组成控制器工作负载(Deployment 或 DaemonSet)+ 承接流量的 Service
数据面进程把规则渲染为代理配置并 reload
配置来源Ingress 对象、Service、TLS Secret、控制器自身的 ConfigMap
高可用多副本 + 反亲和 + PodDisruptionBudget,外部入口由 LB 或 VIP 提供

典型使用场景

  • 域名接入:为业务提供统一的七层入口,按 host 与 path 分发到不同 Service
  • TLS 终止:在入口处统一加载证书,业务容器不必各自处理证书
  • 统一出入口治理:限流、超时、重试、访问日志在入口层集中配置
  • 灰度与切流:通过权重、灰度注解或独立 Ingress 对象逐步放量
  • 排障入口链路:先看控制器是否健康,再看上游 LB 是否指向健康节点

健康检查路径

健康检查路径
kubectl -n ingress-nginx get deploy,pods,svc                    # 控制器、Pod 与入口 Service
kubectl -n ingress-nginx get pods -o wide                       # 分布在哪几个节点
kubectl -n ingress-nginx logs deploy/ingress-nginx-controller --tail=30
kubectl -n ingress-nginx rollout status deploy/ingress-nginx-controller
kubectl get ingressclass                                       # 集群里有哪些入口实现,谁在管你的规则

入口故障分层

层表现检查点
外部入口域名解析到地址但连接超时LB 是否指向健康节点、安全组与端口放行
控制器工作负载入口返回 502 或 503控制器 Pod 是否就绪、日志有无后端连接错误
规则渲染路由不符预期或全部落到默认后端Ingress 是否被控制器认领、ingressClassName 是否匹配
后端服务部分路径 502对应 Service 的 Endpoints 是否为空
控制器通常部署在自己的命名空间(例如 ingress-nginx),与业务不在同一个命名空间。排查时不要只在自己业务命名空间里找 Pod,同时注意服务可能由多个入口实现共同管理,用 IngressClass 确认哪一个是这套规则的执行者。
控制器是全局共享组件:升级或重启会影响集群里所有入口站点,必须安排在窗口期,并确认多副本滚动策略、反亲和与 PDB 都已配置,避免滚动时出现入口完全不可用的空档。

易错点

  • 控制器 Pod 与业务在同一命名空间里找:控制器多数部署在独立命名空间,找错位置会浪费大量排查时间
  • 忽略 IngressClass 与 ingressClassName:规则存在但没有控制器认领,表现为域名完全无响应
  • 入口 502 就改 Ingress 规则:多数是后端 Service 的 Endpoints 为空或后端未就绪,先确认后端
  • 升级控制器不留窗口:入口是全集群共享组件,重启会同时影响所有已接入的站点

数据来源与参考

  • Kubernetes 官方文档 · Ingress Controllers
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌