Docker Desktop 可以直接啟用Kubernetes 1.25 了

2022-10-09 09:00:20

作為目前事實上的容器編排系統標準,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 中開啟虛擬化,同時基於你的宿主程式的選擇,你還需要執行如下的操作

  1. 使用 WSL2 作為宿主:在「控制面板\所有控制面板項\程式和功能」中選擇「啟用或者關閉 Windows 功能」 勾選上適用於 Linux 的 Windows 子系統,然後在 Microsoft 商城中下載一個 Linux 的發行版本
  2. 使用 Hyper-V 作為宿主:在「控制面板\所有控制面板項\程式和功能」中選擇「啟用或者關閉 Windows 功能」 勾選上 Hyper-V(沒記錯的話,如果你有安裝別的虛擬機器器軟體,啟用 Hyper-V 後原來的虛擬機器器由於衝突是沒辦法繼續使用了)

這裡要注意,以後你看到這篇文章的時候用的是更新的版本:

image

Docker Desktop 中內建的 K8s 其實是依賴於相關的映象,由於這些映象位於 google 的伺服器上,因此基本上是無法正常拉取下來的,所以這裡就需要藉助映象網站將這些 docker 映象拉取到本地。

因為直接從 國外 Docker Hub 拉取映象的速度是非常慢的,所以安裝完成之後我們可以設定映象網站地址,加速 docker 映象的拉取

找到 Docker 的設定頁面,在 Docker Engine 頁面,將映象網站的地址加入到右側組態檔的 registry-mirrors 節點下面,這裡我使用的是 Docker阿里雲映象和中科大的映象網站地址,調整完成之後重啟 Dokcer 即可

image

{
   "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/"
   ]
}

映象地址設定完成之後,做一下清理工作

image

開啟 Docker 的設定頁面,找到 Kubernetes 頁面,選中 Enable Kubernetes,然後點選 Apply & Restart,這個執行過程有個幾十分鐘到數小時,具體看網路情況,建議在人少的早餐6-7之間來做。

image

當左下角出現 K8s 的 logo,並逐步變為綠色,整個 K8s 的環境也就執行起來了。此時我們就可以通過 kubectl 來操作叢集,可以看到這裡已經可以列印出整個「叢集」的資訊

image

上圖中我們看到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