当前位置: 首页 > 面试题库 >

为什么在此Kubernetes部署中出现ErrImagePull错误?

空枫涟
2023-03-14
问题内容

我正在尝试使用Minikube,Docker Registry和演示节点项目创建本地Kubernetes部署。

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

然后我通过运行此命令创建了一个Docker
Registry容器(通过本教程,仅运行下面的第一个命令)

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访问bashkubernetes VM并hello-node使用以下命令从我的私有注册表中提取映像后:

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

localhost:5000的kubernetes主机VM内使用正确的地址?


问题答案:

看来您正在主机上运行注册表。实际上,您需要在VM内运行注册表。您可以通过首先eval $(minikube docker-env)
在shell中运行此命令,将docker客户端指向minikube VM中的docker守护进程 。

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

实际上,如果您的目标是仅运行映像的本地版本,则应运行eval $(minikube docker- env)以指向VM中的docker守护程序,并imagePullPolicy: IfNotPresent在pod
YAML中设置。然后,kubernetes将使用本地构建的映像(如果可用)。



 类似资料:
  • 我正在尝试使用Minikube、Docker注册表和演示节点项目创建本地库伯内特斯部署。 我做的第一件事是安装Docker v1.12.3,然后是Minikube v0.12.2。 然后,我通过运行这个命令创建了一个Docker注册表容器(通过本教程,只运行下面的第一个命令) 接下来,我运行这个minikube命令来创建本地kubernetes集群: 我的项目结构如下所示: 我的Dockerfil

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

  • 问题内容: 有人知道什么是“不良状态线”吗? 编辑:我尝试了许多服务器,许多URL的,我仍然收到此错误? 问题答案: 从httplib(Python 2) 的文档(在Python 3中 称为http.client)中: 例外 :( 例外 :) 的子类。 在服务器响应我们不理解的HTTP状态代码时引发。 我运行了相同的代码,但未收到错误: 我想只是仔细检查所有内容,然后重试?

  • 问题内容: 我正在尝试使用DB2运行一个简单的SQL语句,并且遇到了一些问题。我想在txt / db2文件中有一个脚本,并让引擎处理所有命令 这是脚本: 当我运行db2 -f / pathtofile时,我得到: 我究竟做错了什么?我的脚本有问题吗?另外,为什么没有“;”也能正常工作 我的陈述结尾处的终止符? 谢谢, 问题答案: 可能会有帮助, http://www.uc.edu/R/r25/do

  • 我试图在GlassFish server 4.1.0中部署ADF 12.1.3应用程序,但在部署过程中出现以下错误:将ADF essentials 3.1.2复制到GlassFish中的lib文件夹,ADF应用程序为12.1.3版本,GlassFish版本为4.1.0 部署过程中发生错误:部署应用程序时出现异常[MegatronApplicationOCS_07012015]:org.xml.sa

  • 我是K8s的新手,所以仍然试图让我的头脑周围的事情。我一直在研究部署,并能够理解它们将有多有用。但是,我不明白为什么它们不支持服务(只支持副本集和豆荚)。