Kubernetes & Jenkins:从 HTTP 502 到完美部署的蜕变之路
引言
在 K8s 和 Jenkins 搭配使用时,尽管我们经历了许多高效与自动化带来的好处,但路上也不乏坑洼。作为一个刚接触 Kubernetes 和 Jenkins 的开发者,我的求职之路仿佛走在“坎坷”的路上,每当我走得有些得意时,总会踩到一个坑。但正是这些坑,让我成长了很多——不止是作为开发者,也作为一名“坑中求生”的勇士。
今天,本文将分享我的经历,如何在 Kubernetes 和 Jenkins 部署过程中,越过那些让人挠头的难题,并最终将 Jenkins 服务成功部署上线。希望我的经验可以为你们扫清障碍,少走弯路。
- HTTP 502 错误:为何我成了“坏网关”的受害者?
背景
在我将 Jenkins 部署到 Kubernetes 上并暴露为 NodePort 后,我兴奋地通过 IP 地址访问 Jenkins 时,却看到了一个令人沮丧的 HTTP 502 错误。屏幕上写着:“目前无法处理此请求”。我心想:“不可能吧,我刚刚还看到服务运行正常,怎么就这样了呢?”
踩坑的原因
当我开始排查问题时,首先发现 Jenkins Pod 显示为 Pending 状态。这意味着 Jenkins 并没有顺利启动。通过 kubectl describe pod 我发现,问题的根源是缺少 PersistentVolume(持久化存储)。也就是说,Kubernetes 没有找到对应的持久存储来挂载 Jenkins 的数据卷(jenkins-data)。
解决方案
首先,我检查了 PersistentVolumeClaim(PVC)和 PersistentVolume(PV)。原来,在创建 Jenkins 服务时,PVC 被成功绑定了 PV,但 Kubernetes 没有成功创建所需的存储。解决方法是确保 PVC 与 PV 的配置匹配,且 Kubernetes 集群能成功访问到挂载的存储。
执行以下命令,查看是否所有的 PVC 和 PV 状态正常:
kubectl


4033

被折叠的 条评论
为什么被折叠?



