Windows安装Docker Desktop并在WSL2集成Kubernetes

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/107179715kubelet,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。

但是,怎么运行?



请使用浏览器的分享功能分享到微信等