最近 VMware 完成了對於容器技術廠商 Heptio 的收購,Heptio 由 Kubernetes 聯合創始人 Joe Beda 和 Craig McLuckie 于西雅圖共同創立,這兩位聯合創始人在 2014 年時就職于穀歌 Kubernetes 項目團隊,在開發 Kubernetes 的過程中發揮了關鍵作用,他們也被認為是 Kubernetes 核心創始人,在 Kubernetes 社區中一直都很活躍。很多人都不太瞭解 Heptio,它是一家會什麼樣的公司?收購 Heptio 又給 VMware 帶來了什麼呢?

 

Kubernetes 和 Heptio 名字的來歷

關於 Kubernetes 和 Heptio 這兩個名字的來歷,GeekWire 專門採訪了 Craig McLuckie 和 Joe Beda。McLuckie 解釋了 Kubernetes 是希臘單詞 “κυβερνήτης” 的發音,意思是“舵手”和“領航員”的意思,指引著集裝箱貨輪 (容器 Container 的另一個含意是集裝箱) 在雲計算和容器應用的海洋上航行。實際上你會發現,本文中所有跟 Kubernetes 相關的開源專案的名字都是跟航海有關的概念。

Kubernetes 在開源之前是 Google 內部的一個項目,內部代號 “Borg (柏格)”。柏格人是第4部星際旅行系列電視劇《星際旅行:航海家號 (Star Trek: Voyager)》中的宇宙種族,是星際旅行系列中最大的反派。不知道一開始為什麼取了一個反派的名字,專案組只好挑選了一個好的柏格人“7/9 (Seven of Nine)”來代表這個項目。沒看錯, 7/9 就是這個角色的名字,她是一個加入了聯邦星艦“航海家號”的柏格人。

 

當公開 Kubernetes 項目的時候,項目組有意繼續保留7這個元素,所以 Kubernetes 的圖示被設計成一個7邊形的舵輪。後來 Craig McLuckie 和 Joe Beda 創立 Heptio 時,他們採用了希臘詞首碼 “Hept” 來延續這個主題,在希臘語裡就是7的意思。除了這個首碼之外,在 Heptio 的圖示中也可以看到數位7的存在,只能說這些矽谷的程式猿們太極客了。

 

下面是一張《星際旅行:航海家號》的海報,宣傳照上的美女就是柏格人 7/9,想不到她跟 Kubernetes 和 Heptio 有著這麼深的淵源。

 

 

Heptio 有那些產品?

Kubernetes 總體上還是一種非常新的技術,雖然它給企業運行容器應用帶來了便利,但是在整體方案上還存在很多不完善之處,例如:如何對 Kubernetes 集群進行備份以滿足企業 RTO 和 RPO 的目標?如何合理地設置集群資源的存取控制許可權?如何及時對 Kubernetes 環境打補丁?所以 Heptio 的主要目標就是為企業部署 Kubernetes 環境提供資詢和支援服務,並且開發了一組開源工具來完善 Kubernetes 的整體解決方案。

 

Heptio Kubernetes Subscription

Heptio 的主打產品或者服務就是 Heptio Kubernetes Subscription (HKS),是為需要部署 Kubernetes 環境的使用者提供諮詢和支援服務。使用者可以根據自己的需要來靈活選擇 Kubernetes 平臺,如:EKS (Amazon Elastic Container Service for Kubernetes) 、GKE (Google Container Engine) 、AKS (Azure Kubernetes Service),或者是現場部署的 Kubernetes 環境。Heptio 利用自己創建的一組開源工具來幫助用戶管理這些 Kubernetes 集群,確保集群得到及時的補丁和更新,資料得到完整的備份,並且符合 CNCF (Cloud Native Computing Foundation) 的標準。HKS 當然也包含了技術支援服務,來回答和解決用戶在部署和使用 Kubernetes 環境中遇到的各種問題,以及關於 Kubernetes 環境的最佳實踐經驗。

 

 

Velero (原名 Ark)

Velero 是一個雲原生的災難恢復和資料移轉工具。Velero 是最近才取的名字,它是從 Heptio Ark 改名而來的。

為什麼要改名呢?因為最近才發現 Ark 這個名字已經被其他機構用掉了 (好尷尬),所以不得不另外取一個名字了。Heptio 在 Kubernetes 社區裡徵集了幾百個名字候選,最後選中了 Velero。就這個專案的內容而言,原來的 Ark 還是比較合適的,大家看到 Ark 的中文翻譯“方舟”就明白了。Velero 是西班牙語,是帆船的意思,非常符合 Kubernetes 社區的命名風格。方舟有更多災備方面的意思,而帆船意味著它能夠做更多的工作,實際上也更符合專案的實際情況,除了災備之外它還能做資料移轉,把容器應用從一個集群遷移到另一個集群。

Kubernetes 社區也發現了 Velero 的新用途:在兩個集群間克隆應用和命名空間,來創建一個臨時性的開發環境。Velero 的路線圖顯示將於2019年下半年發佈 1.0 版本,正在開發中的功能包括:為備份添加版本號、增強錯誤處理能力、修訂文檔和 API 規範等。

 

Contour

Contour 是一個 Kubernetes ingress controller 或者說負載等化器,它利用了 Envoy 專案來實現負載均衡。Envoy 是由 Lyft 提供的一個開源的邊緣和服務代理,以高性能、強壯性和靈活性而受到廣泛歡迎。

Contour 也提供了一個新的 ingress API (IngressRoute) ,這一設計拓展了 Kubernetes 中原始 Ingress API 的功能,在彌補一些原有缺陷的同時也帶來更好的用戶體驗。

Contour 是陸地上的等高線或海洋湖泊的等深線,也是跟導航有關的。

 

Sonobuoy

Sonobuoy 是一個診斷工具,它通過一致性測試 (conformance testing) 來快速瞭解 Kubernetes 集群的狀態。一致性測試用於檢查一個集群是否被正確地配置了,並且它的行為是否符合 Kubernetes 官方規定的規範。Sonobuoy 已經被雲原生計算基金會 CNCF 採納為一致性認證 (Certified Kubernetes Conformance Program) 的基礎性技術,這一認證是 Kubernetes 供應商一個重要的認證。

Sonobuoy 是 Sonar (聲納) 和 Buoy (浮標) 的合成詞,聲納浮標這個名字是不是很貼切?

 

 

Gimbal

 

Gimbal 是由 Heptio 和日本 Yahoo 的子公司 Actapio 合作開發的,Gimbal 也是一種負載等化器,它主要應用于多集群的環境,它不僅支持 Kubernetes 也支持 OpenStack 平臺, 所以它既能支援雲原生應用,也支援傳統的應用。

Gimbal 是平衡環或萬向節的意思,是陀螺儀、羅盤等導航設備的基本結構。

 

 

ksonnet

 

ksconnet 是 Heptio、Box、Microsoft 和 Bitnami 合作開發的一個工具,幫助開發人員在 Kubernetes 集群中配置和部署應用。開始的時候,ksconnect 將重點放在大規模應用部署上,這是通過橫跨多個應用的模式 (pattern) 來實現的。

ksconnet 是基於 JSON 的範本語言 Jsonnet 來構建的,這應該就是這個名字的由來:Jsonnet 的下一代。