本文發表於一年多前。舊文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
Minikube:輕鬆在本地執行 Kubernetes
編者按:這是關於 Kubernetes 1.3 新功能系列深度文章的第一篇。
雖然 Kubernetes 是當今管理容器化應用程式的最佳工具之一,並且已經生產就緒一年多,但 Kubernetes 一直缺少一個優秀的本地開發平臺。
在過去的幾個月裡,我們 Kubernetes 社群的幾位成員一直在 GitHub 上的 Minikube 倉庫中致力於解決這個問題。我們的目標是構建一個易於使用、高保真度的 Kubernetes 發行版,可以在 Mac、Linux 和 Windows 工作站和筆記型電腦上透過單個命令在本地執行。
在社群成員的大力幫助下,我們很自豪地宣佈 Minikube 的正式釋出。此版本支援 Kubernetes 1.3,提供了更方便與本地叢集互動的新命令,以及對 xhyve (macOS 上) 和 KVM (Linux 上) 的實驗性驅動程式。
使用 Minikube
Minikube 作為獨立的 Go 二進位制檔案釋出,因此安裝它就像下載 Minikube 並將其放入您的路徑一樣簡單。
Minikube 目前需要您安裝 VirtualBox,您可以在此處下載。
_(這是針對 Mac 的,對於 Linux,請將“minikube-darwin-amd64”替換為“minikube-linux-amd64”)_curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/_
要啟動 Minikube 中的 Kubernetes 叢集,請使用 minikube start
命令。
$ minikube start
Starting local Kubernetes cluster...
Kubernetes is available at https://192.168.99.100:443
Kubectl is now configured to use the cluster
此時,您的筆記型電腦上已經運行了一個單節點 Kubernetes 叢集!Minikube 還會為您配置 kubectl
,因此您也無需更改即可執行容器。
Minikube 會建立一個路由到您節點的僅主機網路介面。要與正在執行的 Pod 或服務進行互動,您應該透過此地址傳送流量。要查詢此地址,您可以使用 minikube ip
命令。
Minikube 還附帶了 Kubernetes Dashboard。要在瀏覽器中開啟它,您可以使用內建的 minikube dashboard
命令。
一般來說,Minikube 支援您期望從 Kubernetes 叢集獲得的一切。您可以使用 kubectl exec
在叢集中的 Pod 內獲取 bash shell。您可以使用 kubectl port-forward
和 kubectl proxy
命令將流量從 localhost 轉發到 Pod 或 API 伺服器。
由於 Minikube 是在本地執行而不是在雲提供商上執行,因此某些特定於提供商的功能(如 LoadBalancers 和 PersistentVolumes)將無法直接使用。但是,您可以使用 NodePort LoadBalancers 和 HostPath PersistentVolumes。
架構
Minikube 基於 Docker 的 libmachine 構建,並利用驅動程式模型來建立、管理和與本地執行的虛擬機器進行互動。
RedSpread 慷慨地將其 localkube 程式碼庫捐贈給了 Minikube 倉庫,我們用它在虛擬機器內部啟動一個單程序 Kubernetes 叢集。Localkube 將 etcd、DNS、Kubelet 和所有 Kubernetes Master 元件捆綁到一個 Go 二進位制檔案中,並透過獨立的 goroutine 執行它們。
即將推出的功能
到目前為止,Minikube 的開發工作非常有趣,我們一直在尋求改進 Minikube,以提供更好的 Kubernetes 開發體驗。如果您有任何功能想法,請隨時在問題跟蹤器中告訴我們。
以下是我們希望儘快新增到 Minikube 的一些功能列表:
- 對 macOS 和 Windows 的原生管理程式支援
- 我們計劃移除對 Virtualbox 的依賴,並與 macOS 和 Windows 中包含的原生管理程式(分別為 Hypervisor.framework 和 Hyper-v)整合。
- 改進對 Kubernetes 功能的支援
- 我們計劃增加支援的 Kubernetes 功能範圍,包括 Ingress 等功能。
- 可配置的 Kubernetes 版本
- 目前 Minikube 僅支援 Kubernetes 1.3。我們計劃增加對使用者可配置的 Kubernetes 版本的支援,以便更輕鬆地在您的筆記型電腦上匹配您在生產環境中執行的版本。
社群
我們很樂意聽取您對 Minikube 的反饋。加入社群:
請嘗試使用 Minikube,並告訴我們您的使用體驗!