kubectl run mypod --image=myimage - ErrImagePull



我正在尝试在Kubernetes上运行一些docker映像。

码头工人图像

master* $ docker images                                              [15:16:49]                                                                                
REPOSITORY                    TAG           IMAGE ID       CREATED             SIZE
usm                           latest        4dd5245393bf   About an hour ago   158MB
kuard                         latest        497961f486c7   4 days ago          22.9MB

集装箱码头工人

master* $ docker ps                                                  [15:21:40]
CONTAINER ID   IMAGE                                 COMMAND                  CREATED             STATUS             PORTS                                                                                                                                  NAMES
a46850d28303   usm                                   "/docker-entrypoint.…"   About an hour ago   Up About an hour   0.0.0.0:6061->80/tcp, :::6061->80/tcp                                                                                                  usm
88471e086486   gcr.io/k8s-minikube/kicbase:v0.0.32   "/usr/local/bin/entr…"   2 days ago          Up 2 hours         127.0.0.1:49157->22/tcp, 127.0.0.1:49156->2376/tcp, 127.0.0.1:49155->5000/tcp, 127.0.0.1:49154->8443/tcp, 127.0.0.1:49153->32443/tcp   minikube

Dockerfile

FROM nginx
COPY ./dist /usr/share/nginx/html
EXPOSE 80

kube版本

master* $ minikube version                                           [15:37:13]
minikube version: v1.26.0
commit: f4b412861bb746be73053c9f6d2895f12cf78565

当我运行kubectl run mypod --image=usm时,我得到ErrImagePull

如何使用本地docker映像运行pod ?

master* $ kubectl run mypod --image=usm
pod/mypod created
master* $ kubectl get pods                                           [15:07:49]
NAME    READY   STATUS         RESTARTS   AGE
mypod   0/1     ErrImagePull   0          6s

我试图将imagePullPolicy设置为never

apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- image: usm
imagePullPolicy: Never
name: mypod
ports:
- containerPort: 80
name: http
protocol: TCP
master* $ kubectl apply -f kube-pod-usm.yaml                         [15:55:39]
pod/mypod created
master* $ kubectl get pods                                           [15:55:54]
NAME    READY   STATUS              RESTARTS   AGE
mypod   0/1     ErrImageNeverPull   0          42s

您需要该图像在某个地方可用。通常这是通过注册表完成的,但是对于本地开发,您可以使用以下命令将本地映像上传到minikukbe集群:

minikube image load image:tag

你可能还想检查minikube docker-env,它允许你的终端docker-cli以一种简单的方式指向minikube中的docker。

当Kubernetes集群创建新部署或更新现有部署时,它需要拉取映像。这是通过每个用户节点上的kubelet进程完成的。为了让kubelet成功地提取这个映像,它们必须可以从集群中匹配调度请求的所有节点访问。

编辑pod规范并提供正确的注册表

如果您将图像拉取策略设置为Never:kubelet不会尝试获取图像。如果映像以某种方式已经在本地存在(在Kubernetes的本地注册表中),kubelet会尝试启动容器;

相关内容

  • 没有找到相关文章

最新更新