作為目前事實(shí)上的容器編排系統(tǒng)標(biāo)準(zhǔn),K8s 無(wú)疑是現(xiàn)代云原生應(yīng)用的基石,很多同學(xué)入門可能直接就被卡到第一關(guān),從哪去弄個(gè) K8s 的環(huán)境, Docker Desktop 自帶了Kubernetes 服務(wù),但是在過(guò)往的經(jīng)驗(yàn)中就是用梯子也安裝不了,卡在拉取k8s 鏡像的過(guò)程中。因此阿里云有一個(gè)項(xiàng)目 k8s-for-docker-desktop 幫助大家拉取鏡像,大家現(xiàn)在通過(guò)網(wǎng)絡(luò)找到的相關(guān)文章都是基于這個(gè)項(xiàng)目進(jìn)行的操作。這個(gè)項(xiàng)目最新的一些k8s 版本沒(méi)有,對(duì)于一個(gè)硬性需求的項(xiàng)目突然不活躍了,肯定是有原因的,這也正是我寫(xiě)這篇博客要和你分享的內(nèi)容。
接下來(lái)就開(kāi)始我們直接在 Docker Desktop上啟用Kubernetes 1.25 的過(guò)程記錄。
1、在電腦上安裝好 Docker Desktop 4.12,所帶的kubernetes 1.25,如果可以的話,推薦使用 WSL 作為宿主,后面運(yùn)行 Docker 時(shí)的性能會(huì)更好些。最新版的軟件在安裝時(shí)也是會(huì)默認(rèn)使用 WSL 作為宿主的。
安裝 Docker 之前需要你在 BIOS 中開(kāi)啟虛擬化,同時(shí)基于你的宿主程序的選擇,你還需要執(zhí)行如下的操作
- 使用 WSL2 作為宿主:在“控制面板\所有控制面板項(xiàng)\程序和功能”中選擇“啟用或者關(guān)閉 Windows 功能” 勾選上
適用于 Linux 的 Windows 子系統(tǒng)
,然后在 Microsoft 商城中下載一個(gè) Linux 的發(fā)行版本 - 使用 Hyper-V 作為宿主:在“控制面板\所有控制面板項(xiàng)\程序和功能”中選擇“啟用或者關(guān)閉 Windows 功能” 勾選上
Hyper-V
(沒(méi)記錯(cuò)的話,如果你有安裝別的虛擬機(jī)軟件,啟用 Hyper-V 后原來(lái)的虛擬機(jī)由于沖突是沒(méi)辦法繼續(xù)使用了)
這里要注意,以后你看到這篇文章的時(shí)候用的是更新的版本:
Docker Desktop 中內(nèi)置的 K8s 其實(shí)是依賴于相關(guān)的鏡像,由于這些鏡像位于 google 的服務(wù)器上,因此基本上是無(wú)法正常拉取下來(lái)的,所以這里就需要借助鏡像網(wǎng)站將這些 docker 鏡像拉取到本地。
因?yàn)橹苯訌?國(guó)外 Docker Hub 拉取鏡像的速度是非常慢的,所以安裝完成之后我們可以配置鏡像網(wǎng)站地址,加速 docker 鏡像的拉取
找到 Docker 的設(shè)置頁(yè)面,在 Docker Engine
頁(yè)面,將鏡像網(wǎng)站的地址加入到右側(cè)配置文件的 registry-mirrors
節(jié)點(diǎn)下面,這里我使用的是 Docker阿里云鏡像和中科大的鏡像網(wǎng)站地址,調(diào)整完成之后重啟 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/" ] }
鏡像地址配置完成之后,做一下清理工作
打開(kāi) Docker 的設(shè)置頁(yè)面,找到 Kubernetes 頁(yè)面,選中 Enable Kubernetes,然后點(diǎn)擊 Apply & Restart,這個(gè)執(zhí)行過(guò)程有個(gè)幾十分鐘到數(shù)小時(shí),具體看網(wǎng)絡(luò)情況,建議在人少的早餐6-7之間來(lái)做。
當(dāng)左下角出現(xiàn) K8s 的 logo,并逐步變?yōu)榫G色,整個(gè) K8s 的環(huán)境也就運(yùn)行起來(lái)了。此時(shí)我們就可以通過(guò) kubectl 來(lái)操作集群,可以看到這里已經(jīng)可以打印出整個(gè)“集群”的信息
上圖中我們看到Docker 桌面的k8s 服務(wù)使用到了下列鏡像:
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