Alan Zeichick | 資深撰稿人 | 2025 年 9 月 5 日
Kubernetes 是一個開源平台,用於管理包含大量容器化服務的大型應用程式。Kubernetes 由 Google 工程師於 2014 年開發,並在不久後作為開源平台發布,現在是一個蓬勃發展的生態系統,幾乎受到每家雲端供應商的支援。Kubernetes 可用於管理使用微服務建置的雲端原生應用程式,以及在內部部署中或雲端執行的傳統應用程式。
Kubernetes 的強大功能之一是其自動化功能,可大幅減少跨網路管理應用程式所需的工作量。
Kubernetes 是一個開源系統,用於部署、管理與擴展容器化應用程式,特別是使用微服務撰寫的雲端原生應用程式。Kubernetes 有時縮寫為 K8s,它允許管理員將容器叢集在一起,使其更易於管理。
Kubernetes 的作用為何?首先,它會部署容器,這些容器包含完整的應用程式或應用程式的元件 (通常稱為服務)。這些容器會部署到伺服器上,這些伺服器可能位於雲端、內部部署、分散於多雲組態的多個雲端,或混合雲/內部部署組態中。
容器部署完成後,Kubernetes 會提供探索功能,使應用程式或服務能夠從其他容器中找到其所需的服務。Kubernetes 會將流量導向受其控制的正確資源。如果系統正在執行容器化應用程式或服務的多個複本,Kubernetes 會自動執行負載平衡 (通常是為了因應高需求)。
Kubernetes 的強大功能之一,在於它能以對部署有意義的方式,將容器分組。例如,它可以將共用相同儲存體與網路的數個容器組成一個 Pod - 這是您經常會看到的一個術語。另一個常見的術語是 Kubernetes 節點 (nodes)。這些是存放容器的獨立機器,可能是實體伺服器,也可能是傳統的虛擬機器。執行 Kubernetes 的節點集合 (即一組實體或虛擬容器) 稱為叢集 (cluster)。
對於每個容器、Pod、節點與叢集,Kubernetes 都會管理儲存體資源,偵測並重新啟動故障的容器 - 此程序稱為「修復 (healing)」,甚至針對特定的分散式應用程式全面實施安全性通訊協定。經過設定,它可以處理密碼、安全性符記與加密金鑰,從而更輕鬆地保護關鍵資產。
Kubernetes 平台的開發由 雲端原生運算基金會 (CNCF,Cloud Native Computing Foundation) 負責監督。
容器通常會取代另一種雲端部署模型:虛擬機器 (VM)。容器比虛擬機器更輕量,因為它們會使用主機伺服器的底層作業系統與裝置驅動程式。相比之下,虛擬機器較大且需要更多處理資源,因為每個虛擬機器都包含自己的作業系統。因此,一部伺服器可以執行的容器數量比虛擬機器更多;更重要的是,伺服器能將更多處理器與記憶體資源專門用來執行應用程式,而不是維護多個作業系統實例 (每部虛擬機器一個)。雖然在某些特殊情況下仍需使用虛擬機器,但對大多數雲端應用程式部署而言,容器提供了一種效率遠高於虛擬機器的模型。
雖然 Kubernetes 與容器相關,但最好將它們視為互補技術。Kubernetes 是容器的管理平台,通常用於數量達數百或數千個容器的大規模部署。容器本身會將功能 (無論是微服務或完整的應用程式) 所需的所有程式碼與相依項目放入單一可執行格式中。
Kubernetes 則是同時管理多個容器的工具,通常用於雲端。Kubernetes 有時也稱為雲端作業系統,因為它能讓組織大規模管理容器。
重點精華
Kubernetes 是一個能夠自動部署、調整規模並管理容器的平台。Kubernetes 還具備修復容器的能力 - 也就是偵測容器何時發生故障,並予以修正。Kubernetes 的核心在於協調:就像交響樂團的指揮家指揮樂手一樣,它清楚該做什麼、確保所有容器各就其位並正常運作,並在發生問題時採取行動。
正如指揮家需要同時參考鋼琴、小提琴、幾大提琴與銅管樂部的樂譜Kubernetes 也有一份文件來說明應用程式容器的預期狀態。此文件稱為組態檔 (configuration file),描述了使應用程式運作所需的功能,並指定哪些容器可以提供這些功能。組態檔還會列出可供應用程式容器使用的伺服器、儲存裝置、網路與其他實體機器。
啟動應用程式時,Kubernetes 會根據組態檔將必要的容器載入到可用的伺服器上,然後開始在這些容器內執行軟體。它會監控每部伺服器 (或節點) 的資源利用率,確保系統不會過載。如果過載,它會啟動新容器並停止舊容器,將容器移至負載較輕的伺服器。如果容器本身過載,Kubernetes 會在另一部伺服器上啟動該容器的相同複本,並自動配置負載平衡器,在兩者之間分配工作負載。隨著需求增加,它會啟動第三個容器,並視需要依此類推。稍後,如果工作負載減少,Kubernetes 會關閉任何不必要的容器,以協助降低成本,並釋放伺服器資源供其他任務使用。
容器發生故障時,Kubernetes 會迅速在另一部伺服器上啟動新容器,並將網路流量導離故障區域,提供快速的容錯移轉 (failover)。
想像您有一個需要數百或數千個容器的應用程式,每個容器都提供該應用程式所需的服務。系統管理員可以手動部署與管理容器 - 或許可以借助自動化工具,執行負載平衡或偵測故障等特定任務。事實上,甚至還有可用來管理小規模部署中容器的工具。這些工具最常由軟體開發人員與 DevOps 團隊在建置與測試容器化軟體時使用。
然而,如果沒有更完整的協調系統,系統管理的需求最終會變得令人難以負荷。
Kubernetes 的優點在於它是單一平台,可處理從部署容器、擴充規模到解決故障等各種自動化任務。此外,Kubernetes 是開源的且受到廣泛支援,包括所有主要的雲端供應商。簡而言之,它早已無所不在。這使得 Kubernetes 成為管理大型容器化企業應用程式的首選系統。
當組織決定將其應用程式容器化時,採用 Kubernetes 來協調這些容器顯然是明智之舉 - 尤其是考慮到其廣泛的效益。
開發 Kubernetes 的 Google 工程師之所以選擇此名稱,是基於古希臘文中「領航員」或「舵手」(也就是駕駛船隻的人) 一詞,因為它會移動並管理一整隊容器。就像真實的貨櫃船一樣,Kubernetes 依賴許多元件協同工作,將其貨物 (資料) 運送到需要的地方。以下是您在討論容器與 Kubernetes 協調平台時經常會遇到的術語。
Kubernetes 不僅是一個容器管理平台,更是一個精密複雜的協調工具,能夠自動化並簡化從設計、部署到生產使用的整個應用程式生命週期。其強大的功能集有助於高效管理複雜的分散式應用程式。以下是 Kubernetes 的一些關鍵功能:
Kubernetes 經過多年錘鍊,但其學習曲線仍然相當陡峭。儘管如此,花時間學習 Kubernetes,仍遠勝於使用其他方法來管理大型分散式應用程式。以下是需要考慮的幾項挑戰:
企業將 Kubernetes 用於多種類型的應用程式;您可以在電子商務、製造業、研究、金融、公用事業等各行各業中找到它的身影。許多使用容器的大型分散式應用程式,都能從 Kubernetes 的協調與自動化中獲益。以下是 Kubernetes 大放異彩的幾個常見案例:
Kubernetes 與 AI 的交集可以為企業帶來變革性的影響,因為 Kubernetes 可以在管理與協調雲端中的 AI 工作負載方面扮演關鍵角色。特別是,Kubernetes 為 AI 訓練與部署提供了一個強大且靈活的平台,提供以下幾項優勢:
過去十年 Kubernetes 的廣泛採用,催生了一個蓬勃發展的生態系統,包含工具、服務與支援技術。此生態系統進一步增強了 Kubernetes 的能力,為組織提供多樣化的選項來客製化其基礎架構與開發實務。此生態系統中的主要類別包括:
任何關於 Kubernetes 生態系統的討論,若不提及由雲端原生運算基金會 (CNCF) 主辦的 Kubernetes 開發人員與使用者年度會議 (KubeCon),都是不完整的。自 2015 年第一屆 KubeCon 召開 (當時有 500 名參與者以來),該活動已大幅成長。2024 年,鹽湖城會議吸引了超過 9,000 名開發人員與工程師。
Kubernetes 的最佳實務可以寫成一整本書 - 事實上,已經有許多書籍問世。毫無疑問:Kubernetes 十分複雜。然而,遵循這些最佳實務可以協助企業成功利用此平台。
OCI Kubernetes Engine (OKE) 是一項 Oracle 管理的容器調度服務,可以縮短建置雲端原生應用程式所需的時間與成本。OKE 有助於簡化大規模企業級 Kubernetes 的運作,讓您能夠透過自動擴充、修補與升級,輕鬆部署與管理資源密集型工作負載 (例如 AI)。OKE 提供:
Kubernetes 平台協調與自動化應用程式部署與管理的能力,已徹底改變了應用程式在雲端原生時代的執行方式。隨著 Kubernetes 持續演進並取得動能,它正變得更加重要。採用 Kubernetes 的企業可以獲得顯著的競爭優勢,因此瞭解這項技術對開發人員與業務領導者而言都至關重要。
Kubernetes 對雲端原生開發至關重要 - 這是打造更具韌性、可擴充性與敏捷性應用程式的關鍵,無論它們是在雲端、內部部署,或是在混合雲或多雲模型中執行。
為何 Kubernetes 是企業雲端策略的關鍵元件?
Kubernetes 至關重要,因為它是企業部署、擴充與管理其分散式應用程式 (特別是在雲端中執行的應用程式) 的方式。Kubernetes 自動化提升了應用程式的可靠性,同時也最大化了資源利用率,進而降低成本。
企業大規模採用 Kubernetes 時,應考慮哪些關鍵因素?
有主要兩個因素需要考慮。第一個是組織準備度:您的工程師與開發人員是否已準備好接受這種應用程式開發與部署模型?另一個是技術面:您是否擁有正確的架構方法,能以安全、穩定且符合管控要求的方式,設計與部署 Kubernetes 及容器?
企業大規模執行 Kubernetes 的主要成本考量為何?
Kubernetes 可以透過充分使用雲端資源,以及在不需要時釋放伺服器與儲存體等資源,協助降低成本。然而,在培訓、工具與最佳化網路及應用程式模型以充分利用可用資源方面,會產生相關成本。
企業如何確保從傳統基礎架構順利轉移到 Kubernetes?
這是一個巨大的轉變!首先,針對可能已在一個或相對少數容器中執行的小型應用程式導入 Kubernetes。請考慮從雲端架構的 Kubernetes 服務開始,由該服務代您管理資料平面,而不是嘗試自行學習、部署與操作所有不同的元素。嘗試進行升級、倒回、監控、故意製造故障等實驗,協助您的團隊獲得處理大型專案所需的經驗,例如將單體式應用程式重構為基於微服務的應用程式。