You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenShift3.11构建Pod推送镜像到内部registry报i/o超时如何解决

OpenShift 3.11 构建Pod推送镜像到内部Registry超时问题排查与修复方案

排查步骤

  • 第一步:验证DNS解析是否正常
    进入异常构建Pod的终端,执行nslookup docker-registry.default.svc,确认可以正确解析到Registry服务的ClusterIP,排除集群DNS配置故障。
  • 第二步:校验Registry服务端点状态
    在集群CLI执行oc get endpoints docker-registry -n default,检查输出的端点IP是否和正在运行的Registry Pod IP一致,排除端点未注册导致的流量黑洞。
  • 第三步:排查网络策略限制
    执行oc get networkpolicy -A,检查是否存在网络策略禁止了构建Pod所在命名空间访问default命名空间的5000端口,或者default命名空间限制了Registry的入口流量。
  • 第四步:检查节点网络配置与Azure NSG规则
    1. 登录构建Pod所在的Azure虚拟机,执行sysctl net.ipv4.ip_forward,确认返回值为1,OpenShift集群要求所有节点开启IP转发,否则跨节点Pod通信会被丢弃。
    2. 检查Azure VM关联的网络安全组(NSG),确认集群内网网段的5000端口入站、出站规则已放行,无端口拦截。
  • 第五步:确认kube-proxy服务状态
    在构建Pod所在节点执行systemctl status kube-proxy,确认服务运行正常无报错,kube-proxy负责Service ClusterIP到后端Pod的流量转发,异常会导致访问超时。
  • 第六步:排查OVS流表规则(使用OVS网络插件时)
    执行ovs-ofctl dump-flows br0 | grep 5000,检查是否存在丢弃Registry端口流量的流表规则。

修复方案

  • DNS解析异常:重启集群CoreDNS/SkyDNS Pod,修正节点/etc/resolv.conf配置,确保指向集群DNS的ClusterIP。
  • 网络策略拦截:在default命名空间添加允许所有命名空间访问Registry 5000端口的网络策略,配置示例如下:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-all-registry-access
  namespace: default
spec:
  podSelector:
    matchLabels:
      docker-registry: default
  ingress:
  - from:
    - namespaceSelector: {}
    ports:
    - port: 5000

配置完成后执行oc apply -f <文件名>生效。

  • IP转发未开启:在节点执行sysctl -w net.ipv4.ip_forward=1,同时将net.ipv4.ip_forward = 1写入/etc/sysctl.conf实现永久生效;同步在Azure VM的网络配置页面开启IP转发选项。
  • NSG拦截:在Azure NSG中添加入站规则,允许源地址为集群VPC内网段、目标端口5000的TCP流量通行。
  • kube-proxy异常:执行systemctl restart kube-proxy重启服务,如有配置错误修正kube-proxy配置文件后再重启。
  • 端点异常:执行oc delete pod -l docker-registry=default -n default重启Registry Pod,触发服务端点重新注册。

内容的提问来源于stack exchange,提问作者Sanidhya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 20:45:05