導讀:6 月 1 ~ 2 日,GIAC 全球網際網路架構大會將於深圳舉行。GIAC 是一個面向架構師、技術負責人及高階技術從業人員的技術架構大會。今年的 GIAC 已經有騰訊、阿裡巴巴、百度、今日頭條、科大訊飛、新浪微博、小米、美圖、Oracle、鏈家、唯品會、京東、餓了麼、美團點評、羅輯思維、ofo 等公司專家出席。
在大會前夕,高可用架構採訪了本屆 GIAC容器及虛擬化分論壇 出品人王旭,就目大家廣泛關註的容器和虛擬化方面的問題進行了訪談。
王旭 Hyper Cofounder 與 CTO,HyperContainer 專案的最初作者,kata containers 專案 Arch committee 初始成員。曾就職於中國移動研究院,是大雲專案最初核心成員之一,並負責協調中國移動雲端計算方面的開源與標準化工作。之後在盛大雲端計算負責彈性塊儲存服務。2015 年創立 Hyper 虛擬化容器專案,2017 年與 Intel 和 OpenStack foundation一起發起 kata containers 專案。同時也是一位 Linux, 雲端計算、大資料等領域的作/譯者。
高可用架構:你們當初是如何想到要做 HyperContainer 這樣一個專案的?到後來的 Kata Container,它們是什麼樣的關係? 可否簡單給大家解釋下,虛擬化容器和虛擬機器以及容器有什麼關係和差異?
王旭:首先說緣起,當 Docker 開始崛起的時候,很多人都意識到,這並非傳統意義上的容器(Linux Container),而是代表了一種新的應用封裝方式——將應用所依賴的所有使用者態內容完整打包,從而使之具有極強的自完備性。正如 Docker 的座右銘“Build, Ship, Run” 所諭示的,這是一個自完備的運維流程,擺脫了應用部署對作業系統環境的依賴,也極大降低了 DevOps 的複雜度。這一方面讓運維的工作被極大簡化,因而收到追捧,另一方面對傳統運維又有很強的顛覆性,從而帶來一系列震動。
毫無疑問,作為一種應用容器技術,Docker 所代表的是未來的方向,而同時,雲是另一個“大勢所趨”,所以自然地,在雲上執行容器也將是眾望所歸的。讓容器成為一等公民跑上雲,這之中還缺少的一環就是隔離性,容器和宿主機之間的互動介面是作業系統 ABI,這一方面非常通用化,另一方面卻使得攻擊面過寬(Linux 有超過300個系統呼叫),從而使得人們無法承擔這之中的安全風險。加固容器固然是一種思路,但本身從方法論上來說有一定困難,我們嘗試了另一種思路——用虛機來做一種容器,只要在另一方面最佳化到足夠的效能,就可以起到隔離的容器的效果,這就是 HyperContainer。
與 Hyper 同時,intel 在同一個星期(2015年5月)也釋出了他們的類似專案 clear container,從此兩個專案彼此獨立發展了兩年,在這兩年中,彼此借鑒了一些對方的長處,clear container 甚至在後來使用了 hypercontainer 的虛機中的 agent —— hyperstart。最終,在2017年年底的 KubeCon 上,我們宣佈把兩個專案合二為一,成為 KataContainers,也方便使用者採納虛擬化容器技術。
在這裡,虛擬化容器是使用虛擬機器技術來承載的容器,並未像傳統虛機一樣執行完整的作業系統。從系統管理員看,它們是虛擬機器,而從應用來看,它們就是普通的容器。
高可用架構:Google 前一段時間釋出了 gVistor,也是基於虛擬化技術的容器,它和 Kata Container 是競爭對手嗎?二者的特性以及架構上有什麼異同?
王旭:先說異同,gVisor 並不完全是基於虛擬化技術的容器,它也可以不基於虛擬化技術。它的機制是利用 syscall 攔截、獨立 kernel 進行 syscall 處理、過濾,並將部分 syscall 交給宿主機執行。也就是說,gVisor 作為一個容器,它嚮應用提供的介面是 Linux ABI (gVisor 獨立實現了大約2/3的 syscall,儘量和 linux 核心相容),而向宿主方面,則會有六十多個 Linux syscall。也就是說它的核心是 syscall 的翻譯、處理和轉移執行。相對於 Kata Containers
-
gVisor 在資源管理的動態性上有先天優勢,因為它的記憶體管理是交給宿主來完成的。
-
Kata Containers 在對 image 的相容性、通用性方面有先天優勢,因為 gVisor 並沒有一個真的 Linux 核心。
-
對於 syscall 比較多的應用,比如 IO 繁重的應用,gVisor 的 syscall 捕獲工作方式會帶來一定的開銷,具體開銷的大小由使用的捕獲方式決定。
可以看到,兩種技術側重點並不重疊,但 gVisor 帶來的好處是讓更多的人認識到,容器的隔離性開始有了更多成熟的解決方案,容器可以開始成為多租戶環境的一等公民了。因此,我們是非常樂於見到更多的隔離容器技術出現的,所以,在gVisor 官方部落格中,我給了這些祝福語——Hyper 非常高興看到 gVisor 這樣全新的提高容器隔離性的方法。行業需要一個強大的安全容器技術生態系統,我們期待透過與 gVisor 的合作讓安全容器成為主流。
高可用架構:KubeCon Europe 2018 剛剛結束,你覺得有哪些新的亮點可以和大家分享的?
王旭:KubeCon 中,實際上我們用了很多時間來和 gVisor 團隊、Kubernetes Node 團隊進行了面對面的溝通,更多瞭解彼此的優勢、期望,這些已經在上面的回答中提現了。這次峰會中,我們看到容器環境的隔離性得到了前所未有的重視,也看到 Kubernetes 作為一個平臺,對定製化、外掛化的支援日臻完善,Kubernetes 正在成為一個更加成熟和完善可依賴的生態系統。
高可用架構:Serverless 是雲端計算領域的一個新熱點,你如何看待 Serverless 以及它和容器的關係?如果 Serverless 逐漸普及,容器變成 Serverless 後面的支撐,對開發者透明,對容器會有什麼影響?
王旭:簡單地說,就我所見,Serverless 是大家追求的一種服務端應用的部署方式,service without server,從 PaaS 到 Serverless 是一脈相承的。而目前所見,對 Serverless 支援最好的技術就是容器——輕便快速,且開發部署方便,目前又有很好的平臺支援。
容器技術應該說不會完全走向幕後,就像是虛機乃至物理機的使用都不會就此消失一樣,然而,走向幕後並不意味著黯然落幕,正如泛在計算的先賢 Mark Weiser 在 1991 年展望 21 世紀的計算技術時所說——“The most profound technologies are those that disappear. They weave themselves into the fabric of everyday life until they are indistinguishable from it.” (那些消失不見的技術才是最卓越的技術,因為他們已經深深融入到我們的日常生活之中,以至於我們無法從中尋出蹤跡。)
高可用架構:容器剛出現時,有容器和虛擬機器之爭。到現在,容器本身已經吸納了虛擬化技術,下一步會如何發展?容器以及 Kubernetes 技術的發展是否會動搖以傳統虛擬機器技術為基礎的公有雲的地位?
王旭:我個人認為,以容器為一等公民的公有雲應用將逐漸擴大,併成為公有雲的主流技術之一,但是,是以直接的容器執行方式,還是以 serverless 的方式,乃至其他方式展現給使用者,仍然要看整個產業發展的情況而定。而當前容器技術和虛擬化技術,乃至更多的隔離技術將會逐漸融合、互相影響,最終構成完成的容器圖譜(spectrum),更好的適應不同的場景。
高可用架構:最近看到釋出了 Hyper Pi https://hyper.sh/pi/, 能否簡單介紹一下這個服務?它相當於一個公有的 Kubernetes 服務?和現有的公有 Kubernetes 服務有什麼區別?看起來是使用者不需要關心 node,是否可以理解成所有使用者共享一個多租戶的 Kubernetes 叢集?
王旭:我們把 Hyper Pi 叫做 Serverless Kubernetes,取的是 Serverless 最初和 lambda 一起被提出的時候的願意—— service without server,也就是說,使用者使用服務,但不需要擁有(租賃)並管理伺服器,正如你描述的那樣,使用者不關心 node,只使用服務就可以了。目前 Pi 提供的是一個 Kubernetes API 的以 Pod/Service 為核心的子集,不過將來會逐步拓展。
相對於最初的 hyper.sh,Pi 一方面轉而提供目前已經更加成熟的 Kubernetes API,操作也以 Pod 為中心,允許使用者在同一個 Pod 之中執行多個 container;另一方面,隨著我們對執行時技術的改進,我們不再自己維護 IDC 中的物理機,轉而將平臺建在了 Google Cloud 之上,未來還會拓展到其他雲上。這一改變讓我們的服務具有更好的彈性、更能利用上已有雲服務商的網路接入條件,而對於在各大公有雲上儲存資料的使用者來說,這也加速了他們的訪問。
最後,所有使用者共享多租戶的 Kubernetes 叢集,這沒有錯,確實如此,而且實際上原來的 hyper.sh 雖然提供的 docker API,實際上也是由多租戶的 Kubernetes (我們稱之為 Hypernetes)來驅動的。
高可用架構:以你自己的工作以及創業的經驗來看,以開源方式創業有什麼優缺點或者差異?有什麼經驗想給大家分享?
王旭:開源創業在很大程度上只是創業的一種方式,既然是創業,技術、產品、市場都需要考慮,都需要付出,大家並沒有太大差別,開源並不比其他有什麼顯著的優越性或特別的地方。如果說有什麼差異性的話,開源的圈子裡,大家更加透明一些,不管是招人、瞭解專案還是社交圈子,都彼此更容易深入瞭解一些,從而在技術圈更容易交流一些,作為硬幣的另一面,因為比較透明,所以,商業方面就需要多費腦筋想出差異化和特別之處了。
高可用架構:對 GIAC 大會有什麼期望或者寄語?
王旭:謝謝大會給的這個交流的機會,期待在會上認識更多的朋友,獲得更多的靈感吧。
本文采訪編輯王淵命,技術原創及架構實踐文章,歡迎透過公眾號選單「聯絡我們」進行投稿。
本期 GIAC 大會上,容器與虛擬化部分的精彩議題如下:
參加 GIAC,盤點2018最新技術。點選“閱讀原文”瞭解大會更多詳情。