Kubernetes - minikube (輕鬆建立本地端的 K8S 集群工具) 安裝教學

minikube 是一個輕量級的工具,可以讓開發者在本機上輕易架設一個 Kubernetes Cluster,透過單一 Cluster 讓我們可以在本機上學習各種指令操作。minikube 運作原理就是會在本機上建立一個 virtual machine,並且在這 VM 建立一個 signle-node Kubernetes Cluster,但通常不會把 minikube 用在實際生產環境上,不過如果是開發環境測試就很方便了!

Windows 安裝教學

先來講最麻煩的 Windows 的安裝教學,我真的覺得這種工具對於 Windows 安裝真的很麻煩,本身支援度可能不是很好,再來常常會遇到潛在地 Bug,所以我是建議如果可以的話,可以另外有一台 Linux 的主機來練習。

此外,由於前面說過 minikube 會需要建立一個 VM,因此這涉及兩種方法:

  • 需要額外下載 Virtualbox
  • 本身是 Windows 專業版,有支援 Hyper-V 的功能

也就是說如果你的 Windows10 並非是專業版,因此就不支援 Hyper-V 的功能,因此就需要下載 minikube 前要先去下載 Virtualbox,而 minikube 開啟後就會自動在你的 Virtualbox 建立好 VM。

而如果有 Windows10 專業版,就會支援原生地 Hyper-V 的功能,就不需要額外安裝 Virtualbox。只要開啟 Hyper-V 功能即可~這道理就跟安裝 Docker 在 Windows 是一定的道理。

可以參考我安裝 Docker 的教學文章:Docker 介紹及安裝教學,裡面有教到如何開啟 Hyper-V 功能。同時我也是建議如果沒有先學會 Docker 就來學 K8S 是不好的,因為要知道 K8S 出來的原因就是能夠有效地幫我們管理 Docker 的 Container。

此外,minikube 的 VM 預設佔的 Ram 容量是 4096,因此先確保電腦是否有足夠的 Ram,因為如果設過低速度會很慢。

下載 minikube 官方提供的 Windows exe 檔案

GitHub Release 網址:https://github.com/kubernetes/minikube/releases

還好至少有提供 exe 檔案來做圖象化的安裝:

選擇最新版的 minikube-windows-amd64.exe 下載即可。

安裝步驟

安裝過程很簡單,所以就不多加講解。

啟動 minikube

在啟動之前,請一定要用管理員權限開啟 cmd!!

不然會有錯誤,而這個錯誤會讓你看不出來是沒有管理員權限的問題,所以會繞了很多圈!!

1
minikube start --driver=hyperv 

之所以要加 **–driver-hyperv**,是因為 Windows 的 minikube 預設是採用 Virtualbox 來啟動,因此這邊需要指定是採用 hyperv。

如果沒有加的話,會出現錯誤。

如果每次啟動不想要指定 driver,可以添加以下指令:

1
minikube config set driver hyperv

執行指令後,由於會需要先載 iso 檔案,畢竟需要建立一個 VM,跑完後會出現以下訊息代表成功:

1
2
3
4
5
6
7
8
9
10
11
![p7](/p7.jpg)* minikube v1.8.1 on Microsoft Windows 10 Pro 10.0.18362 Build 18362
* Automatically selected the hyperv driver
* Downloading VM boot image ...
* Creating hyperv VM (CPUs=2, Memory=4078MB, Disk=20000MB) ...
E0315 12:36:07.731590 600 config.go:71] Failed to preload container runtime Docker: copying file: sudo test -d \ && sudo scp -t \ && sudo touch -d "2020-03-12 16:57:57.8566464 +0800" \/preloaded.tar.lz4: Process exited with status 1
output: , falling back to caching images
* Preparing Kubernetes v1.17.3 on Docker 19.03.6 ...
* Launching Kubernetes ...
* Enabling addons: default-storageclass, storage-provisioner
* Waiting for cluster to come online ...
* Done! kubectl is now configured to use "minikube"

這時候如果你開啟 Hyper-V 管理員會發現,多了一個 VM:

一些基本指令介紹

列出 minikube 的狀態

1
minikube status

停止 minikube 的運行

1
minikube stop

刪除 minikube

1
minikube delete

假設執行後,出現以下問題:

X Unable to remove machine directory: %v: remove C:\Users\kenny.minikube\machines\minikube\minikube\Snapshots\9EDA8289-F9ED-4799-BFAC-3D6BD6B38E88.vmcx: The process cannot access the file because it is being used by another process.

可以先透過 Hyper-V 管理員,手動將 minikube 的虛擬機刪除即可,接著再去他上面所說的路徑將 \.minikube 資料夾整個刪掉即可。

ssh 進入 minikube 中

1
minikube ssh

查詢 minikube 對外的 IP

事實上這個就是 VM 的 IP,因此最簡單的 K8S 的應用是,在 minikube 佈署 Pod,Pod 的 port 與 minikube VM 的 port 互相對應,最後再透過訪問 minikube 對外的 ip 來取得 pod 裡面的 container 服務。

1
minikube ip

透過 minikube 提供的瀏覽器 GUI 查看 Cluster 狀況

這個可以讓你知道目前 Cluster 的所有狀況,包括自己練習佈署上去的 pod、service、deployment 等等元件都可以看的到。

1
minikube dashboard

由於我之前開啟 minikube 遇到了許多坑,但是之前錯誤紀錄的文章沒有存到 QQ,所以忘記錯誤訊息,但如果有按照我上面的步驟應該是沒問題。另外建議,如果採用網路上的方法修正後,在 start minikube 還是出錯的話,建議先刪除 minikube VM,在重新 start。

Ubuntu 安裝教學

Linux 安裝的話就是簡單快速又方便!沒遇到 bug~

安裝 minikube

1
2
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
&& sudo install minikube-linux-amd64 /usr/local/bin/minikube

這樣預設會安裝最新版本的 minikube。

檢查系統是否支持 virtualization

1
egrep -q 'vmx|svm' /proc/cpuinfo && echo yes || echo no

如果秀出 yes,那就恭喜你不需要做其他設定。

如果 No,則有許多方式去解決,就比較麻煩了,可參考官方教學:

https://minikube.sigs.k8s.io/docs/start/linux/

修改 minikube 的預設 Ram

1
minikube config set memory 4096

因為預設的只有 2GB,因此建議給到 4GB。

而開啟的 minikube 跟其他的指令就如同在 Windows 一樣。

總結

minikube 安裝好,以及 kubectl 也安裝好,就可以透過 kubectl 對 minikube 進行操作。之後再出文章好好介紹整個 K8S 的架構,以及如何用 minikube 示範應用。

最後最後!請聽我一言!

如果你還沒有註冊 Like Coin,你可以在文章最下方看到 Like 的按鈕,點下去後即可申請帳號,透過申請帳號後可以幫我的文章按下 Like,而 Like 最多可以點五次,而你不用付出任何一塊錢,就能給我寫這篇文章的最大的回饋!