[英]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.