如何使用 Minikube 運行本地 Kubernetes 集群?
Minikube是一個最小的 Kubernetes 發行版,專為本地開發而設計。它是作為 Kubernetes 項目的一部分開發的,包括所有主要集群功能的實現。
Minikube 在 Linux、Mac 和 Windows 主機上運行。它可以使用容器或虛擬機環境來運行您的集群及其工作負載。以下是所有受支持的運行時:
- 碼頭工人
- 波德曼
- 虛擬機
- 超V
- 超級套件
- 平行線
- 虛擬盒子
- VMware
在繼續閱讀本指南之前,請確保您已安裝其中一種技術。Minikube 安裝過程將自動檢測可用的運行時並應用適當的配置。我們將向您展示如何完成部署並開始使用 Minikube。
安裝小魔方
在本指南中,我們將重點介紹 x86 Linux 系統。如果您使用的是 Windows、Mac 或其他 CPU 平台,請參閱Minikube 文檔以獲取最詳細的設置信息。在初始安裝過程之後,Minikube 的基本用法在所有支持的系統中都是相同的。
Linux 用戶可以選擇直接下載二進製文件或 Debian/RPM 軟件包。在本例中,我們將使用二進制下載。
$ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
$ sudo 安裝 minikube-linux-amd64 /usr/local/bin/minikube
Minikube 現在將被安裝並可以使用。
啟動 Kubernetes 集群
使用以下命令啟動您的 Minikube 集群minikube start
:
$ minikube start
Ubuntu 20.04 上的 minikube v1.25.2
自動選擇 docker 驅動程序。其他選擇:kvm2、ssh
在集群 minikube 中啟動控制平面節點 minikube
拉取基礎鏡像。..
Downloading Kubernetes v1.23.3 preload. ..
Minikube 將自動下載並運行最新版本的 Kubernetes。這個過程可能需要幾分鐘。命令輸出將指示進度並顯示 Minikube 正在執行的操作。在上面的示例中,您可以看到已選擇 Docker 驅動程序來託管您的集群。如果未自動檢測到您的容器平台或虛擬化堆棧,請參閱Minikube 驅動程序文檔。
將集群與 Kubectl 一起使用
Minikube 會修改您的環境,以便您可以使用現有的 Kubectl 安裝連接到您的集群。它將minikube
向您的文件添加一個KUBECONFIG
針對您的 Minikube 集群的上下文。
Minikube 還包含一個捆綁版本的 Kubectl,您可以使用minikube kubectl
命令訪問它。如果您尚未安裝 Kubectl,或者您現有的二進製文件與您的 Minikube 集群版本不同,這將非常有用。
# Uses the Kubectl version that's bundled with Minikube
$ minikube kubectl get pods
在本教程的其餘部分,我們將展示一個簡單的kubectl
命令,並假設它以您的 Minikube 集群為目標。您可以設置一個 shell 別名來使用 Minikube 相關的 Kubectl,每次不帶前綴minikube
:
$ alias kubectl="minikube kubectl"
現在 Minikube live 和 Kubectl 可用,您可以將應用程序添加到 Kubernetes 集群:
$ kubectl create deployment nginx --image=nginx:latest
deployment.apps/nginx 創建
$ kubectl expose deployment nginx --type=LoadBalancer --port=80
service/nginx exposed
該命令minikube service
提供服務的公共 URL:
$ minikube service nginx --url
http://192.168.49.2:31599
將 URL 粘貼到您的 Web 瀏覽器中(或運行不帶--url
標誌的命令)以查看您的服務。
訪問 Kubernetes 控制面板
Minikube 提供 Kubernetes Dashboard 作為可選的內置功能。運行minikube dashboard
命令以加載儀表板組件並在新的瀏覽器選項卡中啟動界面。
您可以使用儀表板來管理您的資源並可視化它們的活動。與控制面板交互時,將命令保留minikube dashboard
在終端中。完成後,使用 Ctrl+C 結束命令。
啟用映像註冊表
Minikube 包含一個鏡像註冊表作為可選的附加功能。這允許您將容器鏡像存儲在 Minikube 中,使它們可用於在集群中部署。
首先啟用註冊表插件:
$ minikube addons enable registry
然後標記您的圖像以指向 Minikube 註冊表。minikube ip
註冊表正在偵聽命令提供的 IP 地址上的端口 5000 。
$ docker tag my-image:latest $(minikube ip):5000/my-image:latest
在提交之前,必須將 Docker 配置為接受 URL 作為不安全的註冊表。將其添加到文件insecure-registries
內的框中/etc/docker/daemon.json
,讓 Docker 允許 HTTP 訪問。
將 IP 地址替換為您的minikube ip
命令中指定的地址。systemctl restart docker
使用命令重新啟動 Docker 。
您現在可以將圖像提交到 Minikube 註冊表:
$ docker push $(minikube ip):5000/my-image:latest
在集群中的模塊可以使用此映像之前,必須完成最後一步。Minikube 容器運行時還必須配置為允許不安全的註冊表訪問。您可以通過啟用--insecure-registry
啟動標誌來啟用它minikube start
。IP 地址應與 Minikube 安裝的默認集群 IP 地址相關。您可以通過運行kubectl get services
並查看CLUSTER-IP
服務來獲得此信息kubernetes
。然後停止 Minikube 並使用附加標誌重新啟動它。
$ kubectl get service
名稱 類型 CLUSTER-IP EXTERNAL-IP PORT(S) 年齡
Kubernetes ClusterIP 10.96.0.1 <無> 443/TCP 63m
$ minikube stop
$ minikube start --insecure-registry 10.96.0.1/24
更改 Kubernetes 版本
Minikube 默認使用最新版本的 Kubernetes。要切換到特定版本,--kubernetes-version
請在啟動集群時啟用該標誌:
$ minikube start --kubernetes-version=v1.23.0
您可以通過創建多個單獨的配置文件同時運行多個集群,每個集群具有不同版本的 Kubernetes。該標誌--profile
為特定命令選擇目標配置文件。
$ minikube start --profile v1.22 --kubernetes-version=v1.22.0
$ minikube start --profile v1.23 --kubernetes-version=v1.23.0
$ minikube --profile v1.22 kubectl get pods
使用多個節點
Minikube 支持多個虛擬節點。這允許您測試應用程序如何跨可用節點擴展,而無需部署新的物理硬件。
此示例創建一個具有三個節點的集群:
$ minikube start --nodes 3
您可以通過使用 Kubectl 列出多個節點來驗證它們是否可用:
$ kubectl get nodes
姓名 狀態 角色 年齡 版本
minikube Ready control-plane,master 71m v1.23.3
minikube-m02 Ready <none> 71m v1.23.3
minikube-m03 Ready <none> 71m v1.23.3
啟用遠程訪問
Minikube 默認不接受傳入流量。它旨在供本地使用,並非旨在為外部請求提供服務。您仍然可以通過更改控制平面的偵聽地址來啟用對集群上工作負載的遠程訪問。只有在全面風險評估後才這樣做——您的網絡將對外界開放。
$ minikube start --listen-address=0.0.0.0
當您需要開放對特定服務的訪問時,端口轉發是一種更安全的解決方案。使用 Kubectl 命令port-forward
創建從主機端口到您的服務之一的路由:
$ kubectl port-forward service/nginx 8080:80
您現在可以訪問localhost:8080
以訪問本教程前面創建的 NGINX 服務。主機上的 8080 端口映射到服務的 80 端口。
刪除迷你立方體
Minikube 的優點之一是易於卸載。如果您認為 Minikube 不適合您,請運行delete
以下命令刪除它添加到系統中的所有內容:
$ minikube delete
一個破壞性較小的選項是minikube stop
停止您的集群,但保留所有資源不變。您可以使用該minikube start
命令重新啟動集群。
結論
Minikube 是一個獨立的 Kubernetes 發行版,它使用容器或虛擬化在本地機器上運行集群。它由上游 Kubernetes 項目維護。Minikube 是 Kubernetes 的全功能實現,包括 Kubernetes 儀表板、網絡支持、持久存儲和可互換的容器運行時。
您可以在官方文檔中了解更多關於 Minikube 的信息。或者,開始使用熟悉的 Kubectl 命令來管理您的集群並部署新的工作負載。您現在擁有一個功能齊全的本地 Kubernetes 環境來構建和測試您的應用程序。
發佈留言