使用 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