使用 minikube 在本地搭建 k8s 已經比以前要簡單很多了。本文,我們通過簡短的三分鐘來重現一下在本地搭建 k8s 實驗環境的步驟。
Newbe.Claptrap 是一個用於輕鬆應對併發問題的分散式開發框架。如果您是首次閱讀本系列文章。建議可以先從本文末尾的入門文章開始瞭解。
下載 Minikube
首先,你可能會考慮從官網下載 minikube 然後進行安裝,但是這樣實際上可以預知的是,在後續的使用中你可能會到由於網路的特殊性,無法正常地啟動。
因此,需要使用一些特殊的辦法來解決這個問題。
這裡,我們直接使用由阿里雲團隊針對中國大陸網路環境進行優化的版本。
Mac OSX
curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.20.0/minikube-darwin-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
|
Linux
curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.20.0/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
|
Windows
https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.20.0/minikube-windows-amd64.exe
下載 minikube-windows-amd64.exe 檔案,並重新命名為 minikube.exe
下面我們都將圍繞 windows 版本進行說明和演示。
雖然官方版本已經支援中國區的映象加速,但是截至筆者自己發文的時候,還是存在各種問題。本著人的生命是有限的基本原則,我們可以先跳過這些惱人的問題。
安裝 Minikube
windows 版本只要下載到特定資料夾,然後將這個資料夾,加入到 PATH 當中即可。這樣以後無論在那個路徑下都可以正常執行 minikube 命令。
啟動 Hyper-v
雖然最新的 minikube 對於 Docker 和 Hyper-v 都是首選驅動,但是 Docker 無法使用 ingress 外掛,因此考慮使用 Hyper-v。
使用管理員許可權執行以下指令碼來啟用 Hyper-v:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
|
啟用後需要重新啟動作業系統才能生效。
配置 Minikube
使用管理員許可權開啟一個控制檯,並執行以下命令,來設定驅動、CPU 和記憶體:
minikube config set driver hyperv
|
CPU 和記憶體可以按照你的實際情況進行設定。其中記憶體的單位為 MB,12288 即表示 12G。
在 Hyper-v 中,這實際上就是虛擬機器的 CPU 和記憶體。
啟動 k8s
使用管理員許可權開啟一個控制檯,並執行以下命令,來啟動一個 k8s 節點:
minikube start
|
執行這段命令後,經過一段時間的等待,你應該會得到如下所示的輸出內容,這就表示你已經正確啟動了一個 k8s 節點:
PS C:/Users/Administrator> minikube start
|
啟用 dashboard 看看叢集
執行以下命令:
minikube dashboard
|
稍等片刻,瀏覽器便會開啟 dashboard,你就可以看到叢集的基本情況。
使用 lens 檢視叢集
除了使用原生的 dashboard,你也可以使用 lens 來檢視這個叢集的情況。
通過 https://k8slens.dev/ 下載和安裝最新的 lens 版本。
然後開啟之後,便可以通過 lens 來檢視叢集的基本情況。
安裝 helm
為了驗證這個叢集的基礎功能,我們嘗試使用 helm 來安裝一個簡單的應用
首先,需要安裝 helm。 helm 和 minikube 一樣,是一個單檔案的命令列程式。可以直接從 Github 上下載。
或者也可以通過以下地址加速下載:
https://www.newbe.pro/Mirrors/Mirrors-Helm/
下載,設定好 PATH 之後,我們就可以在控制檯中呼叫 helm:
PS C:/Users/Administrator> helm version
|
新增 bitnami 為 helm 包源
helm 實際上是一個包安裝器,這個包被稱為 charts,每個 chart 實質上就是一組 k8s 資源的定義。
因此,和軟體安裝一樣,想要安裝一個軟體,首先需要選擇一個軟體包源來下載這個軟體包。
bitnami 是 VMware 提供的一個包源,其中包含了一些已經被用於產線的常用中介軟體包,比如 mysql,elasticsearch,mongodb,wordpress 等等。
通過以下命令,便可以新增這個包源。
helm repo add bitnami https://charts.bitnami.com/bitnami
|
新增好之後,可以使用以下命令來檢視已經新增的所有包源:
PS C:/Users/Administrator> helm repo list
|
使用 helm 安裝一個 nginx
這裡我們以安裝一個簡單的 nginx 為例,演示一下如何安裝 helm chart 包。
通過執行以下命令,便可以從 bitnami 上安裝一個 nginx 到叢集中:
helm install my-release bitnami/nginx
|
同時,如果你前面安裝了 lens, 那麼也可以通過左側的 APP/Charts 來安裝:
安裝好之後,便可以使用 k8s 的 port-forward 功能來檢視安裝結果。當然,在 lens 上,只需要一次滑鼠點選可以:
移除安裝的 helm chart
通過 lens app/release 選單,你可以非常簡單的移除剛剛安裝的 chart。
停止和移除 minikube 節點
如果你想停止當前 minikube 節點以節約資源,可以執行以下命令:
minikube stop
|
如果你想移除安裝的 minikube 節點(hyper-v 虛擬機器),可以執行以下命令:
minikube delete --all
|
本篇小結
通過簡單的 minikube 、 helm 和 lens, 你便可以擁有一個非常簡單的 k8s 測試環境。
一切就是這樣的輕鬆愉快。
相關連結
af 開頭的連結為 af code,你可以通過 https://af.newbe.pro/ 來了解如何使用此連結進行快速收藏。
阿里雲版本 minikub
https://github.com/AliyunContainerService/minikube
af://1eyJ1IjoiaHR0cHM6Ly9naXRodWIuY29tL0FsaXl1bkNvbnRhaW5lclNlcnZpY2UvbWluaWt1YmUiLCJ0IjoiQWxpeXVuQ29udGFpbmVyU2VydmljZS9taW5pa3ViZSIsInRzIjpbIms4cyIsIm1pbmlrdWJlIiwiXHU5NjNGXHU5MUNDXHU0RTkxIl19
Github minikub
https://github.com/kubernetes/minikube
af://1eyJ1IjoiaHR0cHM6Ly9naXRodWIuY29tL2t1YmVybmV0ZXMvbWluaWt1YmUiLCJ0Ijoia3ViZXJuZXRlcy9taW5pa3ViZTogUnVuIEt1YmVybmV0ZXMgbG9jYWxseSIsInRzIjpbImdpdGh1YiIsIm1pbmlrdWJlIl19
Github minikub
https://github.com/kubernetes/minikube
af://1eyJ1IjoiaHR0cHM6Ly9naXRodWIuY29tL2t1YmVybmV0ZXMvbWluaWt1YmUiLCJ0Ijoia3ViZXJuZXRlcy9taW5pa3ViZTogUnVuIEt1YmVybmV0ZXMgbG9jYWxseSIsInRzIjpbImdpdGh1YiIsIm1pbmlrdWJlIl19
Github helm
af://1eyJ1IjoiaHR0cHM6Ly9naXRodWIuY29tL2hlbG0vaGVsbSIsInQiOiJoZWxtL2hlbG06IFRoZSBLdWJlcm5ldGVzIFBhY2thZ2UgTWFuYWdlciIsInRzIjpbImdpdGh1YiIsImhlbG0iXX0=
Github helm 加速下載
https://www.newbe.pro/Mirrors/Mirrors-Helm/
af://1eyJ1IjoiaHR0cHM6Ly93d3cubmV3YmUucHJvL01pcnJvcnMvTWlycm9ycy1IZWxtLyIsInQiOiJIZWxtIFx1NTZGRFx1NTE4NVx1NTJBMFx1OTAxRlx1NEUwQlx1OEY3RCB8IG5ld2JlIiwidHMiOlsiaGVsbSIsIm1pcnJvciJdfQ==
Github bitnami charts
https://github.com/bitnami/charts
af://1eyJ1IjoiaHR0cHM6Ly9naXRodWIuY29tL2JpdG5hbWkvY2hhcnRzIiwidCI6ImJpdG5hbWkvY2hhcnRzOiBIZWxtIENoYXJ0cyIsInRzIjpbImJpdG5hbWkiLCJjaGFydHMiLCJoZWxtIl19