2015 容器技術峰會學習筆記(一)

jopen 9年前發布 | 19K 次閱讀 Docker


【編者的話】2015 容器技術峰會剛過去不久,容器技術是一個怎樣的發展歷程? 大會上眾多業界大牛又講述了哪些跟容器相關的有趣的工具和案例呢? 本文作者作為與會聽眾,分享了自己的一些現場筆記和學習心得。

2015 容器技術峰會學習筆記(一)

就在昨天,我參加了在舊金山皇宮大酒店舉辦的總共700多人出席的2015容器技術峰會。的確,容器技術本身還很稚嫩,但是我想強調的一點是在此之前,它的前身(譯者注: LXC等技術)實際上已經有很長一段時間的發展歷史了。

這次峰會最有意思的一個部分莫過于聽到各種各樣的辛酸抗爭史了。他們講述了如何運用容器來克服現實世界中遇到的種種困難。這里面有很多也是我們在過去以及將來都實實在在能看到的,即容器技術為這個世界所帶來的改變。

這次真的學到不少!以下便是我想要分享的我個人從這次容器技術峰會學習和記錄的筆記的第一部分。

走向原生容器

Bryan Cantrill, Joyent

乍一聽到Joyent這個名詞,一般來說,人們更多的是想到它與Node.js之間的合作關系。而這一次,Joyent公司的CTO,Bryan Cantrill 來到這個平臺,講述了Joyent另外的一面:它所推出的SmartOS,Triton 及其在容器和虛擬化背后的一些技術發展史。

Bryan演講的核心內容在于闡述容器本身由來已久的歷史淵源。 它最早可以追溯到第7版Unix引入的chroot特性。你可以認為chroot算是容器世界里的 始祖 。它并不能很清晰的被界定為容器或者說它甚至就不是一個完整的容器,但是從chroot之中我們看到了容器世界未來的啟示錄。

Bryan 隨之講述了FreeBSD的Jails,以及Sun微系統嘗試過的Zones。他們被公認為是第一次“真正”意義上進軍到容器領域的相關技術。

如果想進一步了解這些內容,Bryan 建議可以看下“Solaris(2002)的虛擬化和命名空間隔離性”這篇論文。

文章概述了五項主要原則:安全性 > 隔離性 > 虛擬化 > 細粒度 (少量資源的分配) > 透明度(API在Zone內部對操作系統的操作和調用需要盡可能的和外面保持一致)。

接著,Bryan 把注意力轉向了硬件虛擬化。換句話說,也即是虛擬機。不出所料,他們也有一段有趣的發展歷史。Bryan 登陸了wayback machine,并且訪問了由IBM開發的 system 360 或者說 S/360。它算的上是一個歷史性的突破和改變,至此之后計算機才有了完整的CPU指令集。

當時,它的競爭對手(Honeywell)開發了一臺機器名為“解放者”。而Honeywell的機器在舊指令集的抽象虛擬化方面比360做的更加出色。這大概是硬件虛擬化戰爭里打響的第一槍吧。

快速切到Vmware在x86架構基礎上探索硬件虛擬化的歷程。我們至今仍然能夠看到它很多相同的弊端,就跟我們回頭去看“解放者”(我喜歡這個 名字)一樣。Cantrill 指出,虛擬機過低的資源利用率會是一個致命傷。它將是虛擬機本身自帶的特質,也往往會是其致命的缺陷。

Bryan 時常反思這一點。把大量的容器傻傻的運行在虛擬機(一個既有的非常丑陋 + 笨拙的解決方案)之上的做法也許會顯得十分呆板和怪異。

Docker 應該算是容器領域里最常被提及的名字。然而,它從何而來? 在Docker之前又是誰? Cantrill 先生娓娓道來。原來,Docker誕生于 DotCloud 公司,最早是他們一個內部的PaaS項目。他接著問了一些很尖銳的問題。容器不是一個新概念。為什么它會突然變得引人注目?Docker最大的不同之處在 于它把重點放在使得應用變得更易于開發,而不單單只是為了簡化部署。雖然,易于部署無疑是應用Docker的一個很好的附帶效果。

Bryan 隨后做出一個大膽的預測,“Docker將會取代apt,就像apt之前取代tar那樣。”,相比于傳統的應用依賴而言,Docker處理依賴的做法明顯更為優雅。

演講過程中他還插入了兩張名人的畫像。一位是 George Stephenson ,另外一位則是 Keith Tantlinger 。George Stephenson 定義了各種鐵軌的標準寬度。Keith Tantlinger則發明了堆疊和加固運輸集裝箱的扭鎖。這兩個發明大大提高了貿易和運輸效率。

Docker也正在做著非常相似的事情。容器的創建和管理因此被極大的簡化。那么,我們不禁再次問道,為什么選擇Docker? 原因即在于它實際上可以算是容器技術在標準化和易用性兩方面的一個完美結合。

Bryan認為這種標準和易用性將會催生出更多的容器類項目。隨著這樣的一扇扇大門被打開,最終也許會形成一個百花齊放的局面。

“我們將可以看到很多的轉變,事實上我們現在已經見證了一部分。“

在此基礎上,Bryan簡單的展示了一下他和他在Joyent的同僚一直以來努力耕耘的一些成果。Triton是Docker宿主機虛擬化的一種 手段。用他的話來說就是,”Triton 讓你可以通過一個集成了輕量的軟件定義網絡支持的彈性Docker宿主機集群來直接在裸機上安全的運行Linux容器。“ 真正的去虛擬機化!

如果你對Triton有點興趣的話,可以直接 去到 Joyent的官方網站去瀏覽參觀一下。

Bryan 最終用一個他自己的觀點結束了整場的演講:容器革命將會改變我們看待計算的方式。

容器,投產就緒

David Lester, 推ter

來自推特的David Lester緊接著來到了舞臺中央。他的演講內容重點放在闡述推特是怎樣從一個巨大的Ruby On Rails的代碼庫遷移到像Mesos和Aurora這樣的技術棧。可能對大多數人來說這也許還是一個很新的技術,但是它已經在推特內部實際經受住了4年 多的線上實戰考驗。

對于新手來說,Mesos 是什么? Mesos 最早是美國伯克利研究室的一個內部項目。它的目標在于提升資源的利用率并且容許軟件能以一種更細致的,彈性靈活的方式共享資源。

換句話說,在傳統的IT架構里,我們分配資源的計量單位是服務器。Mesos則允許更精細化的資源的切片和分割。底層的資源像CPU,內存等都被完全抽象化。像異構資源調度這樣的經典問題立刻消失無蹤。

回過頭來,我們知道,任何基礎架構層面的切換成本都是十分高昂的。那么是什么原因促使推特打算遷離Rails的呢?

業務尖峰

在天空之城播出的期間,一個特定的詞出現在其日文版里。日本的觀眾們不約而同的發推談論它,他們由此創造了一個推特上 每秒發推數 最高的歷史紀錄。Lester隨即發問道,你的基礎架構能夠承受多大的業務高峰流量? 現場人群中大部分人的反應更多的是不自然的挪了挪座位。

Lester指出,天空之城的這個故事是一個很好的不可預見的突發業務尖峰的案例。

在2010年,推特也見證了一個可以預見的業務尖峰。 FIFA世界杯 期間看到了許多的”失敗鯨“(推特錯誤頁面的專用術語)。一旦進球,人們便會發出大量的推文,也因此會造成服務器的過載和當機。

在這個時期,推特開始下定決心要做出一些改變。

解決方案

方案一: 在發生問題時投入更多的機器。( 在”天空之城“這樣的突發場景下不奏效)

方案二: 改善系統的可擴展性。

Dave 指出這里面也有一些核心條件必須滿足。推特由數百位工程師組成。他們需要的是一個妥善的解決方案,這個方案可以實現一個可擴展的智能基礎架構,但是同時也必須容許所有的工程師能夠依托其上繼續工作。

在這個領域里,將故障和開發的功能解耦會是一個很大的收益。額外地,微服務架構的設計也允許小團隊擁有技術棧中特定組件的完全主權。

推特的技術棧由Mesos,Aurora,Finagle組成

Dave說這促成了他們的最終設計方案。Mesos作為”數據中心的神經中樞“,它監測和調度資源,但是不會作出任何的決策。實際上,Mesos是在服務器節點和應用之間的一個很好的抽象層。

關于資源調度的決策者,Dave告訴我們,他們最終選擇了 Aurora 。它是一個調度器,你可以把它理解為是一個神經系統中大腦的角色。

最后,Dave介紹到 Finagle 是一個能夠幫助不同組件之間良好通信的解決方案。

盡管可愛的Lester先生展示了很多相關的優秀項目,他也同樣分享了一句忠告,”今天你聽到的所有項目,都會想著去統治世界。沒有人會愿意去做一個二等公民。“

換句話說,這些平臺沒有任何一個是中性的。講師們也不會分享其他的平臺。所有的嘉賓都偏向于告訴開發者們如何和他們所推崇的平臺去交互,Mesos,Kubernetes,Openstack,Docker等等。

Dave認為這些生態系統未來將會需要做出一些妥協并且最終能夠共同成長。具體到推特過去乃至將來對工具集的探索和建立而言,他們關注一些具象的指標。

首先,對于軟件而言,和哪一個抽象層集成最合適?

其次,對于開發者而言,什么才是最棒的接口模式?

面向未來的資源抽象和接口

推特目前的技術架構是一個調度-資源-分配的模型。Dave不認為這便是基礎架構的終極答案。他也不相信這個架構可以適配所有的業務場景。Mesos 抽象了整個數據中心。它使得整個數據中心看起來更像是一臺巨型計算機。這是多么的美好啊!

然而,我們也可以去看看其他的項目,像Kubernetes,Docker等等。這些也都是異常強大 + 高度可擴展的工具,他們也許會引領下一個時代的潮流。這不禁使得Dave提出了一些開放性的問題:

  • 關于這些代表未來趨勢的工具該如何克服遭遇的種種困難和障礙。
  • 在未來,統一的接口會是什么形式?
  • 命令行? 還是圖形界面? 每個領域對應最合適的是什么?
  • 他們在本地和在云環境下會是一樣的嗎? 許多的本地的工具在云環境下都不是那么受追捧,反之亦然。
  • 也許像Docker這樣的容器技術通過不斷的迭代,而最終將會承擔更多類似Mesos的職責。Swarm? 這只是一個開始。

Dave在演講的最后再次重申了自己的觀點,”每個人都想著統治世界。“ 他還認為,我們定義這些接口和抽象模型的方式決定了我們實現目標的快慢,那會是一個共同的更加美好的未來。

第一部分完。

原文鏈接: 2015 container summit notes and learnings part 1 (翻譯:吳佳興)

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!