Kubernetes 發行版領進門,Booking.com 自建平台靠個人
- 2020 年 2 月 20 日
- 筆記
- 創建新服務的時間從數天或數周減至10分鐘
- 採用平台的8個月創建了500項新服務
- 每天發佈數百個

行業:旅遊
地點:荷蘭
雲類型:私有
挑戰:速度
產品類型:安裝程序
使用的CNCF項目:Kubernetes、Prometheus、Envoy、Helm
挑戰
2016年,Booking.com遷至一個 OpenShift 平台,這一舉措讓產品開發者能夠更加快捷地進入基礎設施。但對於開發者來說,因為 Kubernetes 給抽象掉,出現挑戰時,基礎設施團隊就成為「知識瓶頸。」加大支持力度往往不可持續。
解決方案
運行OpenShift一年後,平台團隊決定建立自己的 Kubernetes 平台,要求開發者學習 Kubernetes 相關知識,以便日後使用。「這個平台可不能無師自通,」平台 Track B 開發者主管 Ben Tyler 說:「我們從來沒說過你閉着眼睛就能使用。開發者需要學習相關知識,我們也會盡全力為開發者提供渠道,保證他們獲取知識。」
影響
儘管需要學習過程,新的 Kubernetes 平台的採用呈現很大的增長。使用容器之前,如果開發者了解 Puppet,創建一項新的服務也要幾天時間,如果不了解,則需要數周時間。而在新的平台上,10分鐘就能搞定。在使用平台的前8個月中,創建的新服務約有500多項。
Booking.com 和 Kubernetes 淵源已久:2015年,旅遊平台上的一個團隊在 Mesos 和 Marathon 基礎上,構建了一個容器平台原型。
這項技術的強大給他們留下了深刻的印象,但在這個規模上,需要體現企業特點,網站平均每天處理150多萬個房間/晚預定,所以團隊最終決定採用 OpenShift 平台。
這個平台包裹在類似 Heroku 高級 CLI 界面中,「深受產品開發者青睞,」平台 Track B 開發者主管 Ben Tyler說,「我們能幫他們快速進入基礎設施。」
但是,他補充說:「稍微偏離軌道一點,開發者就會不知道如何自救了。」
運行這個平台一年之後,基礎設施團隊發現平台成了「知識瓶頸」,他說:「多數使用平台的開發者並不知道下面是 Kubernetes。應用程序和平台故障都和類似 Heroku 工具故障非常相似。」

提供必要的支持貌似不可行,也不可持續,平台團隊需要一個新的解決方案。在運行 OpenShift 平台過程中積累的 Kubernetes 知識給他們增加了信心,他們想建立一個自己的 Kubernetes 平台,定製化地滿足公司的需求。

「說到帶入情境,OpenShift 絕對好用。」平台 Track B 高級系統管理員 Eduard Iacoboaia 說,「它能展示這項技術的功能,更方便用戶使用。花點時間學習後,我們就明白需要更好地學習 Kubernetes,這樣才能充分發掘它的潛力。那時,我們做出了轉變,建立了自己的Kubernetes平台。搭建自己的平台,花點時間學習知識,從長期來看,我們是絕對受益的。」

Iacoboaia 的團隊定製了很多 OpenShift 工具用於 Booking.com,「這些集成點有些脆弱,」他說,「我們用更多的時間了解 Kubernetes 所有組件,它們的運行方式以及相互作用的方式等。」這項研究引導團隊從 OpenShift 的嵌入式 Ansible playbooks 轉向 Puppet 部署,後者用於 Booking 其他的基礎設施。控制平面也從集群內部轉移到了裸機上,因為該公司運行着數萬台裸機服務器和用於在裸機上運行應用程序的大型基礎設施。(Booking 在其進行計算的多個地區的多個數據中心的多個集群內運行 Kubernetes。)「我們決定儘可能簡化這些工具,使用我們最了解的那些,」Iacoboaia 說。
「我們的用戶學過 Kubernetes 之後,就成為更為成熟的 Kubernetes 用戶了。他們就會給我們施加壓力,讓我們提供更好更原來的 Kubernetes 體驗,這是件好事,給我們提供了超級有益的動力。」 — BOOKING.COM 平台 TRACK B 開發者主管 BEN TYLER
另一個比較大的變化是產品工程師也需要學習掌握 Kubernetes,這樣才能參與進來。「這個平台可不能無師自通,」 Tyler 說:「我們從來沒說過你閉着眼睛就能使用。開發者需要學習相關知識,我們也會盡全力為開發者提供渠道,保證他們獲取知識。」這些渠道包括培訓、博客文章、視頻和 Udemy 課程。
儘管需要學習過程,新的 Kubernetes 平台的採用呈現很大的增長。「我認為我們能夠成功是因為我們並沒有要求他們掌握一個私有的應用系統,」 Tyler 說,「我們讓他們學的東西是開源的,知識是可以自由轉讓的。他們學習 Kubernetes,就是在投資自己的職業發展。」
這個策略非常成功,有一點能夠充分證明:在支持頻道,用戶一旦提出任何問題,就會有產品工程師上線解決。「之前我從來沒見過哪個內部社區,能夠就某個平台產品提供這樣的社區參與式服務,」 Tyler 說,「顯然在公司外部,已經有了一個生態系統標準,這真是大有用處,所以大家會覺得花時間學習知識、再和別人分享很有價值。這樣就能產生巨大的影響。」
還有其他可以量化的證據表明:使用容器之前,如果開發者了解 Puppet,創建一項新的服務也要幾天時間,如果不了解,則需要數周時間。而在新的平台上,10分鐘就能搞定。「我們提供輔導材料,你跟着教程走,同時跑着代碼。然後就到了業務邏輯時間,」 Tyler 說,「這樣獲取資源的時間就大幅度縮短了。」在使用平台的8個月中,創建的新服務約有500多項,每天發佈的新服務都能達到上百個。
「說到帶入情境,OpenShift 絕對好用。它能展示這項技術的功能,更方便用戶使用。花點時間學習後,我們就明白需要更好地了解學習 Kubernetes,這樣才能充分發掘它的潛力。那時,我們做出了轉變,建立了自己的Kubernetes平台。搭建自己的平台,花點時間學習知識,從長期來看,我們是絕對受益的。」 — BOOKING.COM 平台 TRACK B 高級系統管理員 EDUARD IACOBOAIA
該平台能提供不同的「合同層級」 Tyler 描述道,「基礎就是 Kubernetes。如果你支持 Kubernetes,就能得到一個 Kubernetes API,就像你能從 GKE 或 AKS 得到的一樣。我們盡全力提供相同水準的產品。但在公司內部,我們所做的工作是要創造比基礎設施更大的價值,因此我們為我們的主要堆棧 Perl 和 Java 提供了一組基本鏡像。」
同時,「我們的用戶學過 Kubernetes 之後,就成為更為成熟的 Kubernetes 用戶了。他們就會給我們施加壓力,讓我們提供更好更原來的 Kubernetes 體驗,這是件好事,」 Tyler 說,「給我們提供了超級有益的動力。」
平台還包括其他 CNCF 技術,諸如 Envoy、Helm、Prometheus 等。Booking.com 的主要服務流量大多通過 Envoy 傳輸,Prometheus 主要用於監控基礎設施組件,Helm 作為打包標準使用。該團隊還開發並開源了 Shipper,作為 Kubernetes 的擴展,能加入更複雜的 rollout 策略和多集群編排。
當然,內部也曾經討論過從頭開始完全構建 Kubernetes 平台是否明智的問題。「這並不是我們的核心能力,Kubernetes 和旅遊業,相差的確有點遠,對吧?」 Tyler 說,「但我們可以保證 CNCF 組件運行真的非常好。特別是 Envoy 和 Kubernetes 真讓我們受益不少。之所以能夠定製它們,是因為我們能看到源代碼,也是因為它們都有擴展點,我們不需要改變內部範例,就能實現快速增值。」