一、今天遇到的问题(折磨了我6h!!!!!)
为什么今天我进入Ubuntu使用kind get clusters发现没有我昨天创建的集群呢???
而且由于今天的网络问题,死活没办法重新拉取kind镜像!!!
根本原因:WSL2 独立 Docker 与 Docker Desktop 冲突+未自启
1. 默认使用了 Docker Desktop 共享后端
我昨天在 WSL2 中执行 kind create cluster 时,实际连接的是 Docker Desktop 共享后端(而非 WSL2 独立 Docker),因此集群容器存储在 Windows的Docker 中。
2. WSL2 重启后 Docker 连接断裂
-
WSL2 重启后,独立 Docker 服务默认未启动(sudo service docker status 显示 inactive)。
-
同时,Docker Desktop 的 WSL 集成可能未自动重连,导致 WSL2 终端无法访问 Windows Docker 中的容器,表现为“集群消失”。
3、验证
在 Windows 终端 执行,确认容器仍存在:
docker ps -a --filter "name=my-multi-node-cluster1" --format "{{.Names}}\t{{.Status}}"
# 预期输出:
my-multi-node-cluster1-control-plane Up 2 hours
my-multi-node-cluster1-worker Up 2 hours
my-multi-node-cluster1-worker2 Up 2 hours
→ 结论:集群容器在 Windows Docker 中,WSL2 终端因连接问题无法访问。
4、解决方法
我在k8sday02中表示我想使用WSL2 独立 Docker进行更高效的学习开发,因为WSL2中的Docker环境完全隔离、高性能,但是我不想删除window的docker,这时候有两个方法解决。
Ⅰ、将Windows的docker中的集群“迁移”到WSL2中的Docker
Ⅱ、通过Windows的kind镜像打包回WSL2的Docker内,在WSL2重新创建集群
我选择第二个方法
Step1 :在 Windows 中导出 Kind 镜像
# 创建镜像导出目录(如 E:\docker-images\)
mkdir E:\cloud-native\k8s\kind-image
# 导出镜像为离线文件(tar 格式)
docker save -o "E:\cloud-native\k8s\kind-imagekindest-node-v1.29.2.tar"kindest/node:v1.29.2
在拉取镜像的时候,我发现不知道为什么我的kind镜像没有标签,所以接下来我添加了临时标签,方便待会拉取
# 为无标签镜像添加临时标签(替换 <镜像ID> 为实际值:09c50567d34e)
docker tag 09c50567d34e kindest/node:temp-kind
docker images | findstr "kindest"
# 预期输出(新增 temp-kind 标签):
# kindest/node temp-kind 09c50567d34e 18 months ago 956MB
# 导出镜像到目标路径(确保目录存在,如 E:\cloud-native\k8s\kind-image\)
docker save -o "E:\cloud-native\k8s\kind-image\kindest-node-temp.tar" kindest/node:temp-kind
ls "E:\cloud-native\k8s\kind-image\"
# 预期输出:kindest-node-temp.tar(大小约 956MB)
Step2 :之后进入WSL2的Ubuntu中进行操作
# 进入 Windows 导出目录(WSL2 路径格式)
cd /mnt/e/cloud-native/k8s/kind-image/
# 导入镜像(使用导出的临时标签文件)
docker load -i kindest-node-temp.tar
# 查看导入的临时标签镜像
docker images | grep kindest
# 输出:kindest/node temp-kind 09c50567d34e 18 months ago 956MB
# 重命名标签为 v1.29.2(Kind 创建集群时需指定此标签)
docker tag kindest/node:temp-kind kindest/node:v1.29.2
# 验证标签是否正确(此时应有两个标签指向同一镜像)
docker images | grep kindest
# 预期输出:
kindest/node v1.29.2 09c50567d34e 18 months ago 956MB
kindest/node temp-kind 09c50567d34e 18 months ago 956MB
#删除刚刚临时标签的镜像
docker rmi kindest/node:temp-kind # 仅删除标签,不影响镜像本身
之后就可以正常创建镜像了
# 创建 Kind 集群(使用原配置文件,若有)
kind create cluster \
--name my-multi-node-cluster1 \
--config /mnt/e/cloud-native/k8s/kindconfigfile1.yaml \ # Windows 配置文件路径
--image kindest/node:v1.29.2 # 已恢复的正确标签
大家可以看看自己的Docker后端连接的是WSL2环境还是Docker desktop(应该没有人因为和我一样懒导致这个问题吧TVT)
可以通过以下代码查看:
# 查看 Docker 服务的操作系统(核心判断依据)
docker info | grep "Operating System"
说到底还是因为我太粗心了。如果大家有和我类似的经历一定要避雷!!!在WSL2中刚下载docker一定要及时设置自启动啊!!我已经修改了配置文件不下于30次了,修改加速源什么的好久!!!甚至都想重装Ubuntu了!!
二、补充k8sday03可能问题
①、docker无法启动
-
配置文件错误,大概率是将自己Windows的docker desktop中的加速源添加进WSL2中的docker时,由于配置的格式啊,忘记写逗号啊什么的导致错误
PS:day03给的镜像加速多写了给官方的地址,大家如果要使用的时候建议删掉,只保留一个阿里云的就可以了
②、创建集群显示你的yaml文件错误
-
缩进对齐
-
使用空格(不要用 Tab)
-
列表项(-)后必须有空格且相同层级的元素缩进必须一致
③、突然镜像拉取失败
-
镜像源稳定性波动(尤其是国内源)
-
WSL2 DNS 缓存问题
-
Windows 更新重置网络配置

被折叠的 条评论
为什么被折叠?



