本文说明如何使用 Windows 10 创建单节点的 kind 集群 (KinD Kubernetes in Docker)。

先提条件

条件版本
操作系统:Windows 10 或 Windows 11May 2020 Update (build 19041)
Docker in WSL2推荐安装Docker Desktop
WSL2 distro 镜像这里采用Debian
内存至少 8GB 内存

方式1:直接使用 docker desktop进行安装

软件版本
Docker Desktop4.8.1
WSL LinuxUbuntu 22
kubectl使用 wsl ubuntu 22 作为客户端

安装 Docker Desktop

首先完成 Windows 开启 WSL2 和 安装好 Docker Desktop, 可以参考附录1 [1]

安装 kubectl

这里使用和 kind 版本一致的 kubectl 1.24, 安装方式采用了官方给予的 package manager [3] 方式安装

Update the apt package index and install packages needed to use the Kubernetes apt repository:

更新 apt 仓库索引并添加Kubernetes apt 仓库所需的安装软件包:

bash
1
2
3
sudo apt-get update
# apt-transport-https may be a dummy package; if so, you can skip that package
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg

下载公钥

note
这里需要注意,kind 对应版本的 1.24 已经不存在了,这里参考 reddit 上信息,改为 1.28 后正常 [4]

修改对应版本为 1.24

bash
1
2
3
4
5
6
KUBE_VERSION=1.24
If the folder `/etc/apt/keyrings` does not exist, it should be created before the curl command, read the note below.
# sudo mkdir -p -m 755 /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v${KUBE_VERSION}/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
# allow unprivileged APT programs to read this keyring
sudo chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg 

添加 k8s apt 仓库

bash
1
2
3
4
5
KUBE_VERSION=1.28

# This overwrites any existing configuration in /etc/apt/sources.list.d/kubernetes.list
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v${KUBE_VERSION}/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo chmod 644 /etc/apt/sources.list.d/kubernetes.list   # helps tools such as command-not-found to work correctly

方式2:通过子系统方式

安装windows子系统步骤可以参考 [1]

启用子系统

Open PowerShell as Administrator (Start menu > PowerShell > right-click > Run as Administrator) and enter this command:

bash
1
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

查看 wsl 状态

bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
PS C:\Windows\system32> wsl --status
默认分发:docker-desktop
默认版本:2

适用于 Linux 的 Windows 子系统最后更新于 2023/8/3
适用于 Linux 的 Windows 子系统内核可以使用“wsl --update”手动更新,但由于你的系统设置,无法进行自动更新。
 若要接收自动内核更新,请启用 Windows 更新设置:“在更新 Windows 时接收其他 Microsoft 产品的更新”。
 有关详细信息,请访问https://aka.ms/wsl2kernel。

内核版本: 5.4.72

列出可用的 Linux 發行版本

bash
1
2
3
4
5
6
# wsl --list --verbose
wsl -l -v
  NAME                   STATE           VERSION
* docker-desktop         Running         2
  docker-desktop-data    Running         2
  ubuntu22               Running         1

更多命令参考 [1]

下载WSL可用的Linux发行版

使用命令 wsl –list –online 可以查看网络源上有那些 Linux distributions 可以进行选择

bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
$ wsl --list --online
以下是可安装的有效分发的列表。
使用 'wsl.exe --install <Distro>' 安装。

NAME                            FRIENDLY NAME
Ubuntu                          Ubuntu
Debian                          Debian GNU/Linux
kali-linux                      Kali Linux Rolling
Ubuntu-18.04                    Ubuntu 18.04 LTS
Ubuntu-20.04                    Ubuntu 20.04 LTS
Ubuntu-22.04                    Ubuntu 22.04 LTS
Ubuntu-24.04                    Ubuntu 24.04 LTS
OracleLinux_7_9                 Oracle Linux 7.9
OracleLinux_8_7                 Oracle Linux 8.7
OracleLinux_9_1                 Oracle Linux 9.1
openSUSE-Leap-15.6              openSUSE Leap 15.6
SUSE-Linux-Enterprise-15-SP5    SUSE Linux Enterprise 15 SP5
SUSE-Linux-Enterprise-15-SP6    SUSE Linux Enterprise 15 SP6
openSUSE-Tumbleweed             openSUSE Tumbleweed

通过命令安装

如果需要安装 Debian

bash
1
wsl --install --distribution Debian	

通过离线安装包安装

在 github Downloading distributions [1] 部分可以看到对应的下载地址,这里下载 debian 镜像,文件名为 “TheDebianProject.DebianGNULinux_1.12.2.0_neutral___76v4gfsz19hv4.AppxBundle” AppxBundle 结尾。

解压文件,方式一:MakeAppx

bash
1
2
3
4
# 语法
MakeAppx unbundle /p bundle_name.appxbundle /d output_directory

MakeAppx unbundle /p TheDebianProject.DebianGNULinux_1.12.2.0_neutral___76v4gfsz19hv4.AppxBundle /d output_directory

解压文件,方式二:直接使用 zip 类的压缩软件进行解压,解压完成后,获取 x64 版本的 .appx, 例如 “DistroLauncher-Appx_1.12.2.0_x64.appx”,然后再用 zip 类的压缩软件进行解压,获取里面的 “install.tar.gz”。

使用下面命令进行安装

bash
1
LxRunOffline.exe install -n debian -d D:\src\wsl -f install.tar.gz

https://cdimage.debian.org/mirror/cdimage/archive/

https://www.debian.org/doc/manuals/project-history/detailed.en.html

https://learn.microsoft.com/en-us/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package

https://insightsdude.uk/2023/02/wsl2-debian-image-prep/

https://wsl.dev/swarmenetes/

https://blog.rayfalling.com/2020/04/wsl2%E8%87%AA%E5%AE%9A%E4%B9%89-%E6%9B%B4%E6%96%B0%E5%86%85%E6%A0%B8.html

https://learn.microsoft.com/en-us/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package

Reference

[1] Downloading distributions

[2] sirredbeard/awesome-wsl

[3] Install using native package management

[4] Minimal example of using kine

[5] resource-profiling

[6] [*Goodbye