OpenShift 节点未连接到映像注册表

OpenShift 节点未连接到映像注册表

我配置了 openshift,在启动 docker-register 的主机上一切正常。当我添加新节点并尝试在其上部署容器时,日志中出现以下错误:

E0519 10:51:38.574152    2135 pod_workers.go:138] Error syncing pod 083b958e-1dc0-11e6-8ca2-525400c36a07, skipping: failed to "StartContainer" for "testapp4" with ImagePullBackOff: "Back-off pulling image \"172.30.236.174:5000/test/testapp4@sha256:64c3dc4cb983986a1dd5a7979f03f449b089f4baaf979b67363a92aac43e49cd\""

E0519 11:00:09.099712    2098 pod_workers.go:138] Error syncing pod 5d3c48a1-1dd2-11e6-a164-525400c36a07, skipping: failed to "StartContainer" for "testapp4" with ErrImagePull: "API error (500): Get http://172.30.236.174:5000/v2/: dial tcp 172.30.236.174:5000: getsockopt: no route to host\n"

我猜问题在于新节点无法“看到”部署在其他节点上的 docker-registry 地址 172.30.236.174。我应该对新节点做更多的事情吗(我刚刚使用节点配置启动了 openshift)?

答案1

172.30.0.0/16OpenShift 使用它来为 Kubernetes 服务分配虚拟 IP 地址。docker 注册表通过服务提供,并且显然已绑定172.30.236.174到您的集群中。服务地址通常不可路由 - 相反,它kube-proxy会拦截发往该 IP 地址的出站流量,并将其重定向(请参阅虚拟 IP 和服务代理)。

与虚拟 IP 地址相关的错误消息“没有到主机的路由”表示kube-proxy在新节点上不起作用。您应该能够找到正在运行的进程,并且应该能够在输出中找到它的规则iptables -L

相关内容