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/9/29 1:23:37 阅读更多 →
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/10/10 20:00:57 阅读更多 →
Go 用 errgroup 管理并发子任务:错误收敛、取消传播与限流

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

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

2026/9/24 8:35:14 阅读更多 →

最新新闻

删数问题与贪心算法:从错误直觉到单调栈最优解

删数问题与贪心算法:从错误直觉到单调栈最优解

上个月帮几位朋友看算法实验作业,他们在头歌平台上刷贪心算法关卡,卡得最久的不是那些需要长篇大论设计的题目,而是一道看起来非常简单的"删数问题"。代码量不到二十行,解题思路也说得头头是道,可提交上去就…

2026/10/12 7:33:21 阅读更多 →
自研测试平台开发实战:从架构设计到落地踩坑全记录

自研测试平台开发实战:从架构设计到落地踩坑全记录

1. 为什么我决定自研测试平台做测试平台开发这件事,起因其实很朴素:手工测试的产出效率到顶了,市面上的工具又各有各的别扭,团队里测试、开发、运维三拨人每天在来回拉扯。与其继续在Excel和聊天窗口里打转,不如自己动…

2026/10/12 7:33:21 阅读更多 →
C++装饰器模式实战指南:从继承替代到三种现代实现方案

C++装饰器模式实战指南:从继承替代到三种现代实现方案

装饰器模式在C里总是被低估。很多C开发者觉得这是Java系的东西,或者说“我有继承就够了”,但等到真正需要给一个类动态加功能、又不能把继承树搞成爆炸形状的时候,才会发现装饰器这东西是真能救命的。尤其是维护老代码、做游戏技能系统、写日…

2026/10/12 7:33:21 阅读更多 →
Cloudera Manager集成OpenLDAP认证实战:账号体系收口与排障指南

Cloudera Manager集成OpenLDAP认证实战:账号体系收口与排障指南

从 2018 年开始在大规模 CDH 集群上做运维,我最大的痛苦来源不是 HDFS NameNode 的 Full GC,也不是 Yarn 资源池调参,而是账号体系乱成一锅粥。开发提工单要开 CM 账号,临时同事走了账号还在,安全审计一问三不知&#…

2026/10/12 7:33:21 阅读更多 →
WSL2+Docker+Ollama,本地部署大模型实践(Qwen1.8b)

WSL2+Docker+Ollama,本地部署大模型实践(Qwen1.8b)

本篇文章主要讲解部署思路和实践经验,先解释一下WSL2、Docker、Ollama。 WSL2:可以通俗理解成轻量化虚拟机,但和传统 VMware/VirtualBox 虚拟机不一样。它是 Windows 内置的轻量 Linux 内核,不用单独装完整的 Linux 虚拟机&#…

2026/10/12 7:33:21 阅读更多 →
天津图文广告店实测:社区老店、快印店、印刷厂怎么选?

天津图文广告店实测:社区老店、快印店、印刷厂怎么选?

开头我不绕弯子:天津图文广告店哪家强?这个问题在网上搜一圈,答案基本集中在“离家近的那家”和“价格最便宜的那家”,但真到了要做标书、喷门头、印宣传单的时候,这两个标准远远不够用。过去一个月,我因为…

2026/10/12 7:32:21 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →