k8sday04

一、今天遇到的问题(折磨了我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 更新重置网络配置

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值