本文同步刊登於個人技術部落格,有興趣關注更多 Kubernetes、DevOps 相關資源的讀者,請務必追蹤從零開始的軟體工程師之旅,喜歡的話幫我按讚分享、歡迎留言、或是許願想要看的文章。
如果有技術問題也可透過粉絲專頁 討論,技術方面諮詢免錢、需要動手做另計 XD。
這是原文完整版本。好讀版請見 Borg Omega and Kubernetes 前世今生摘要
完整英文原文請見 Borg, Omega, and Kubernetes - Lessons learned from three containermanagement systems over a decade
在 container 技術夯起來前,Google 已經做了 container 十幾年,過程中發展出需三套容器管理系統。雖然每一代系統的開發需求不同,但每一代都深受上一代影響。這篇文章描述 Google 開發這些系統時,學到的經驗。
第一套 container management 系統是 Borg,為了管理
原本分別是由 Babysitter 與 Global Work Queue 兩套系統分開管理。後者的架構深刻影響 Borg,但 Global Work Queue 專注於 batch job。
越來越多應用都在 Borg 上開發執行, Google 的應用與 infratructure 團隊開發許多工具與服務,形成 Borg 生態系。這些系統
這些生態系的開發基於 Google 不同團隊的需求,產生一個不同起源 (heterogeneous)、只針對各別需求的 (ad-hoc) 一堆不同系統,Borg 的使用者需要使用不同的程式語言與程序,來與這些系統互動。
Borg 仍然是 Google 主要的容器管理系統,因為他規模 (scale) 巨大,功能多樣,而且極度堅固 (robustness)。
Omega 是 Borg 的下一代,目的是改善 Borg 生態系的軟體工程。
Omega 承襲許多 Borg 測試成功的模式,但不同於 Borg,Omega 有完整的架構設計,整體更加一致。
許多 Omage 成功的創新也會被迭代回去 Borg 中。
第三套 Google 開發的容器管理系統是 Kubernetes,這時外界工程師也開始對 Linux 容器有興趣,而 Google 同時在開發並推展自己的公有雲架構。Kubernetes 在這樣的背景下構思並開發。
與 Borg 及 Omega 不同,Kubernetes 是開源軟體,不限於 Google 內部開發。
這篇文章描述 Google 從 Borg 到 Kubernetes 獲得的知識與經驗。
今天只是講古,知道 Kubernetes 的前世今生。文章重點在後面 XD
明日待續:Google 的容器開發經驗,應用導向的架構 (Application-oriented infrastructure)