Kubernetes 无法 运行 在本地构建 docker 图像

Kubernetes fails to run a docker image build locally

我正在尝试 运行 我使用 Kubernetes 在本地构建的 docker 图像。

这是我的命令行:

kubectl run myImage --image=myImage --port 3030 --image-pull-policy=IfNotPresent

我看到很多人说我们需要添加 --image-pull-policy=IfNotPresent 标志以便 Kubernetes 可以在本地而不是 Docker Hub 查找图像,但我仍然收到此错误(来自 Minikube pod 上的仪表板、服务和部署)。

Failed to pull image "myImage": rpc error: code = Unknown desc = Error response from daemon: pull access denied for myImage, repository does not exist or may require 'docker login'

不过好像还有问题,我也试了--image-pull-policy=Never也没用

有什么想法吗?

imageminikube 中不可用。

Minikube 使用单独的 docker daemon。这就是为什么即使图像存在于您的机器中,它仍然在 minikube 中丢失。

首先,通过

将图像发送到minikube
docker save myImage | (eval $(minikube docker-env) && docker load)

此命令会将图像保存为 tar 存档,然后自行将图像加载到 minikube 中。

接下来,在您的部署中使用映像,并将 image-pull-policy 设置为 IfNotPresent

kubectl run myImage --image=myImage --port 3030 --image-pull-policy=IfNotPresent

您在 docker 中创建的图像在 Minikube 中将不可用,因为 Minikube 有它自己的 docker 守护进程,它会在那里检查 docker 图像并且 Docker中心

按照以下步骤访问 Minikube Docker 守护进程,构建并部署 docker 映像:

  1. 使用 minikube docker-env command 输出将本地 Docker 守护程序指向 minikube 内部 Docker 注册表所需的环境变量。

minikube docker-env export DOCKER_TLS_VERIFY=”1" export DOCKER_HOST=”tcp://172.17.0.2:2376" export DOCKER_CERT_PATH=”/home/user/.minikube/certs” export MINIKUBE_ACTIVE_DOCKERD=”minikube”

#将你的 shell 指向 minikube 的 docker-daemon, # 运行: eval $(minikube -p minikube docker-env)

  1. 要应用这些变量,

    eval $(minikube -p minikube docker-env)

  2. 现在需要再次构建镜像,以便将其安装在 minikube 注册表中,而不是本地注册表中:

    docker build . -t forketyfork/hello-world

forketyfork/hello-world 是 docker 图片的名称。

  1. 通过 yaml 将镜像部署到 kubernetes 或 Minkube configuartion file.

    kubectl create -f helloworld.yml

helloworld.yml 是 yml/yaml 文件的名称。

  1. 现在kubectl get pods获取pods
  2. 的状态

进一步参考,https://medium.com/swlh/how-to-run-locally-built-docker-images-in-kubernetes-b28fbc32cc1d