踩坑和填坑。
環境說明
主控端的環境
- 作業系統:Windows 10
- 虛拟化:VirtualBox 6.0
說明:在 Win 10 系統裡嘗試過 Hyper-V,感覺不好用,是以還是回歸到了 VirtualBox。如果你用的是 Hyper-V,或者是 MacOS/Linux 作業系統,中間部分流程應該也可以參考。
如果有疑問可以檢視
官方文檔。
版本
- Minikube:1.7.3
- Kubernetes:1.17.3
說明:目前(2020-03-15)minikube 最新的版本是 1.8.2。我前幾天嘗試的版本是 1.8.1,踩到了其中的大 bug。
從 1.8.0 版本開始,它在部署的時候需要下載下傳一個
Preload tarball images
的鏡像檔案,大小有 500 MB。
這個檔案安裝過程中是先下載下傳到
.minikube\cache\preloaded-tarball
目錄中,并且支援斷點續傳。但是,當我把從其它地方下載下傳完全的檔案放到該目錄中時,并沒有效果。也就是說緩存實際上沒用。
最新的 1.8.2 似乎修複了這個 bug。
Minikube 最新的 1.8.2 和 1.7.3 對應的 Kubernetes 版本都是 1.17.3。使用舊版本啟動叢集需要額外下載下傳的軟體大小是這個 preload image 的一半,而且鑒于這個功能現在還貌似不夠穩定,是以 推薦 使用 1.7.3 版本的 minikube。
下載下傳
使用 minikube 安裝部署所需要下載下傳(拉取)的東西分為以下幾類:
- minikube 指令:從 GitHub 上下載下傳
- minikube 啟動虛機所需 iso:安裝過程中自動下載下傳,通過配置
加速,會緩存到本地--iso-url
- kubernetes 叢集部署所需鏡像,安裝過程中自動拉取,通過配置
加速--image-repository
- kubernetes 叢集部署所需程式,安裝過程中自動下載下傳,沒有配置項,但是會緩存到本地
- kubernetes 主控端(即 Windows)所需用戶端程式,安裝過程自動下載下傳,沒有配置項,但是會緩存
- 應用所需鏡像:安裝過程不涉及,但是可以通過
指定加速鏡像--registry-mirror
可緩存的檔案
整理了可緩存下載下傳的檔案如下,它們在
minikube
部署叢集的時候會自動下載下傳,如果下載下傳時間過長,可以考慮通過其它下載下傳工具提前下載下傳,儲存到指定目錄(具體下文會說到)。
- kubectl.exe , 下載下傳位址
這是 Windows 系統下的 kubectl 用戶端程式,啟動 dashboard 時需要。
不管是通過 minikube 哪個版本安裝,這個檔案都是必需的。
這是 Linux 系統下的程式,虛拟機内安裝 Kubernetes 需要。1.7.3 的 minikube 需要分别下載下傳。
這是 1.8.0 之後的 minikube 需要下載下傳的檔案
以上檔案下載下傳無需科學上網,但是要看情況,出現無法連接配接可以多試幾次。
安裝 minikube
minikube 就是單個
.exe
檔案,既可以直接下載下傳
minikube-windows-amd64.exe
然後改名,也可以下載下傳
minikube-installer.exe
安裝。推薦後者,因為安裝包的體積更小,而且使用更友善。
執行
minikube-installer.exe
,這個安裝過程非常簡單。
預設安裝路徑是
C:\Program Files\Kubernetes\Minikube
,安裝程式會自動把該路徑加入到
PATH
中。
運作
cmd
指令行,檢查
minikube
的版本:
> minikube version
minikube version: v1.7.3
commit: 436667c819c324e35d7e839f8116b968a2d0a3ff
啟動叢集
注意:如果以前安裝過,需要使用
minikube delete
指令把舊版本删除。
如果版本不一緻或者出現莫名其妙的錯誤,可以把
C:\Users\你的使用者名\.minikube
也删除。
minikube v1.7.3
執行:
minikube start --vm-driver=virtualbox --image-mirror-country=cn --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --iso-url=https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.7.3.iso --registry-mirror=https://reg-mirror.qiniu.com
選項說明:
-
如果不寫會自動檢測,可選值 virtualbox, vmwarefusion, hyperv, vmware--vm-driver
-
需要使用的鏡像鏡像的國家/地區代碼。留白以使用全球代碼。對于中國大陸使用者,請将其設定為 cn。--image-mirror-country
-
用來拉取 Kubernetes 叢集所需鏡像的倉庫--image-repository
-
下載下傳 minikube 虛機安裝所需的 iso 檔案--iso-url
-
docker registry 的鏡像源,叢集安裝後拉取鏡像加速用,可以使用其它加速器位址--registry-mirror
更多選項可以執行 minikube start --help
首先是下載下傳 iso 鏡像:
* minikube 1.8.2 is available! Download it: https://github.com/kubernetes/minikube/releases/tag/v1.8.2
* To disable this notice, run: 'minikube config set WantUpdateNotification false'
! Microsoft Windows 10 Pro 10.0.18362 Build 18362 上的 minikube v1.7.3
* Using the virtualbox driver based on user configuration
* 正在使用鏡像存儲庫 registry.cn-hangzhou.aliyuncs.com/google_containers
* 正在下載下傳 VM boot image...
> minikube-v1.7.3.iso: 30.81 MiB / 167.39 MiB 18.41% 830.43 KiB p/s ETA 2m
這時候會自動建立
C:\Users\你的使用者名\.minikube
檔案夾,該目錄下有一個
cache
檔案夾,下載下傳的檔案都會緩存在這裡。
接下來是建立虛機:
* 正在建立 virtualbox 虛拟機(CPUs=2,Memory=2000MB, Disk=20000MB)...
* 正在 Docker 19.03.6 中準備 Kubernetes v1.17.3…
這裡的虛機配置對應的選項:
--cpu=2
,
--memory='2000mb'
--disk-size='20000mb'
,可以自己指定。
這個階段虛機内部開始拉取鏡像,是以會花一點時間,可以另起一個指令行,執行:
> minikube ssh
_ _
_ _ ( ) ( )
___ ___ (_) ___ (_)| |/') _ _ | |_ __
/' _ ` _ `\| |/' _ `\| || , < ( ) ( )| '_`\ /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )( ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy v1.17.3 ae853e93800d 4 weeks ago 116MB
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver v1.17.3 90d27391b780 4 weeks ago 171MB
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager v1.17.3 b0f1517c1f4b 4 weeks ago 161MB
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler v1.17.3 d109c0821a2b 4 weeks ago 94.4MB
registry.cn-hangzhou.aliyuncs.com/google_containers/dashboard v2.0.0-beta8 eb51a3597525 3 months ago 90.8MB
registry.cn-hangzhou.aliyuncs.com/google_containers/coredns 1.6.5 70f311871ae1 4 months ago 41.6MB
registry.cn-hangzhou.aliyuncs.com/google_containers/etcd 3.4.3-0 303ce5db0e90 4 months ago 288MB
registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-scraper v1.0.2 3b08661dc379 4 months ago 40.1MB
registry.cn-hangzhou.aliyuncs.com/google_containers/pause 3.1 da86e6ba6ca1 2 years ago 742kB
registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner v1.8.1 4689081edb10 2 years ago 80.8MB
$
回到安裝所在的指令行,可以看到需要下載下傳的程式:
如果感覺半天沒動靜了,可以按一下回車
* 正在 Docker 19.03.6 中準備 Kubernetes v1.17.3…
* 正在下載下傳 kubelet v1.17.3
* 正在下載下傳 kubectl v1.17.3
* 正在下載下傳 kubeadm v1.17.3
下載下傳後的檔案仍然是儲存在
C:\Users\你的使用者名\.minikube\cache\linux\v1.17.3
檔案夾中,如果這裡下載下傳的較慢,可以:
- 提前下載下傳好對應的檔案
- 此處按下 Ctrl-C 中斷 minikube
- 把檔案拷貝到對應的檔案夾下
- 重新執行上面的
minikube start
minikube 會從中斷處繼續往下執行。
* 正在啟動 Kubernetes ...
* Enabling addons: default-storageclass, storage-provisioner
* 等待叢集上線...
* 完成!kubectl 已經配置至 "minikube"
* 為獲得最佳結果,請安裝 kubectl:https://kubernetes.io/docs/tasks/tools/install-kubectl/
安裝完成,來看看叢集的狀态:
> minikube kubectl get nodes
* 正在下載下傳 kubectl.exe v1.17.3
這裡又要下載下傳 Windows 系統下的 kubectl 用戶端程式,下載下傳後的檔案儲存在
C:\Users\你的使用者名\.minikube\cache\windows\v1.17.3
檔案夾中,如果這裡下載下傳的較慢,仍然可以提前下載下傳好拷貝過去。
> minikube kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready master 11m v1.17.3
就緒狀态,開始啟動
dashboard
:
> minikube dashboard
X kubectl not found in PATH, but is required for the dashboard. Installation guide: https://kubernetes.io/docs/tasks/tools/install-kubectl/
這裡提示我們沒有在環境變量
PATH
中找到
kubectl
,隻需要将上面下載下傳下來的
kubectl.exe
拷貝到任何一個已經在
PATH
中的目錄即可。為了友善管理,我們可以把它和
minikube.exe
放一起。
> minikube dashboard
* 正在開啟 dashboard ...
* Verifying dashboard health ...
* Launching proxy ...
* Verifying proxy health ...
* Opening http://127.0.0.1:54032/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...
此時指令行會一直阻塞在這裡,自動打開浏覽器,進入 Dashboard:
對于手動部署過 dashboard 的人來說,這個确實太友善了
并且後續可以直接使用
kubectl
指令來操作叢集:
> kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-7f9c544f75-kw6g9 1/1 Running 0 29m
kube-system coredns-7f9c544f75-p84v8 1/1 Running 0 29m
kube-system etcd-minikube 1/1 Running 0 29m
kube-system kube-apiserver-minikube 1/1 Running 0 29m
kube-system kube-controller-manager-minikube 1/1 Running 0 29m
kube-system kube-proxy-4jf76 1/1 Running 0 29m
kube-system kube-scheduler-minikube 1/1 Running 0 29m
kube-system storage-provisioner 1/1 Running 1 29m
kubernetes-dashboard dashboard-metrics-scraper-7b64584c5c-x7bwz 1/1 Running 0 14m
kubernetes-dashboard kubernetes-dashboard-79d9cd965-lq7xj 1/1 Running 0 14m
直接 SSH 連接配接叢集
在指令行執行
minikube ssh
可以進入到虛機内部,但是因為終端類型的原因,會出現亂碼,比如執行
top
指令:
是以最好還是通過模拟終端工具(Xshell/SecureCRT等)登入,
- 先執行
查詢到虛機的 IP 位址minikube ip
- SSH 使用者名選擇為
docker
- 認證方式選擇為
Public Key
- 選擇對應的私鑰檔案,
C:\Users\你的使用者名\.minikube\machines\minikube\id_rsa
附:最新 minikube v1.8.2 安裝說明
minikube start --driver=virtualbox --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --registry-mirror=https://reg-mirror.qiniu.com --iso-url=https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.8.0.iso
-
: 原--driver
改為--vm-driver
--driver
-
: 帶上該選項會報錯,不帶也沒影響--image-mirror-country
-
:一樣--image-repository
-
注意版本号--iso-url
-
: 同上--registry-mirror
安裝過程中不再需要下載下傳那 3 個檔案,改為下載下傳
preloaded-images-k8s-v1-v1.17.3-docker-overlay2.tar.lz4
的鏡像檔案,大小 500MB,儲存在
C:\Users\你的使用者名\.minikube\cache\preloaded-tarball
支援斷點續傳,并且可以提前把下載下傳好的檔案拷貝過去。
其它步驟和 v1.7.3 一樣,不再贅述。
文章内容雖基礎,整理釋出不輕松
如果看過有幫助,不妨 點贊 + 關注,謝謝!