无法将图像推送到 OpenShift 内部注册表 i/o 超时

Unable to push image to OpenShift internal registry with i/o timeout

Pushing image docker-registry.default.svc:5000/th/th:source ...
Warning: Push failed, retrying in 5s ...
Warning: Push failed, retrying in 5s ...
Warning: Push failed, retrying in 5s ...
Warning: Push failed, retrying in 5s ...
Warning: Push failed, retrying in 5s ...
Warning: Push failed, retrying in 5s ...
Warning: Push failed, retrying in 5s ...
Registry server Address: 
Registry server User Name: serviceaccount
Registry server Email: serviceaccount@example.org
Registry server Password: <<non-empty>>
error: build error: Failed to push image: After retrying 6 times, Push image still failed due to error: Get https://docker-registry.default.svc:5000/v1/_ping:  dial TCP<ip>:5000: i/o timeout

手动将映像从 CLI 推送到内部注册表工作正常。

我已经在几个 Azure 虚拟机上部署了 OpenShift 实例 3.11,在部署时我负责将外部 IP 添加到相同的虚拟机。

所有其他图像也存在于 docker 注册表和 docker 注册表 returns 的 curl 命令,退出代码为 0

奇怪的是,在部署我的应用程序时,我尝试从构建 pods 终端对注册表执行 ping 操作。这导致连接被挂断,没有任何反应。

关于如何解决这个问题有什么想法吗?

sdn 导致了这个网络问题。

Does Azure support Calico networking?

Calico in VXLAN mode is supported on Azure. However, IPIP packets are blocked by the Azure network fabric.

以上引自calico reference was the reason this issue was caused. This could be resolved by changing to VXLAN mode in calico config. More details on how to switch can be found here.

对于我的解决方案,我只是在清单文件中从 calico 切换到默认的 openshift sdn 'ovs-subnet'。