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

kubernetes使用docker本地映像创建部署-映像拉取失败

甄鹏云
2023-03-14

我尝试使用minikube从本地docker镜像和docker hub部署kubernetes。但两者都不起作用。

方法1:使用保存和加载tar文件,创建了图像,它可用于kubectl。

root@arun-desktop-e470:/var/local/dprojects/elasticsearch# kubectl get pods --all-namespaces -o jsonpath="{..image}" |tr -s '[[:space:]]' '\n' |sort |uniq -c|grep elk
      2 elk/elasticsearch:latest

执行以下命令以创建部署:

kubectl run elastic --image=elk/elasticsearch:latest --port=9200
kubectl expose deployment elastic --target-port=9200 --type=NodePort
minikube service elastic --url

从kubectl描述pod命令,

  Warning  Failed     122m (x4 over 124m)   kubelet, minikube  Failed to pull image "elk/elasticsearch:latest": rpc error: code = Unknown desc = Error response from daemon: pull access denied for elk/elasticsearch, repository does not exist or may require 'docker login'

方法2:我将映像推送到我的docker hub存储库(https://hub.docker.com/r/get2arun/elk/tags),然后在终端中登录docker hub并再次创建部署。

推送到docker hub,如下所示,因此我有权将图像推送和拉取到我的docker hub帐户。我已经检查了管理存储库下的“合作者”,它有我的docker hub ID。

root@arun-desktop-e470:~# docker push get2arun/elk:elasticsearch_v1
The push refers to repository [docker.io/get2arun/elk]
19b7091eba36: Layer already exists 
237c06a69e1c: Layer already exists 
c84fa0f11212: Layer already exists 
6ca6c301e2ab: Layer already exists 
76dd25653d9b: Layer already exists 
602956e7a499: Layer already exists 
bde76be259f3: Layer already exists 
2333287a7524: Layer already exists 
d108ac3bd6ab: Layer already exists 
elasticsearch_v1: digest: sha256:6f0b981b5dedfbe3f8e0291dc17fc09d32739ec3e0dab6195190ab0cc3071821 size: 2214

kubectl运行elasticsearch-v2--image=get2arun/elk:elasticsearch_v1--port=9200

来自kubectl描述pods命令:

  Normal   BackOff    21s               kubelet, minikube  Back-off pulling image "get2arun/elk:elasticsearch_v1"
  Warning  Failed     21s               kubelet, minikube  Error: ImagePullBackOff
  Normal   Pulling    7s (x2 over 24s)  kubelet, minikube  Pulling image "get2arun/elk:elasticsearch_v1"
  Warning  Failed     4s (x2 over 21s)  kubelet, minikube  Failed to pull image "get2arun/elk:elasticsearch_v1": rpc error: code = Unknown desc = Error response from daemon: pull access denied for get2arun/elk, repository does not exist or may require 'docker login'

我删除了代理设置并尝试从打开的wifi帐户,但仍然看到权限被拒绝。

此错误消息不足以确定问题,希望有一些方法来缩小此类问题的范围。

  1. 当Kubernetes被要求使用本地docker镜像或从docker hub提取镜像时,后台会发生什么
  2. 启动部署时如何获取所有日志信息
  3. 日志的其他来源是什么

共有1个答案

危阳
2023-03-14

在方法1中,由于图像没有被推送到存储库,所以您必须使用imagePullPolicy。

imagePullPolicy: Never
imagePullPolicy: IfNotPresent

我认为如果您想使用本地图像/存储库,IfNotPresent是理想的选择。根据您的要求使用。

kubectl run elastic --image=elk/elasticsearch:latest --port=9200 --image-pull-policy IfNotPresent
 类似资料:
  • 我在我的回购中有docker图像,Akshay123007/lists-pods。我已经创建了舵手图图像: 当我安装图表时,我得到的错误为:未能拉出映像“AKSHAY123007/lists-pods:1.16.0”:rpc error:code=Unknown desc=来自守护进程的错误响应:manifest for AKSHAY123007/lists-pods:1.16.0 not fou

  • 我在Linode上有一个K8s集群和另一个用于操作的VM。 我已经安装了Docker 注意:我还没有在这个虚拟机上安装迷你库贝。 我可以构建我的映像,但无法将其从本地注册表拉到k8s pod。 以下是我已经做过的事情 创建docker镜像并将其推送到本地注册表 从图像中运行docker容器,但不会在K8s中被拉入 创建“regcred”secret并在部署yaml中使用它 创建映像并使用VM的IP

  • 我有慢的互联网连接,但我已经有我需要的docker映像。: 或使用通用的: 但结果是错误的: 如何优化testcontainers以使用本地映像?

  • 我正试图用集装箱装一个样品。docker内的js应用程序。 我的docker文件如下,我在项目的工作目录中 我可以成功创建图像 无论如何,当我想运行应用程序时,它并不是一个正在运行的docker镜像 我不知道我哪里做错了? [PS:]根据评论,我已将CMD更改为 但是我不能构建镜像

  • 问题内容: 我们可以使用没有源映像(OS)的docker文件创建docker映像吗 我们不希望在所有应用程序docker映像中使用基本映像(centos或rhel)。我们想要将基本映像(centos或rhel)与应用程序映像分开,并在运行时将它们链接起来。可能吗? 当我 不使用 或构建docker映像时,docker抱怨:“提交前提供源映像” 我的docker文件如下所示: 问题答案: 您说过:“

  • 我试图使用Fabric8 Maven插件部署示例项目。https://github.com/jbossdemocentral/katacoda-fuse-getting-started.git 我在远程机器中有一个启动并运行的Openshift环境,我正在使用“oc登录…”连接到它 本地开发机器设置:有docker,maven。已安装oc。 当我从命令提示符下运行示例项目“mvn fabric8: