首页 > 解决方案 > Kubernetes 没有使用 Docker for Desktop 拉取镜像

问题描述

我正在使用 Docker for Desktop 和 Windows Server Core 容器。我创建了一个 Docker 映像,如下所示:

FROM mcr.microsoft.com/windows/servercore:ltsc2019

#Download NodeJs
WORKDIR /downloads
ADD https://nodejs.org/dist/v12.18.3/node-v12.18.3-x64.msi nodejs.msi

#Install NodeJs
RUN msiexec.exe /qn /i nodejs.msi
RUN setx path "%path%;C:\Program Files\nodejs"

我使用命令docker build -t winnode:1.0 .创建图像,一切顺利:我看到我的 VS Code docker 扩展程序已经创建了我的图像。

现在我使用 Kubernetes yaml 文件来运行我的镜像,如下所示:

apiVersion: v1
kind: Service
metadata:
  name: winnode-svc
spec:
  selector:
    app: winnode
    tier: webserver
  ports:
  - port: 3500
    name: http
    targetPort: http
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: winnode-dpl
spec:
  replicas: 1
  selector:
    matchLabels:
      app: winnode
      tier: webserver
  template:
    metadata:
      labels:
        app: winnode
        tier: webserver
    spec:
       containers:
       - name: winnode
         image: winnode:1.0
         imagePullPolicy: IfNotPresent
         ports:
          - name: http
            containerPort: 8080

但是,kubernetes 试图从 docker 注册表中拉取镜像,但找不到它。我得到消息ErrImagePull。我用谷歌搜索了一下,答案都是关于imagePullPolicy. 我试过IfNotPresent了,我也一样ErrImagePull。(这是本例)。

如果我指出Never,我会得到错误:ErrImageNeverPull

我能做些什么 ?

谢谢!

标签: dockerkubernetes

解决方案


仔细检查 kubectl 命令,它会找到“客户端版本”,但要确保它列出了客户端服务器。

否则,如果您没有客户端服务器启用 Docker Kubernetes 集群。例如安装 KinD 并创建您的第一个集群 - windows-wsl

您也可以尝试安装 Minikube。示例如何安装 minikube 并在 windows - install-minikube-windows上运行。

看看: docker -desktop-windowsdockerdesktop-vs-minikube


推荐阅读