作为目前事实上的容器编排系统标准,K8s 无疑是现代云原生应用的基石,很多同学入门可能直接就被卡到第一关,从哪去弄个 K8s 的环境, Docker Desktop 自带了Kubernetes 服务,但是在过往的经验中就是用*也安装不了,卡在拉取k8s 镜像的过程中。因此阿里云有一个项目 k8s-for-docker-desktop 帮助大家拉取镜像,大家现在通过网络找到的相关文章都是基于这个项目进行的操作。这个项目最新的一些k8s 版本没有,对于一个硬性需求的项目突然不活跃了,肯定是有原因的,这也正是我写这篇博客要和你分享的内容。
接下来就开始我们直接在 Docker Desktop上启用Kubernetes 1.25 的过程记录。
1、在电脑上安装好 Docker Desktop 4.12,所带的kubernetes 1.25,如果可以的话,推荐使用 WSL 作为宿主,后面运行 Docker 时的性能会更好些。最新版的软件在安装时也是会默认使用 WSL 作为宿主的。
安装 Docker 之前需要你在 BIOS 中开启虚拟化,同时基于你的宿主程序的选择,你还需要执行如下的操作
- 使用 WSL2 作为宿主:在“控制面板\所有控制面板项\程序和功能”中选择“启用或者关闭 Windows 功能” 勾选上
适用于 Linux 的 Windows 子系统
,然后在 Microsoft 商城中下载一个 Linux 的发行版本 - 使用 Hyper-V 作为宿主:在“控制面板\所有控制面板项\程序和功能”中选择“启用或者关闭 Windows 功能” 勾选上
Hyper-V
(没记错的话,如果你有安装别的虚拟机软件,启用 Hyper-V 后原来的虚拟机由于冲突是没办法继续使用了)
这里要注意,以后你看到这篇文章的时候用的是更新的版本:
Docker Desktop 中内置的 K8s 其实是依赖于相关的镜像,由于这些镜像位于 google 的服务器上,因此基本上是无法正常拉取下来的,所以这里就需要借助镜像网站将这些 docker 镜像拉取到本地。
因为直接从 国外 Docker Hub 拉取镜像的速度是非常慢的,所以安装完成之后我们可以配置镜像网站地址,加速 docker 镜像的拉取
找到 Docker 的设置页面,在 Docker Engine
页面,将镜像网站的地址加入到右侧配置文件的 registry-mirrors
节点下面,这里我使用的是 Docker阿里云镜像和中科大的镜像网站地址,调整完成之后重启 Dokcer 即可
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"features": {
"buildkit": true
},
"live-restore": true,
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://cr.console.aliyun.com/"
]
}
镜像地址配置完成之后,做一下清理工作
打开 Docker 的设置页面,找到 Kubernetes 页面,选中 Enable Kubernetes,然后点击 Apply & Restart,这个执行过程有个几十分钟到数小时,具体看网络情况,建议在人少的早餐6-7之间来做。
当左下角出现 K8s 的 logo,并逐步变为绿色,整个 K8s 的环境也就运行起来了。此时我们就可以通过 kubectl 来操作集群,可以看到这里已经可以打印出整个“集群”的信息
上图中我们看到Docker 桌面的k8s 服务使用到了下列镜像:
C:\Users\zsygz>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hubproxy.docker.internal:5000/docker/desktop-kubernetes kubernetes-v1.25.0-cni-v1.1.1-critools-v1.24.2-cri-dockerd-v0.2.5-1-debian 2042e761d17a 6 weeks ago 363MB
k8s.gcr.io/kube-apiserver v1.25.0 4d2edfd10d3e 6 weeks ago 128MB
k8s.gcr.io/kube-controller-manager v1.25.0 1a54c86c03a6 6 weeks ago 117MB
k8s.gcr.io/kube-scheduler v1.25.0 bef2cf311509 6 weeks ago 50.6MB
k8s.gcr.io/kube-proxy v1.25.0 58a9a0c6d96f 6 weeks ago 61.7MB
k8s.gcr.io/pause 3.8 4873874c08ef 3 months ago 711kB
k8s.gcr.io/etcd 3.5.4-0 a8a176a5d5d6 4 months ago 300MB
k8s.gcr.io/coredns v1.9.3 5185b96f0bec 4 months ago 48.8MB
docker/desktop-vpnkit-controller v2.0 8c2c38aa676e 17 months ago 21MB
docker/desktop-storage-provisioner v2.0 99f89471f470 17 months ago 41.9MB