
Ingress 到底配置了什么
Ingress 的核心不是端口映射,而是规则表达。它通过主机名、路径和后端 Service 的组合,定义外部请求如何进入集群。常见场景包括同一域名下不同路径转发到不同服务,不同域名访问同一集群服务,在入口层统一配置 HTTPS,以及为不同业务设置不同入口策略。
需要注意的是,创建 Ingress 对象不等于入口已经生效。真正执行转发的是 Ingress Controller。Ingress 定义规则,Controller 监听规则并生成实际代理配置,Service 负责把流量稳定送到一组 Pod。
一个基础配置示例
下面示例把 /app 转发到 app-svc,把 /api 转发到 api-svc:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web-ingress
spec:
ingressClassName: nginx
rules:
- host: demo.example.com
http:
paths:
- path: /app
pathType: Prefix
backend:
service:
name: app-svc
port:
number: 80
- path: /api
pathType: Prefix
backend:
service:
name: api-svc
port:
number: 8080
如果要在入口层处理 HTTPS,可以增加 TLS 配置:
spec:
tls:
- hosts:
- demo.example.com
secretName: demo-tls

配置时最容易出问题的地方
第一类问题是 Controller 没装好,或者 ingressClassName 与实际控制器不匹配。第二类问题是 Service 端口写错,Ingress 转发到 Service 后,Service 再找 Pod,如果端口映射不一致,流量会卡在中间层。第三类问题是域名解析没有指向入口 IP,导致请求根本没有到达集群。第四类问题是 TLS 证书、Secret 名称和域名不一致,HTTPS 看起来配置了,实际握手失败。
这些问题都很常见,因此建议按“小步验证”的方式落地:先部署一个最简单的后端 Service,再创建基础 Ingress,确认域名和访问地址可达,然后再添加路径拆分、TLS、重写、限流或鉴权。

日常排障流程
排查 Ingress 时不要只看业务 Pod。入口链路包含客户端、DNS、负载均衡、Ingress Controller、Service 和 Pod。可以按下面顺序查看:
kubectl get ingress
kubectl describe ingress web-ingress
kubectl get svc
kubectl get endpoints
kubectl logs -n ingress-nginx deploy/ingress-nginx-controller
如果 Ingress 有地址但访问失败,优先看 DNS 和 Controller 日志;如果能进 Controller 但后端失败,重点看 Service、Endpoint 和 Pod 端口;如果只有 HTTPS 失败,重点看 Secret、证书域名和客户端信任链。
Ingress 和 Service 的分工
Service 解决集群内部如何稳定找到一组 Pod,Ingress 解决外部用户如何通过统一入口访问服务。两者不要混用。服务数量少时,直接 NodePort 或 LoadBalancer 似乎也能工作,但当域名、路径、证书和灰度需求变多后,统一入口治理会明显更可维护。
如果你正在梳理容器网络和服务入口的关系,可以搭配 容器网络专题 与 Kubernetes 实践 阅读,把入口转发放在完整的集群通信路径中理解。
小结
Kubernetes Ingress 的重点不是创建一个对象,而是把规则、控制器、Service、证书和排障流程串起来。当你能稳定管理域名、路径、TLS 与后端服务关系时,Ingress 才真正从“能用”进入“可维护”。对于中大型集群,入口治理往往比单个服务配置更值得标准化。
常见问题
Ingress 和 Service 有什么区别?
Service 提供集群内部稳定访问入口,Ingress 主要处理 HTTP/HTTPS 七层入口、域名、路径路由和 TLS 终止。通常外部请求先到 Ingress Controller,再转发到 Service,最后到后端 Pod。
为什么创建 Ingress 后外部访问不到?
常见原因包括没有安装 Ingress Controller、域名解析不到入口地址、Service 端口配置错误、路径规则不匹配、TLS 配置异常或后端 Pod 未就绪。排障时要沿域名、入口、规则、Service、Endpoints、Pod 逐层检查。
Ingress 适合所有协议吗?
Ingress 标准主要面向 HTTP/HTTPS 流量。TCP、UDP、长连接或特殊协议通常需要 LoadBalancer、NodePort、网关扩展能力或服务网格方案,不能简单套用 HTTP 路由模型。
转载请注明出处:https://www.cloudnative-tech.com/p/7373/