Kind 的全称是Kubernetes in Docker
在 Windows10 下使用 WSL2 和 KinD 来搭建一套 Kubernetes 集群
操作1: (参考 https://cloud.tencent.com/developer/article/1645054 失败)
1、将 Ubuntu 的软件源更换成阿里云的源
root@k8s:~# cp /etc/apt/sources.list /etc/apt/sources.list.bak root@k8s:~# echo "deb deb deb deb deb deb deb deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted deb http://mirrors.aliyun.com/ubuntu/ focal-security universe deb http://mirrors.aliyun.com/ubuntu/ focal-security multiverse" > /etc/apt/sources.list root@k8s:~#
2、 配置 Systemd
由于默认情况下 WSL 中不能使用 systemd,所以很多应用程序没办法启动,不过还是有一些大神解决了这个问题,我们可以在 链接下面找到启动 SystemD 的方法。
首先安装 Systemd 相关的依赖:
apt install -yqq fontconfig daemonize
然后创建一个如下所示的脚本文件:
# Create the starting script for SystemD vi /etc/profile.d/00-wsl2-systemd.sh SYSTEMD_PID=$(ps -ef | grep '/lib/systemd/systemd --system-unit=basic.target$' | grep -v unshare | awk '{print $2}')if [ -z "$SYSTEMD_PID" ]; then sudo /usr/bin/daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target SYSTEMD_PID=$(ps -ef | grep '/lib/systemd/systemd --system-unit=basic.target$' | grep -v unshare | awk '{print $2}')fiif [ -n "$SYSTEMD_PID" ] && [ "$SYSTEMD_PID" != "1" ]; then exec sudo /usr/bin/nsenter -t $SYSTEMD_PID -a su - $LOGNAME fi
上面的脚本放置在 /etc/profile.d 目录下面,所以要让脚本生效,我们需要退出当前 session,重新进入即可。
到这里我们就完成了 WSL2 的安装和配置。
3、安装docker
4、 安装 Kubernetes
安装 Kubernetes 集群有很多成熟的方案,在本地搭建也有 minikube、microk8s 等等,我们这里选择使用 KinD:在容器中来运行 Kubernetes 的一种简单方式。这里我们将安装 KinD 官方网站的说明()来进行操作。
# 下载 KinD 二进制文件 curl -Lo ./kind (uname)-amd64 # 标记为可执行文件 chmod +x ./kind # 移动到 PATH 目录下去 mv ./kind /usr/local/bin/# TODO,记得提前下载安装 kubectl 二进制文件
KinD 获取后,我们就可以来创建 Kubernetes 集群了——失败!
# 检查是否设置了 KUBECONFIG 环境变量 echo $KUBECONFIG # 检查是否存在 .kube 目录,不需要手动创建 ls $HOME/.kube # 使用 kind 命令创建一个名为 wslk8s 的集群 # 创建后检查 .kube 目录 ls $HOME/.kube
到这里集群就创建成功了,我们也可以在 Windows 的浏览器中打开上面的
Kubernetes master
地址127.0.0.1:36063
v1.18.2 版本的 Kubernetes 节点
操作2:( 重点步骤2,KinD环境安装Kubernetes成功)
https://blog.csdn.net/weixin_43168190/article/details/107179715: kubelet,kubeadm和kubectl安装参考这个
KinD官网:kind.sigs.k8s.io/docs/user/quick-start/#installation
Docker Desktop for Windows user manual:docs.docker.com/docker-for-windows/
1、kind是一个 使用Docker容器“节点”运行本地Kubernetes集群的工具。这类软件主要是为测试Kubernetes本身而设计的,但也可以用于本地开发或CI。( is a tool for running local Kubernetes clusters using Docker container “nodes”.kind was primarily designed for testing Kubernetes itself, but may be used for local development or CI.)
curl -Lo ./kind
chmod +x ./kind
mv ./kind /some-dir-in-your-PATH/kind
2、还是在
kind create cluster --name wslk8s
失败!实际没有失败,页面停止不动是因为
执行过程时间较长,等到最后,安装成功了。
上图可见,kindest/node的镜像文件1.17GB,所以慢,而且在Dockers desktop查看容器自动正常运行,端口是36275
上图"Status Failure",添加docker的GPG key后OK.
curl | apt-key add -
——>kind.sigs.k8s.io/docs/user/quick-start/#creating-a-cluster
root@ATC-Analyzer:~# kubectl cluster-info
Kubernetes control plane is running at 36275
KubeDNS is running at 36275/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
root@ATC-Analyzer:~# kubectl cluster-info --context kind-mi-kind
Kubernetes control plane is running at 36275
KubeDNS is running at 36275/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
root@ATC-Analyzer:~# kubectl get nodes // 可以看到kubernetes节点,这就是一个 单节点的集群
NAME STATUS ROLES AGE VERSION
mi-kind-control-plane Ready control-plane,master 18h v1.20.2
该集群的名字是:kind-mi-kind, 假如$KUBECONFIG environment variable没有设置, 默认集群的configuration存储在${HOME}/.kube/config(/root/.kube)。
查看已创建的集群:
# ./kind get clusters
mi-kind
查看集群 node中的镜像列表;
# docker exec -it mi-kind-control-plane crictl images // Docker container: mi-kind-control-plane
IMAGE TAG IMAGE ID SIZE
docker.io/kindest/kindnetd v20210119-d5ef916d 6b17089e24fdb 122MB
docker.io/library/nginx latest 35c43ace92162 53.7MB
docker.io/rancher/local-path-provisioner v0.0.14 e422121c9c5f9 42MB
k8s.gcr.io/build-image/debian-base v2.1.0 c7c6c86897b63 53.9MB
k8s.gcr.io/coredns 1.7.0 bfe3a36ebd252 45.4MB
k8s.gcr.io/etcd 3.4.13-0 0369cf4303ffd 255MB
k8s.gcr.io/kube-apiserver v1.20.2 3ad0575b6f104 69.7MB
k8s.gcr.io/kube-controller-manager v1.20.2 51dc9758caa7b 63.2MB
k8s.gcr.io/kube-proxy v1.20.2 23b52beab6e55 120MB
k8s.gcr.io/kube-scheduler v1.20.2 cd40419687469 47.6MB
k8s.gcr.io/pause 3.3 0184c1613d929 686kB
3、 以管理员权限启动 PowerShell,然后输入以下命令启用虚拟机平台,
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
在“启用或关闭Windows功能”中查看“Hyper-V”复选框还是保持未勾选。
4、 输入以下命令启用 Linux 子系统功能
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
在“启用或关闭Windows功能”中查看“适用于Linux的Windows子系统”复选框从未勾选变为勾选。
5、 设置 WSL 默认版本为2
wsl --set-default-version 2
提示:“WSL 2 需要更新其内核组件。有关信息,请访问 ,有关与 WSL 2 的主要区别的信息,请访问 ”
按提示先下载安装: 适用于 x64 计算机的 WSL2 Linux 内核更新包:wsl_update_x64
6、 打开 Microsoft Store ,并选择你偏好的 Linux 分发版: Ubuntu 20.04 LTS、Debian
安装完成后,只是APP安装完成,Ubuntu系统还没有装到电脑里,需要启动该APP,然后自动执行安装:报错(系统重启也一样)
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x80370102
Error: 0x80370102 ???????????????????
出现 0x80370102 错误,不是要求没有达到,而是兼容问题。 WSL必须满足的条件
-
Windows10(版本大于等于19041)(满足:测试系统版本19042.804)
-
开启VT虚拟化?( 由于步骤3问题,这里 在“启用或关闭Windows功能”中 勾选“Hyper-V”复选框,还必须BIOS启用虚拟化)
PS C:\Windows\system32> wsl --list --verbose
适用于 Linux 的 Windows 子系统没有已安装的分发版。
可以通过访问 Microsoft Store 来安装分发版:
意思是提示没有安装WSL的分发版
Ubuntu 20.04 LTS,表示没有安装成功,原因:
必须在BIOS中启用虚拟化
PS C:\Windows\system32> wsl --list --verbose
NAME STATE VERSION
* Ubuntu-20.04 Running 2
docker-desktop-data Running 2
docker-desktop Running 2
Debian Stopped 2
后续,打开Ubuntu和Debian几分钟后就会提醒你设置用户名和密码(atc/123456)。
设置好用户名和密码后,这个系统并没有设置root权限的密码,使用以下命令:
sudo passwd root (123456)
就可以su -切换到root用户使用,至此,Ubuntu就安装完了,可以关闭该终端。
7、下载安装Docker Desktop for Windows:“Docker Desktop Installer.exe”
docs.docker.com/docker-for-windows/
-
BIOS-level hardware virtualization support must be enabled in the BIOS settings
-
The Docker Desktop installation includes , Docker CLI client, , , , and .
-
The Kubernetes tab is not available in Windows container mode.
8、 配置docker镜像下载位置为阿里云, 加速器 需要双引号。
9、 打开Ubuntu APP,或者在 PowerShell中输入“wsl”,就能进入Ubuntu的命令行中。
10、Deploy on Kubernetes:docs.docker.com/docker-for-windows/kubernetes/
Docker Desktop includes a standalone Kubernetes server and client, as well as Docker CLI integration. The Kubernetes server runs locally within your Docker instance, is not configurable, and is a single-node cluster.
11、 select Enable Kubernetes . To set Kubernetes as the , select Deploy Docker Stacks to Kubernetes by default .
( 不同于步骤2的集群kind,这里是Dockers desktop启用集群的方式,但是不成功?)应该是按上图勾选了“Enable Kubernetes”,点击“Apply & Restart,下载了下图所示镜像:docker/docker-kubernetes v1.19.3。
但是,怎么运行?