簡單三分鐘,本地搭建 k8s

Newbe36524發表於2021-09-06

使用 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
minikube config set cpus 8
minikube config set memory 12288

CPU 和記憶體可以按照你的實際情況進行設定。其中記憶體的單位為 MB,12288 即表示 12G。

在 Hyper-v 中,這實際上就是虛擬機器的 CPU 和記憶體。

啟動 k8s

使用管理員許可權開啟一個控制檯,並執行以下命令,來啟動一個 k8s 節點:

minikube start

執行這段命令後,經過一段時間的等待,你應該會得到如下所示的輸出內容,這就表示你已經正確啟動了一個 k8s 節點:

PS C:/Users/Administrator> minikube start
? Microsoft Windows 10 Enterprise 10.0.19042 Build 19042 上的 minikube v1.20.0
✨ 根據使用者配置使用 hyperv 驅動程式
? Starting control plane node minikube in cluster minikube
? Creating hyperv VM (CPUs=8, Memory=12288MB, Disk=20000MB) ...
? 正在 Docker 20.10.6 中準備 Kubernetes v1.20.2…
▪ Generating certificates and keys ...
▪ Booting up control plane ...
▪ Configuring RBAC rules ...
? Verifying Kubernetes components...
▪ Using image registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v5 (global image repository)
? Enabled addons: storage-provisioner, default-storageclass
? Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

啟用 dashboard 看看叢集

執行以下命令:

minikube dashboard

稍等片刻,瀏覽器便會開啟 dashboard,你就可以看到叢集的基本情況。

dashboard

使用 lens 檢視叢集

除了使用原生的 dashboard,你也可以使用 lens 來檢視這個叢集的情況。

通過 https://k8slens.dev/ 下載和安裝最新的 lens 版本。

然後開啟之後,便可以通過 lens 來檢視叢集的基本情況。

lens1

lens2

lens3

安裝 helm

為了驗證這個叢集的基礎功能,我們嘗試使用 helm 來安裝一個簡單的應用

首先,需要安裝 helm。 helm 和 minikube 一樣,是一個單檔案的命令列程式。可以直接從 Github 上下載。

或者也可以通過以下地址加速下載:

https://www.newbe.pro/Mirrors/Mirrors-Helm/

下載,設定好 PATH 之後,我們就可以在控制檯中呼叫 helm:

PS C:/Users/Administrator> helm version
version.BuildInfo{Version:"v3.6.3", GitCommit:"d506314abfb5d21419df8c7e7e68012379db2354", GitTreeState:"clean", GoVersion:"go1.16.5"}

新增 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
NAME URL
bitnami https://charts.bitnami.com/bitnami
dapr https://dapr.github.io/helm-charts/

使用 helm 安裝一個 nginx

這裡我們以安裝一個簡單的 nginx 為例,演示一下如何安裝 helm chart 包。

通過執行以下命令,便可以從 bitnami 上安裝一個 nginx 到叢集中:

helm install my-release bitnami/nginx

同時,如果你前面安裝了 lens, 那麼也可以通過左側的 APP/Charts 來安裝:

nginx

安裝好之後,便可以使用 k8s 的 port-forward 功能來檢視安裝結果。當然,在 lens 上,只需要一次滑鼠點選可以:

nginx-port-forward

view nginx

移除安裝的 helm chart

通過 lens app/release 選單,你可以非常簡單的移除剛剛安裝的 chart。

remove release

停止和移除 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

https://github.com/helm/helm

af://1eyJ1IjoiaHR0cHM6Ly9naXRodWIuY29tL2hlbG0vaGVsbSIsInQiOiJoZWxtL2hlbG06IFRoZSBLdWJlcm5ldGVzIFBhY2thZ2UgTWFuYWdlciIsInRzIjpbImdpdGh1YiIsImhlbG0iXX0=

Github helm 加速下載

https://www.newbe.pro/Mirrors/Mirrors-Helm/

af://1eyJ1IjoiaHR0cHM6Ly93d3cubmV3YmUucHJvL01pcnJvcnMvTWlycm9ycy1IZWxtLyIsInQiOiJIZWxtIFx1NTZGRFx1NTE4NVx1NTJBMFx1OTAxRlx1NEUwQlx1OEY3RCB8IG5ld2JlIiwidHMiOlsiaGVsbSIsIm1pcnJvciJdfQ==

Github bitnami charts

https://github.com/bitnami/charts

af://1eyJ1IjoiaHR0cHM6Ly9naXRodWIuY29tL2JpdG5hbWkvY2hhcnRzIiwidCI6ImJpdG5hbWkvY2hhcnRzOiBIZWxtIENoYXJ0cyIsInRzIjpbImJpdG5hbWkiLCJjaGFydHMiLCJoZWxtIl19

相關文章