Minikube:
對於想要在系統上安裝 Kubernetes 但系統資源有限的使用者來說,它是理想的選擇。因此,minikube 的關鍵點在於它沒有單獨的 Kubernetes 主節點和 Kubernetes 工作節點架構。在這裡,我們將所有 Kubernetes 元件打包在一起作為一體化設定。單個系統同時充當主節點和工作節點。訪問此網站以根據您的要求安裝 minikube。
Kubeadm:
如果您需要實際的實時設定,這是一種可行的方法。可以使用 Kubeadm 工具完成。它可用於設定多節點 Kubernetes 叢集。它是 Kubernetes 最流行的安裝方法之一。根據您擁有的系統資源,您可以建立多個 VM。然後,您可以配置 Kubernetes 主元件和節點元件。如果您的系統資源有限,建議使用基於雲的 VM。要安裝 Kubeadm 工具,請訪問此網站並根據您的要求完成安裝步驟。
如何使用 minikube 在本地機器上設定 Kubernetes 叢集?
在 AWS、Google Cloud 等平臺上建立Kubernetes叢集可能有點困難,而且需要花費相當多的錢。如果您有 Windows 計算機或 Mac,那麼使用適用於 Windows/Mac 的 Docker Desktop 建立多容器叢集並使用Kubernetes管理叢集就很容易了。
前提條件:對 Docker 和 Kubernetes 有一些基本瞭解。
但是對於基於 Linux 的系統,您必須選擇昂貴的基於雲的解決方案。因此,我們可以使用minikube在本地機器上建立自己的叢集。它是本地 Kubernetes,專注於讓 Kubernetes 的學習和開發變得簡單。您只需要安裝 docker 或任何虛擬機器環境。在下面的例子中,我們使用了虛擬盒。
安裝 Minikube:要在 Linux 上安裝 minikube,請使用以下命令:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube
示例:為了測試這一點,我們將使用一個售票 Web 應用程式,該應用程式使用 NodeJS、ExpressJS、NextJS 構建,並使用 nats-streaming 進行事件傳輸,使用ingress-nginx進行網路和負載平衡。不同的服務使用不同的 docker 映象,並使用 minikube 在本地執行叢集。
Repo 的 Github 連結:使用https://github.com/afif1400/gittix-micro連結來 fork 該專案。
注意:安裝 docker 或 virtual box 和 minikube 後,我們只需啟動 minikube 並使用 skaffold 來執行所有容器或不同的微服務。
因此,在克隆 repo 後,轉到根目錄,首先啟動 minikube –driver 用於指定環境,您也可以將其更改為 docker。但是使用 docker 環境的 ingress 存在錯誤。
minikube start --driver="virtualbox"
現在minikube內部已經啟動了Kubernetes叢集,你也可以透過參考提供的官網文件來配置它所使用的資源。
我們需要在 minikube 上啟用幾個外掛來執行該應用程式。第一個是儀表板,它是一個用於監控叢集部署服務等的 GUI,第二個外掛是ingress。
啟用儀表板的命令:
minikube addons enable dashboard
啟用入口的命令:
minikube addons enable ingress
現在我們需要公開ingress-nginx部署,以便可以從外部世界訪問它。使用以下命令執行此操作:
kubectl expose deployment ingress-nginx-controller --target-port=80
--type=NodePort -n kube-system
現在驗證服務是否正在執行:輸出應該類似於下面給出的輸出。
kubectl get services -n kube-system
接下來,設定一個環境變數,即jwt-secret,要設定它,請執行以下命令:
kubectl create secret generic jwt-secret --from-literal=JWT_KEY=asdf
我們將在我們的身份驗證服務中使用它來生成jwt令牌。
執行應用程式的步驟:
使用以下命令執行該應用程式:
skaffold dev
執行此命令時,將安裝每個服務的所有依賴項並構建映像,從而啟動叢集。如果 skaffold 在此期間失敗,只需重新執行上述命令即可。
停止 minikube:以下是停止 minikube 的命令:
minikube stop
刪除叢集:以下是刪除叢集的命令:
minikube delete