【问题标题】:"kubectl get pods" showing STATUS - ImagePullbackOff“kubectl get pods”显示状态 - ImagePullbackOff
【发布时间】:2018-07-04 01:52:57
【问题描述】:

我在我的机器上设置了一个自托管注册表来存储 docker 映像文件,以便使用 minikube(用于本地开发的轻量级 Kubernetes 实现)对其进行彻底测试。

虽然我能够使用 docker pushdocker pull 命令成功地从本地注册表推送和拉取存储库,但是在尝试在本地运行 pod 时,面临以下问题:

错误

Failed to pull image "localhost:5000/dev/customer:v1": rpc error: code = Unknown desc
= Error response from daemon: Get http://localhost:5000/v2/: dial tcp 127.0.0.1:5000: getsockopt: connection refused

这是我在检查 pod 时注意到的事件列表。

Pod 事件

Type     Reason                 Age                From               Message

----     ------                 ----               ----               -------

Normal   Scheduled              16m                default-scheduler  Successfully assigned custappdeployment-6c8ddcc5d8-2zdfn to minikube

Normal   SuccessfulMountVolume  16m                kubelet, minikube  MountVolume.SetUp succeeded for volume "default-token-s5nlw"

Normal   BackOff                16m (x2 over 16m)  kubelet, minikube  Back-off pulling image "localhost:5000/dev/customer:v1"

Warning  Failed                 16m (x2 over 16m)  kubelet, minikube  Error: ImagePullBackOff

Normal   Pulling                15m (x3 over 16m)  kubelet, minikube  pulling image "localhost:5000/dev/customer:v1"

Warning  Failed                 15m (x3 over 16m)  kubelet, minikube  Failed to pull image "localhost:5000/dev/customer:v1": rpc error: code = Unknown desc
= Error response from daemon: Get http://localhost:5000/v2/: dial tcp 127.0.0.1:5000: getsockopt: connection refused

Warning  Failed                 15m (x3 over 16m)  kubelet, minikube  **Error: ErrImagePull**

Please see below the docker pull command output. 

PS C:\Sunny\Projects\NodeApps\Nodejs-Apps\Customer> docker pull localhost:5000/dev/customer:v1

v1: Pulling from dev/customer
Digest: sha256:edf0b716728b1cc00f7d8eed76fb3bdceadf1a60a46b9e4f80d983a64389e95c
Status: Image is up to date for localhost:5000/dev/customer:v1

【问题讨论】:

    标签: docker kubernetes docker-registry minikube


    【解决方案1】:

    好吧,从minikube 的观点来看,我不希望您的 localhostlocalhost 相同。实际上,从 kubernetes 世界的角度来看,我不希望您的 localhost 与 anything 中的 localhost 相同。

    所以,你需要检查一些实际的事情:

    • 5000 端口是否可以从非您的机器访问(这意味着 minikube 虚拟机可以合理地从您机器上的 5000 端口拉取)

      这个问题可能与下面的问题有一些交集,因为您的注册表很可能正在侦听其中一个内部适配器,但这不是您的机器所知道的,或者相反

    • minikube 可以解析您的机器显示的主机名(因为我实际上不认为您可以在 docker 映像参考中使用 IP 地址);显然,如果这个假设不正确,那么无需担心这部分

    • 并确保 docker 不信任您的注册中心的 CA,或者您已经将证书加载到 minikube 并退回了 docker

    您总是可以作弊,因为 minikube 是一个虚拟机(而不是一整套节点),而 docker save $the_image_ref | minikube ssh docker load 将完全避开拉动(除非您有 imagePullPolicy: Always,但这很容易解决)。

    【讨论】:

      【解决方案2】:

      如果您使用私有 docker 注册表,请将注册表绑定到 0.0.0.0,以便其他服务器可以访问它。 此外,如果它的注册表不安全,请将此 URL 添加到 docker daemon 不安全注册表列表。

      【讨论】:

        【解决方案3】:

        我使用以下步骤来解决此问题..

        1. 仔细检查标签名称,确保它们一致

        2. 在本地构建镜像,确保标记它

        3. 将图像推送到 docker hub

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-10-06
          • 1970-01-01
          • 1970-01-01
          • 2021-11-05
          • 2020-09-15
          • 1970-01-01
          • 2020-10-07
          • 2019-04-02
          相关资源
          最近更新 更多