【问题标题】:ErrImageNeverPull error in kubernetes of windows docker desktopWindows docker桌面的kubernetes中的ErrImageNeverPull错误
【发布时间】:2022-01-05 04:47:29
【问题描述】:

我有以下在 Windows Docker Desktop 的 Kubernetes 中使用的 YAML 文件。

---
apiVersion: apps/v1
kind: Deployment
metadata:
    name: thoughts-backend
    labels:
        app: thoughts-backend
    namespace: example
spec:
    replicas: 1
    selector:
        matchLabels:
            app: thoughts-backend
    template:
        metadata:
            labels:
                app: thoughts-backend
        spec:
            containers:
                - name: thoughts-backend-service
                  image: thoughts_server:latest
                  imagePullPolicy: Never
                  ports:
                     - containerPort: 8000
                  env:
                      - name: DATABASE_ENGINE
                        value: POSTGRESQL
                      - name: POSTGRES_DB
                        value: thoughts
                      - name: POSTGRES_USER
                        value: postgres
                      - name: POSTGRES_PASSWORD
                        value: somepassword
                      - name: POSTGRES_PORT
                        value: "5432"
                      - name: POSTGRES_HOST
                        value: "127.0.0.1"

                - name: thoughts-backend-db
                  image: thoughts_backend_db:latest
                  imagePullPolicy: Never

---
apiVersion: v1
kind: Service
metadata:
    namespace: example
    labels:
        app: thoughts-service
    name: thoughts-service
spec:
    ports:
        - name: thoughts-backend
          port: 80
          targetPort: 8000
    selector:
        app: thoughts-backend
    type: NodePort
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
    name: thoughts-backend-ingress
    namespace: example
spec:
    rules:
        - host: thoughts.example.local
          http:
            paths:
              - backend:
                  serviceName: thoughts-service
                  servicePort: 80
                path: /

当我运行 kubectl get pods -n example 时,我得到 ErrImageNeverPull 错误。

> kubectl get pods -n example
NAME                                READY   STATUS              RESTARTS   AGE
thoughts-backend-55c686f6f5-dhjj2   0/2     ErrImageNeverPull   0          3h43m
>

下面是 describe 命令的输出。

  > kubectl describe pod thoughts-backend-55c686f6f5-dhjj2  -n example
    Name:         thoughts-backend-55c686f6f5-dhjj2
    Namespace:    example
    Priority:     0
    Node:         docker-desktop/192.168.65.4
    Start Time:   Sat, 27 Nov 2021 16:31:29 +0530
    Labels:       app=thoughts-backend
                  pod-template-hash=55c686f6f5
    Annotations:  <none>
    Status:       Pending
    IP:           10.1.0.23
    IPs:
      IP:           10.1.0.23
    Controlled By:  ReplicaSet/thoughts-backend-55c686f6f5
    Containers:
      thoughts-backend-service:
        Container ID:
        Image:          thoughts_server:latest
        Image ID:
        Port:           8000/TCP
        Host Port:      0/TCP
        State:          Waiting
          Reason:       ErrImageNeverPull
        Ready:          False
        Restart Count:  0
        Environment:
          DATABASE_ENGINE:    POSTGRESQL
          POSTGRES_DB:        thoughts
          POSTGRES_USER:      postgres
          POSTGRES_PASSWORD:  somepassword
          POSTGRES_PORT:      5432
          POSTGRES_HOST:      127.0.0.1
        Mounts:
          /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-tqssf (ro)
      thoughts-backend-db:
        Container ID:
        Image:          thoughts_backend_db:latest
        Image ID:
        Port:           <none>
        Host Port:      <none>
        State:          Waiting
          Reason:       ErrImageNeverPull
        Ready:          False
        Restart Count:  0
        Environment:    <none>
        Mounts:
          /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-tqssf (ro)
    Conditions:
      Type              Status
      Initialized       True
      Ready             False
      ContainersReady   False
      PodScheduled      True
    Volumes:
      kube-api-access-tqssf:
        Type:                    Projected (a volume that contains injected data from multiple sources)
        TokenExpirationSeconds:  3607
        ConfigMapName:           kube-root-ca.crt
        ConfigMapOptional:       <nil>
        DownwardAPI:             true
    QoS Class:                   BestEffort
    Node-Selectors:              <none>
    Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                                 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
    Events:
      Type     Reason             Age                    From     Message
      ----     ------             ----                   ----     -------
      Warning  ErrImageNeverPull  3m4s (x326 over 4h1m)  kubelet  Container image "thoughts_server:latest" is not present with pull policy of Never

Kubernetes 版本是

> kubectl.exe version
Client Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.5", GitCommit:"aea7bbadd2fc0cd689de94a54e5b7b758869d691", GitTreeState:"clean", BuildDate:"2021-09-15T21:10:45Z", GoVersion:"go1.16.8", Compiler:"gc", Platform:"windows/amd64"}
Server Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.5", GitCommit:"aea7bbadd2fc0cd689de94a54e5b7b758869d691", GitTreeState:"clean", BuildDate:"2021-09-15T21:04:16Z", GoVersion:"go1.16.8", Compiler:"gc", Platform:"linux/amd64"}

我不确定这是什么错误以及如何在 Docker-Desktop 中解决此问题?谁能帮我?我在 Windows 上的 Docker 桌面应用程序中运行 Kubernetes。

   "thoughts_server:latest" is not present with pull policy of Never      

此外,添加了 docker 图像的输出以帮助调试。

> docker images
REPOSITORY                                      TAG                                                     IMAGE ID       CREATED         SIZE
k8s.gcr.io/ingress-nginx/controller             <none>                                                  ae1a7201ec95   3 days ago      285MB
httpd                                           latest                                                  ad17c88403e2   8 days ago      143MB
nginx                                           latest                                                  ea335eea17ab   10 days ago     141MB
kubernetesui/dashboard                          v2.4.0                                                  72f07539ffb5   6 weeks ago     221MB
k8s.gcr.io/ingress-nginx/kube-webhook-certgen   <none>                                                  c41e9fcadf5a   6 weeks ago     47.7MB
docker/desktop-kubernetes                       kubernetes-v1.21.5-cni-v0.8.5-critools-v1.17.0-debian   967a1c03eb00   2 months ago    290MB
k8s.gcr.io/kube-apiserver                       v1.21.5                                                 7b2ac941d4c3   2 months ago    126MB
k8s.gcr.io/kube-scheduler                       v1.21.5                                                 8e60ea3644d6   2 months ago    50.8MB
k8s.gcr.io/kube-controller-manager              v1.21.5                                                 184ef4d127b4   2 months ago    120MB
k8s.gcr.io/kube-proxy                           v1.21.5                                                 e08abd2be730   2 months ago    104MB
kubernetesui/metrics-scraper                    v1.0.7                                                  7801cfc6d5c0   5 months ago    34.4MB
docker/desktop-vpnkit-controller                v2.0                                                    8c2c38aa676e   6 months ago    21MB
docker/desktop-storage-provisioner              v2.0                                                    99f89471f470   7 months ago    41.9MB
k8s.gcr.io/pause                                3.4.1                                                   0f8457a4c2ec   10 months ago   683kB
k8s.gcr.io/coredns/coredns                      v1.8.0                                                  296a6d5035e2   13 months ago   42.5MB
k8s.gcr.io/etcd                                 3.4.13-0                                                0369cf4303ff   15 months ago   253MB

此外,添加了 kubernetes get pod -o wide 命令的输出

> kubectl get nodes -o wide
NAME             STATUS   ROLES                  AGE   VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE         KERNEL-VERSION                   CONTAINER-RUNTIME
docker-desktop   Ready    control-plane,master   21h   v1.21.5   192.168.65.4   <none>        Docker Desktop   5.4.72-microsoft-standard-WSL2   docker://20.10.10

【问题讨论】:

  • 这意味着图像没有在本地加载,并且设置说永远不会尝试拉动图像。您可以手动拉取它,也可以更改部署中的设置以允许拉取,无论是始终还是在镜像不存在时
  • 如何在本地查找图片?我是 docker 和 kubernetes 的新手,并尝试从这个链接中学习它并使用给定的清单文件。请帮我。谢谢。 github.com/PacktPublishing/…
  • 我在原始问题部分进一步添加了 docker 图像的输出
  • 投票结束,因为问题的前提是存在不存在的图像。这就是报告错误的原因,没有详细说明这些图像的制作地点或来源

标签: kubernetes docker-desktop


【解决方案1】:

docs

默认情况下,kubelet 会尝试从指定的注册表中拉取每个镜像。但是,如果容器的 imagePullPolicy 属性设置为 IfNotPresent 或 Never,则使用本地图像(分别优先或独占)。

您在 Deployment 中使用 imagePullPolicy: Never 指令,当您尝试部署清单时,kubelet 无法在本地找到所需的镜像。

【讨论】:

  • 如何在本地查找图片?我是 docker 和 kubernetes 的新手,并尝试从这个链接中学习它并使用给定的清单文件。请帮我。谢谢。 github.com/PacktPublishing/…
  • 您使用的是哪个版本的 kubernetes?
  • 客户端版本:version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.5" 我在原始问题中附上了版本输出
  • 您可以使用该命令列出本地图像:然后在节点上crictl images
  • 当我在 windows powershell 上运行 crictl images 命令时,它说它无法识别
猜你喜欢
  • 2019-11-21
  • 2020-11-28
  • 2019-07-06
  • 2020-06-24
  • 2021-07-24
  • 2021-07-11
  • 2021-02-24
  • 2021-06-18
  • 2020-08-31
相关资源
最近更新 更多