当前位置: 首页 > 知识库问答 >
问题:

为什么在这个Kubernetes部署中会出现ErrImagePull错误?

倪子晋
2023-03-14

我正在尝试使用Minikube、Docker注册表和演示节点项目创建本地库伯内特斯部署

我做的第一件事是安装Docker v1.12.3,然后是Minikube v0.12.2。

然后,我通过运行这个命令创建了一个Docker注册表容器(通过本教程,只运行下面的第一个命令)

docker run -d -p 5000:5000 --name registry registry:2

接下来,我运行这个minikube命令来创建本地kubernetes集群:

minikube start --vm-driver="virtualbox" --insecure-registry="0.0.0.0:5000"

我的项目结构如下所示:

.
├── Dockerfile
└── server.js

我的Dockerfile如下所示:

FROM node:7.1.0
EXPOSE 8080
COPY server.js .
CMD node server.js

然后,我构建了自己的docker映像并将其推送到我的私人存储库:

docker build -t hello-node .
docker tag hello-node localhost:5000/hello-node
docker push localhost:5000/hello-node

然后,我尝试使用以下命令运行部署:

kubectl run hello-node --image=localhost:5000/hello-node --port=8888

但是后来我得到了这个:

sudo kubectl get pods --all-namespaces                                                                                                                             
NAMESPACE     NAME                          READY     STATUS         RESTARTS   AGE
default       hello-node-3745105022-gzs5a   0/1       ErrImagePull   0          11m
kube-system   kube-addon-manager-minikube   1/1       Running        4          10d
kube-system   kube-dns-v20-2x64k            3/3       Running        12         10d
kube-system   kubernetes-dashboard-mjpjv    1/1       Running        4          10d

我想我可能错过了某种docker注册表验证,但在谷歌上搜索时,我找不到我能理解的东西。谁能给我指一下正确的方向吗?

编辑

使用ssh访问kubernetes VM上的bash,并使用以下命令从我的私有注册表中提取hello节点映像后:

minikube ssh
Boot2Docker version 1.11.1, build master : 901340f - Fri Jul  1 
22:52:19 UTC 2016
Docker version 1.11.1, build 5604cbe
docker@minikube:~$ sudo docker pull localhost:5000/hello-node
Using default tag: latest
Pulling repository localhost:5000/hello-node
Error while pulling image: Get http://localhost:5000/v1/repositories/hello-node/images: dial tcp 127.0.0.1:5000: getsockopt: connection refused

本地主机:5000是在kubernetes主机VM中使用的正确地址吗?

共有2个答案

松霖
2023-03-14

Docker Desktop也有同样的问题

正如我从kubectl Description pod mypd了解到的那样,kubectl试图提取映像,当然这个映像不存在于远程服务器上,因此出现了故障。

上述属性将避免连接到注册表,并将使用docker本地图像缓存中的图像。

spec:
  template:
    spec:
      containers:
        - image: my/local-image
          imagePullPolicy: Never
管峻
2023-03-14

看起来您正在主机上运行注册表。事实上,您需要在VM内运行注册表。您可以首先在shell中运行此命令,将docker客户端指向minikube VM中的docker守护程序。

然后,您可以在主机上运行docker build命令,但它将在VM内部生成。

事实上,如果您的目标是简单地运行映像的本地版本,您应该运行val$(mini kube docker-env)指向VM中的docker守护进程,并在您的pod YAML中设置ImagePullPolicy: IfNotPresent。然后,如果可用,kubernetes将使用本地构建的映像。

 类似资料:
  • 问题内容: 我正在尝试使用Minikube,Docker Registry和演示节点项目创建本地Kubernetes部署。 我做的第一件事是安装Docker v1.12.3,然后是Minikube v0.12.2。 然后我通过运行此命令创建了一个Docker Registry容器(通过本教程,仅运行下面的第一个命令) 接下来,我运行此minikube命令以创建本地kubernetes集群: 我的项

  • 当我试图从netbean部署我的web应用程序时,我得到以下错误: 那是什么?为什么我会犯这个错误? 以下是来自的代码片段: 以下是netbeans服务器设置中的快照:

  • 为什么会引发主线程上的网络异常?its在异步任务上 } 编辑: 完整代码: logcat:

  • 我正在尝试用Java制作一个与OpenGL(使用LWJGL 2)的窗口。当我尝试运行时,Eclipse BuiltInclassLoader出现了ClassNotFoundException错误。 我期望输出显示一个窗口,这是真正的输出: 线程“main”java.lang.noClassDeffounder中的异常错误:org/lwjgl/lwjglexception在enginetester.

  • 假设我们有以下三个类: 这将产生以下错误: 既然是整数,为什么它不选择类型?

  • 错误:第 1 行的解析错误:函数搜索(sour ^ 期望“字符串”、“数字”、“空”、“真”、“假”、“{”、“[”,得到“未定义” 代码: