在踏上偉大的學習旅程之前,工欲善其事,必先利其器,這句古語想必是大多數人首先想到的。學習新技術時,擁有正確的工具與環境能事半功倍,否則即便按照實作型教學中的每一步操作,也可能會因環境差異而遇到意想不到的錯誤。這樣的情況往往讓人挫折,讓學習的過程變得更加困難。
為了減少這樣的困擾,這個系列文章將致力於幫助讀者減少學習中的不確定變因。我將提供與教程完全一致的運行環境和安裝方式,確保你不會因為環境的差異而遇到不必要的阻礙,從而專注於技術本身的學習。
對於大多數 Docker 使用者來說,Docker Desktop 無疑是入門的首選工具。我也不例外,起初我認為 Docker Image 只能在官方推出的 Docker Desktop 上運行。然而,隨著我在工作中越來越依賴 Docker,Docker Desktop 的額外功能不斷增加,變得越來越臃腫,導致它佔用了越來越多的系統資源。最終,我的工作環境也開始明顯感受到 Docker Desktop 帶來的資源壓力。
幸運的是,我發現了 OrbStack,它讓我的容器運行效率顯著提升,同時大幅降低了資源成本。與 Docker Desktop 相比,OrbStack 更加輕量,幾乎無需額外的配置和資源管理,就能快速運行容器。
OrbStack 是一個專為 macOS 設計的工具,提供了一種快速簡單的方式來運行容器和 Linux 虛擬機。我認為它能夠滿足我們對容器運行的絕大多數需求,並且可以完全取代 Docker Desktop。OrbStack 不僅性能高效,還有一個極為簡潔的用戶界面,讓操作變得直觀而不繁瑣,沒有過多的干擾或額外的功能,專注於核心任務。
對於那些希望減少 Docker Desktop 所帶來的系統負擔、但又不想在容器管理上妥協的開發者來說,OrbStack 是一個不錯的選擇,它不僅能滿足容器運行需求,還能以更輕量的方式進行操作,從而提升整體工作效率。
OrbStack 主打的輕量和高效能絕非空談。根據官方測試數據,在相同環境下,OrbStack 的能源消耗僅為 Docker Desktop 的五分之一,這對於經常需要運行容器的開發者來說是一個顯著的優勢。這不僅減少了系統資源的佔用,還提升了整體的運行效率。
在我的實際使用中,OrbStack 的輕量特性得到了充分體現。啟動速度更快,運行過程中也幾乎感覺不到對系統的負擔。此外,它的低能源消耗讓我在長時間使用容器時電力損耗大幅減少,讓我親身使用 Mac 實際運作時,感到非常明顯的良好體驗。
OrbStack 還有一項值得推薦的功能,就是在 OrbStack 中每個容器都擁有一個獨立的域名,如 container-name.orb.local 或 service.project.orb.local。這使得我們可以輕易的存取各個容器,並不需要對於 localhost 的雜亂 port 號感到困惑。更方便的是他同樣能夠成為我們使用的 Kubernetes 本地域名 service.namespace.svc.cluster.local,並且開放自訂設定。
我們也可以在 Orbstack 上快速建立一個Linux 虛擬機。
OrbStack 是專門運作在 MacOS 上的 Swift 原生程式,可以透過 brew 安裝指令快速安裝:
brew install orbstack
本系列文內容運作版本為 1.7.0-rc2 (17302) & Kubernetes v1.29.2
OrbStack 內建的可以快速啟動一個輕量級的高效單節點 Kubernetes 叢集。並且帶有非常簡潔的 UI 介面,使用起來毫不拖泥帶水。
啟動和管理 OrbStack 中的 Kubernetes 叢集可以使用以下指令:
# Start
orb start k8s
# Stop
orb stop k8s
# Restart
orb restart k8s
# Delete
orb delete k8s
當我們執行了 orb start k8s 後的幾秒鐘內,一個完整的 Kubernetes 叢集沒意外就已經啟動完成。
> kubectl version
Client Version: v1.29.2
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
到此,我們已經為日後的學習歷程踏出成功的第一步!
在安裝完 Kubernetes 後,你是不是也跟我一樣有種磨拳擦掌、躍躍欲試的感覺。想到當初第一次安裝到 Kubernetes v1.20 的激動心情,到現在最新推出的 Kubernetes v1.31 版本,依然擁有太多值得學習的地方。Kubernetes 每年固定計畫的三次次要版本更新,並且官方僅保證最三個次要版本的維護修補,讓身為 Kubernetes 使用者的我們,必須不斷的學習來跟上他的腳步,在實務工作中,如何讓自己的服務不要處於停止維護的版本更是一個重要課題。
References: