docker - 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
。
我能做些什么 ?
谢谢!
解决方案
仔细检查 kubectl
命令,它会找到“客户端版本”,但要确保它列出了客户端服务器。
否则,如果您没有客户端服务器启用 Docker Kubernetes 集群。例如安装 KinD 并创建您的第一个集群 - windows-wsl。
您也可以尝试安装 Minikube。示例如何安装 minikube 并在 windows - install-minikube-windows上运行。
看看: docker -desktop-windows,dockerdesktop-vs-minikube。
推荐阅读
- javascript - JavaScript单元测试:模拟来自同一模块的其他功能
- arrays - 如何将两种不同的结构合并到一个数组中并对其进行排序?迅速
- python - Kivy/Python 文本输入焦点
- html - 如何将顶部的容器与 Bootstrap 5 中的导航栏对齐?
- c++ - C ++ - 将给定字符串中每个单词的第一个字符大写
- laravel - 如何在 livewire wire:model 中绑定模型关系值?
- docker-compose - 使用 Docker Compose 部署 SCDF 应用程序时出现异常
- react-native - React Native 和 Mediapipe ios 框架兼容
- react-native - 有没有办法在 React Navigation V5 中链接导航?
- excel - 没有 VBA 的多个单元格检查?