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

Ubuntu部署OpenShift v3后Pod无法通过服务名解析服务求助

OpenShift v3 自建集群Pod无法解析服务名常见配置遗漏排查
  • 检查集群DNS组件运行状态
    OpenShift v3的内置DNS服务默认是dnsmasq或者skydns(不同小版本存在差异),先检查kube-system命名空间下的DNS Pod是否正常运行:
    oc get pods -n kube-system | grep dns
    
    如果Pod处于CrashLoopBackOff、Pending等异常状态,优先排查Pod的事件日志和启动日志,修复DNS组件本身的运行问题。
  • 检查kubelet的DNS配置参数
    自建OpenShift时最容易遗漏kubelet启动参数的DNS配置,需要确认每个节点的kubelet启动参数中,是否正确配置了集群DNS的ClusterIP以及集群域名(默认值为cluster.local):
    查看kubelet启动配置文件(通常路径为/etc/origin/node/node-config.yaml或者/etc/kubernetes/kubelet.conf)中是否存在如下配置:
    kubeletArguments:
      cluster-dns:
        - 集群DNS服务实际ClusterIP # 默认部署的DNS服务ClusterIP通常为172.30.0.10
      cluster-domain:
        - cluster.local
    
    配置修改后需要重启kubelet服务生效,执行命令:systemctl restart origin-node(对应不同部署版本也可能是kubelet服务)。
  • 检查异常Pod的resolv.conf配置是否正确
    进入无法解析服务名的Pod中查看DNS配置:
    oc exec -it <异常Pod名称> -- cat /etc/resolv.conf
    
    正常配置的nameserver应该指向集群DNS的ClusterIP,search域包含<当前命名空间>.svc.cluster.local、svc.cluster.local等后缀,如果配置为空或者指向错误地址,说明kubelet的DNS参数没有正常生效。
  • 检查集群网络策略是否拦截DNS请求
    如果你启用了集群网络策略,需要确认对应命名空间下的网络策略没有拦截53端口的UDP/TCP DNS请求,默认集群规则应该允许所有Pod访问DNS服务的53端口。
  • 检查DNS服务的Endpoint是否正常
    查看DNS服务的Endpoint是否绑定了正常运行的DNS Pod IP:
    oc get endpoints -n kube-system dns
    
    如果Endpoint为空,说明DNS Pod没有被正确关联到服务上,需要检查DNS服务的标签选择器是否和DNS Pod的标签匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 03:45:03