服务器K8s集群Nexus排错:Pod启动失败与连接超时处理

在K8s集群里跑Nexus仓库,最常见的问题集中在三处:Pod反复重启、Service访问超时、Nexus自身返回502或存储写入失败。
排查顺序建议从Pod状态入手,再查Service和Ingress,最后看Nexus应用日志和存储权限。
下面按零基础也能照做的步骤展开。

先确认Pod到底卡在哪一步

登录到能执行kubectl的跳板机或Master节点,先看Nexus所在命名空间的Pod状态:

kubectl get pods -n nexus -o wide

重点关注STATUS列,常见取值对应不同方向:

  • CrashLoopBackOff:容器启动后立即退出,多半是配置错误、内存不足或数据目录权限不对。
  • Pending:调度失败,通常是节点资源不够、PVC未绑定或节点选择器不匹配。
  • Running但READY为0/1:容器在跑但探针没过,检查livenessProbe和readinessProbe的路径与端口。
  • ImagePullBackOff:拉不到镜像,检查镜像地址、私有仓库Secret和网络策略。

确认状态后,直接看事件和日志:

kubectl describe pod  -n nexus
kubectl logs  -n nexus --tail=100

describe输出末尾的Events区域会直接告诉你失败原因,比如FailedMount、Back-off pulling image或OOMKilled。
这一步能省掉大量猜测。

存储与权限:Nexus数据目录写不进去

Nexus默认以非root用户运行,如果PVC挂载后的目录属主不是200(Nexus镜像内UID),容器会因无法写/nexus-data而退出。
检查PVC绑定状态:

kubectl get pvc -n nexus

如果状态是Pending,说明没有匹配的PV或StorageClass不可用。
若已Bound,进入Pod确认挂载点权限:

kubectl exec -it  -n nexus -- ls -ld /nexus-data

预期应看到目录属主为200:200或具备写权限。
如果不对,在宿主机或通过initContainer调整权限:

chown -R 200:200 /data/nexus

注意:生产环境不要直接对已挂载的PVC执行递归chown,先确认没有其他Pod在用同一卷,避免影响正在写入的数据。

Service和Ingress访问不通怎么查

Pod正常后,先验证集群内Service是否可达。
进入任意一个同命名空间的Pod执行:

kubectl exec -it <任意pod> -n nexus -- curl -I http://nexus-service:8081

如果返回Connection refused,检查Service的targetPort是否和Nexus容器实际监听端口一致。
Nexus默认HTTP端口是8081,HTTPS是8443,很多YAML模板会写错。

kubectl get svc nexus-service -n nexus -o yaml

核对port和targetPort。
如果集群内能通但外部访问超时,再看Ingress或NodePort:

kubectl describe ingress  -n nexus
kubectl get endpoints -n nexus

Endpoints为空说明Service没有选中任何Pod,通常是selector标签与Pod的labels不匹配。
这是新手最容易忽略的一步。

资源不足与探针误判

Nexus启动较吃内存,默认resources.limits.memory如果设得过低,容器会被OOMKilled。
查看是否发生过内存杀进程:

kubectl describe pod  -n nexus | grep -A5 "Last State"

若看到Reason: OOMKilled,适当调高内存限制,比如从1Gi调到2Gi,并确认节点有足够可分配资源:

kubectl describe node  | grep -A10 "Allocated resources"

另外,Nexus首次启动初始化较慢,如果livenessProbe的initialDelaySeconds太短,容器会在初始化完成前被反复重启。
建议将initialDelaySeconds设为120以上,failureThreshold设为3到5,给足启动时间。

常见疑问

Nexus Pod一直CrashLoopBackOff,最先看什么?
先执行kubectl logs看应用日志最后几行,再执行kubectl describe pod看Events。多数情况是数据目录权限或内存限制导致,按上文存储和资源两节排查即可。

Service能ping通但curl超时?
ping用的是ICMP,Service是四层转发,两者机制不同。直接用curl -v或wget测试目标端口,同时检查NetworkPolicy是否拦截了流量。

Ingress返回502但Pod正常?
检查Ingress的serviceName和servicePort是否与实际Service一致,再看Ingress Controller日志是否有连接后端超时的记录。

排错的核心思路是分层验证:Pod状态和事件、存储挂载、Service端点、Ingress转发、应用日志。
每层确认无误后再进入下一层,不要一上来就改配置。
修复后重新执行kubectl get pods和curl验证,确认Pod稳定运行且接口有正常响应,再继续后续使用。

分享到:
上一篇
服务器K8s集群SonarQube排错:Pod启动失败与Web无法访问排查
下一篇
K8s 集群里 Maven 构建失败怎么排查
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意