簡體   English   中英

kubectl 運行 mypod --image=myimage - ErrImagePull

[英]kubectl run mypod --image=myimage - ErrImagePull

我正在嘗試在 Kube.netes 上運行一些 docker 圖像。

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

docker集裝箱

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。

當 Kube.netes 集群創建新部署或更新現有部署時,它需要拉取鏡像。 這是通過每個用戶節點上的 kubelet 進程完成的。 為了讓 kubelet 成功拉取這個鏡像,它們必須可以從集群中與調度請求匹配的所有節點訪問。

編輯 pod 規范並提供正確的注冊表

如果將鏡像拉取策略設置為從不:kubelet 不會嘗試獲取鏡像。 如果圖像以某種方式已經存在於本地(在 Kube.netes 的本地注冊表中),則 kubelet 會嘗試啟動容器; 否則啟動失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM