Kubernetes Ingress 实战:域名路由、TLS 证书与 502/404 排查
Kubernetes Ingress 实战:域名路由、TLS 证书与 502/404 排查服务部署进 K8s 后,第一个绕不开的问题是:外面怎么访问?给每个 Service 开一个type: LoadBalancer太贵,NodePort端口又丑又难记。Ingress 就是标准答案——一个入口,按域名和路径把流量分发到不同 Service,顺带把 TLS 证书也统一收口。但 Ingress 也是新手翻车重灾区:配好了访问却 404,或者一直 502。这篇从最小可用配置讲起,把域名路由、TLS、以及最常见的两类报错排查讲清楚。前置:Ingress 资源 ≠ Ingress Controller这是第一个概念坑。你写的IngressYAML 只是一份「路由规则声明」,它本身不干活。真正接收流量、执行规则的是Ingress Controller(一个跑在集群里的 Pod,通常是 Nginx、Traefik 或云厂商的实现)。没装 Controller,你的 Ingress 资源就是一张贴在墙上没人看的通知。装最常用的 ingress-nginx:# 用官方清单一键装,会创建 ingress-nginx 命名空间和 controllerkubectl apply-fhttps://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.11.2/deploy/static/provider/cloud/deploy.yaml# 确认 controller Pod 起来了,并拿到对外 IPkubectl get pods-ningress-nginx kubectl get svc-ningress-nginx ingress-nginx-controller最后那个 svc 的EXTERNAL-IP就是集群入口 IP,把你的域名 A 记录解析到它。最小可用:按域名路由到 Service假设有两个服务web-svc(80) 和api-svc(8080),想让example.com走前端、api.example.com走后端:apiVersion:networking.k8s.io/v1kind:Ingressmetadata:name:main-ingressannotations:nginx.ingress.kubernetes.io/rewrite-target:/spec:ingressClassName:nginx# 指定用哪个 controller,别漏rules:-host:example.comhttp:paths:-path:/pathType:Prefixbackend:service:name:web-svcport:number:80-host:api.example.comhttp:paths:-path:/pathType:Prefixbackend:service:name:api-svcport:number:8080几个必须注意的点:ingressClassName: nginx不能漏。多个 controller 共存时,漏了会导致没有 controller 认领这条规则,访问直接 404。pathType有Prefix(前缀匹配)和Exact(精确匹配)。大多数场景用Prefix。service.port.number是Service 的端口,不是 Pod 容器端口。这俩经常配错。应用后验证:kubectl get ingress main-ingress# 直接指定 Host 头测试,绕过 DNScurl-HHost: api.example.comhttp://EXTERNAL-IP/health加上 HTTPS:TLS 证书收口Ingress 的一大价值是统一终结 TLS,后端 Service 只跑明文 HTTP。先把证书和私钥存成 Secret:kubectl create secret tls example-tls\--certfullchain.pem--keyprivkey.pem然后在 Ingress 里引用它:spec:ingressClassName:nginxtls:-hosts:-example.com-api.example.comsecretName:example-tls# 引用上面创建的 Secretrules:# ... rules 同上tls.hosts里的域名必须和证书里的 CN/SAN 匹配,也要和rules.host对上。配好后 ingress-nginx 默认会把 HTTP 301 跳转到 HTTPS。生产环境别手动管证书,用 cert-manager 自动签发和续期 Let’s Encrypt 证书,加个 annotation 就行:metadata:annotations:cert-manager.io/cluster-issuer:letsencrypt-prod排查一:访问 404 Not Foundnginx 返回 404(注意看响应头Server: nginx,确认是 controller 返回的而非后端),常见原因按概率排:ingressClassName漏了或写错——没 controller 认领。kubectl describe ingress看有没有Successfully synced事件。Host 不匹配——请求的域名和rules.host对不上。用curl -H Host: ...显式指定测试。path/pathType 不匹配——比如pathType: Exact配了/但你访问/foo。# 直接看 controller 日志,404 会打出它匹配到哪条规则(或没匹配到)kubectl logs-ningress-nginx-lapp.kubernetes.io/nameingress-nginx--tail50排查二:一直 502 Bad Gateway502 意味着 controller 找到了规则、但连不上后端。这几乎总是 Service 到 Pod 这一段的问题,而不是 Ingress 本身:# 1. Service 有没有选中 Pod?ENDPOINTS 为空就是标签选错了kubectl get endpoints api-svc# 若 ENDPOINTS 是 none,说明 Service 的 selector 没匹配到任何 Pod# 2. Service 端口和容器端口对得上吗?kubectl describe svc api-svc# 3. Pod 本身健康吗?kubectl get pods-lappapi最高频的 502 根因就一个:Service 的selector和 Pod 的labels不一致,导致ENDPOINTS为空,Ingress 转发到一个没有后端的 Service。改对标签,endpoints立刻就有值了。另一个常见 502:后端是 HTTPS 但没告诉 nginx。若 Service 后面是 HTTPS,要加 annotation:nginx.ingress.kubernetes.io/backend-protocol:HTTPS小结Ingress 资源只是路由声明,必须先装Ingress Controller才生效。写 Ingress 三件套别漏:ingressClassName、正确的host、指向Service 端口的 backend。TLS 用kubectl create secret tls存证书再在spec.tls引用;生产用 cert-manager 自动续期。404 看 Ingress 层(class/host/path 匹配),502 看后端(先查kubectl get endpoints是不是空的)。一句话记忆点:404 是「规则没匹配上」,502 是「匹配上了但后端连不通」,先分清是哪一层,排查方向立刻收敛。

相关新闻

AI设计效率停滞期诊断手册(含12项量化指标仪表盘):超76%团队在第3周即触发衰退预警

AI设计效率停滞期诊断手册(含12项量化指标仪表盘):超76%团队在第3周即触发衰退预警

更多请点击: https://kaifayun.com 第一章:AI设计效率停滞期的本质认知与阶段定位 AI设计效率停滞期并非技术退步的征兆,而是系统性能力边界与人类认知范式之间出现阶段性错配的客观表征。当模型参数规模、训练数据量与算力投入持续增长&am…

2026/7/21 18:06:55 阅读更多 →
5分钟掌握OBS屏幕实时标注:让你的直播教学效率翻倍

5分钟掌握OBS屏幕实时标注:让你的直播教学效率翻倍

5分钟掌握OBS屏幕实时标注:让你的直播教学效率翻倍 【免费下载链接】obs-studio OBS Studio - Free and open source software for live streaming and screen recording 项目地址: https://gitcode.com/GitHub_Trending/ob/obs-studio OBS Studio作为业界领…

2026/7/23 1:47:33 阅读更多 →
Go 用 errgroup 管理并发子任务:错误收敛、取消传播与限流

Go 用 errgroup 管理并发子任务:错误收敛、取消传播与限流

Go 用 errgroup 管理并发子任务:错误收敛、取消传播与限流 并发拉一批数据,你大概率写过这样的代码:开五个 goroutine 各自请求一个接口,用 sync.WaitGroup 等它们全部结束。跑起来没问题,直到有一天某个接口挂了——其他四个还在傻等,错误也没人收,日志里只留下一条超时。更糟…

2026/7/21 18:07:00 阅读更多 →

最新新闻

浏览器缓存全解:强缓存 / 协商缓存实战,线上项目缓存策略落地

浏览器缓存全解:强缓存 / 协商缓存实战,线上项目缓存策略落地

Hi,我是前端人类学! 一次因缓存策略不当导致的生产事故:页面白屏持续数小时,影响数千用户。根源竟是 index.html 被设置了 10 分钟的强缓存。 文章目录一、缓存是什么?为什么它这么重要?二、强缓存&#xf…

2026/7/23 13:15:24 阅读更多 →
三星 Galaxy Watch 9 与 Galaxy Watch 8 对比:谁更适合你?

三星 Galaxy Watch 9 与 Galaxy Watch 8 对比:谁更适合你?

三星 Galaxy Watch 9 与 Galaxy Watch 8 对比:谁更值得买?产品发布季,三星在伦敦举行的 Galaxy Unpacked 活动中推出全新系列智能手表,包括旗舰款 Galaxy Watch Ultra 2 和更亲民的 Galaxy Watch 9。此外,还有三星 202…

2026/7/23 13:15:24 阅读更多 →
Vite vs Webpack:底层原理、大型项目踩坑对比、迁移方案

Vite vs Webpack:底层原理、大型项目踩坑对比、迁移方案

Hi,我是前端人类学! 当 Webpack 的启动时间从 120 秒变成 Vite 的 1.5 秒,改变的不仅是数字,更是开发者的心态。 文章目录一、底层原理:两种截然不同的哲学Webpack:打包优先Vite:按需编译热更新…

2026/7/23 13:15:24 阅读更多 →
价格亲民、形态实用!三星Galaxy Z Fold 8无长焦仍值得入手?

价格亲民、形态实用!三星Galaxy Z Fold 8无长焦仍值得入手?

ZDNET核心观点在伦敦新品发布会上,三星推出三款折叠屏手机。顶级机型是三星Galaxy Z Fold 8 Ultra,不过三星Galaxy Z Fold 8独特外形也颇具吸引力。如今发布会结束,所有手机公布,你或许急着预订全新三星Galaxy Z Fold 8 Ultra&…

2026/7/23 13:15:24 阅读更多 →
2026年国内靠谱聚氨酯同步带品牌清单公开 采购入手前建议先收藏

2026年国内靠谱聚氨酯同步带品牌清单公开 采购入手前建议先收藏

最近后台收到很多制造业采购的留言,说买聚氨酯同步带踩了不少坑:要么用了俩月就跳齿断裂,要么非标定制等了半个月还没出货,要么定位精度不够导致废品率飙升。作为在传动行业摸了20多年的老兵,今天就给大家整理一份经过…

2026/7/23 13:15:24 阅读更多 →
整理录音太耗时?用对AI工具实现会议内容自动化处理

整理录音太耗时?用对AI工具实现会议内容自动化处理

职场人常面临这样的困境:一场一小时的会议,往往需要耗费两三个小时去反复回听录音、手动敲字、提炼重点。这种低效的机械劳动不仅挤占了核心工作时间,还容易因为疲劳导致关键信息遗漏。要彻底解决整理录音耗时的问题,核心在于利用…

2026/7/23 13:14:24 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 12:54:44 阅读更多 →

月新闻