作為目前事實上的容器編排系統標準,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