授人以魚不如授人以漁——時速云Docker&Kubernetes集錦
作者:佚名
2015年7月19日,北京——Docker & Kubernetes技術沙龍在海置創投大廈6層會議室舉行,本次活動由時速云主辦,來自各行業對Docker和Kubernetes感興趣的約130名技術人參加了此次活動。
2015年7月19日,北京——Docker & Kubernetes技術沙龍在海置創投大廈6層會議室舉行,本次活動由時速云主辦,來自各行業對Docker和Kubernetes感興趣的約130名技術人參加了此次活動。
Docker容器技術已在云計算市場中風靡一時了,而眾多主流供應商則面臨著技術落后的窘境。那么,是什么讓Docker容器技術變得如此受歡迎呢?對于剛入門的新手來說,容器技術可實現不同云計算之間應用程序的可移植性,以及提供了一個把應用程序拆分為分布式組件的方法。此外,用戶還可以管理和擴展這些容器成為集群。
在這樣的背景下,騰訊互聯網基礎服務運維負責人孫亮、Hyper聯合創始人&CTO王旭、時速云聯合創始人楊樂、搜狗應用云平臺高級工程師裴彤以及數人科技COO謝樂冰親臨現場,給現場聽眾帶來了精彩的技術分享。
本次技術沙龍由時速云聯合創始人王磊主持,對大家能在周末抽時間參加此次Docker & Kubernetes技術沙龍表示歡迎和衷心的感謝。
1.騰訊云——容器在社交網絡技術運營的應用
騰訊互聯網基礎服務運維負責人孫亮從無狀態服務器和運維體系、容器虛擬化實現,隔離和生產、Docker應用淺嘗這三個方面介紹了騰訊在社交網絡技術運營中對容器的應用。
在隔離方案的描述中,孫亮提到資源隔離主要是通過namespace進行環境隔離,通過cgroup進行資源隔離,而且他們禁用了swap交換空間,這樣可以將隔離做的更加徹底。對于網絡,他們主要使用的是Docker的bridge網絡方式,偶爾也會用到host網絡方式,而對于net這種網絡方式基本不會使用,因為在IP獲取方面存在一定的難度。對于內核增強方面,他們將CPU、內存做到了對子機不可見,因為這樣可以兼容網管監控,并且為了防止母機進程數過多,他們限制了子機的進程總數。
***,在簡單介紹“推薦騰訊虛擬機Docker平臺——GAIA”的整體架構后,有位同學問到了騰訊云中Docker容器的熱遷移是怎么實現的,孫亮解答說關鍵點在于解決了文件拷貝速度的問題。
2.Hyper——Hyper:用虛擬機作為Pod的邊界
Hyper的CTO王旭首先介紹Docker是由Container(LXC)加上Layered Image(AUFS)構成的一個以應用為核心的工具,他對Docker的理解是一個應用以及這個應用所需環境的封裝。由此,他引出了Hyper是由Hypervisor加上Docker Image構成的一種以應用為中心的虛擬化,Hyper直接在hypervisor上啟動容器。
接著,王旭給大家展示了Hyper的性能和開銷,雖然啟動時間沒有達到Docker容器的水平,但是相對于虛擬機的啟動速度來說快了很多,大概是350到500ms。對于Hyper的主要工作方式,他介紹到Hyper減少了虛擬機這一中間層(現在大家基本是在虛擬機之上運行Docker),使用Pod將相關的容器一次性都啟起來,讓這些容器共享IPC和Netns,這樣這些相關的容器就具備了很好的通信性能。
***,王旭介紹了HyperStack,這個集Kubernetes、Hyper、Neutron和Openstack為一體的工具,并表示他對CaaS將成為下一個云計算主流的平臺的信心。
3.時速云——Kubernetes分布式容器集群管理的利器
時速云聯合創始人楊樂以容器集群管理模型為切入點,介紹了Kubernetes的目的就是為了管理容器集群,包括資源調度、生命周期、健康檢查、實例伸縮模塊等。Kubernetes可以見母機集群組成一個大的資源池,通過資源調度模塊進行資源的分配。同時,將母機集群組成了一個整體的SDN虛擬網絡,為容器提供了跨機通信,而從提供了容器的跨機服務。
接著,楊樂給大家詳細介紹了Kubernetes的基本概念,包括Pod、RC(Replication Controller)、Services和Label。***,他談到了Kubernetes的優勢及特征,主要是解決了Docker上的一些不足,主要是:
網絡模型上,做到容器的跨主機互通,建立了一個整體的SDN虛擬網絡,使用NAT做內網映射;
服務發現上,主要是通過設置環境變量和安裝插件;
資源限制上,主要是限制了Docker的CPU、內存等資源;
存儲上,主要是解決了Pod重啟數據丟失和同一Pod中容器共享存儲的問題。
4.搜狗——把Docker打造成虛機
搜狗應用云平臺高級工程師裴彤在介紹完自己之后,以“鐵路軌距的故事”作為引子,引出了搜狗工程師們對Docker的一些看法,即Docker的理念很前衛,但是不適合現有的開發和運維,不能兼容一些平臺及工具,所以,他們想將Docker打造成一種虛擬機,從而可以從傳統虛擬機平滑地過渡到Docker上。
接著,裴彤介紹了從Docker變成虛擬機的整個過程,主要包括:
(1)將Container加入到虛擬機的cgroup中;
(2)網絡上,使用自定義的bridge,將Container的網絡方式設置為none,然后自己指定container的IP、子網掩碼和網關,并將這些配置寫到Docker env中,***創建veth pair,打通網橋和container之間的通信;
(3)存儲上,使用宿主機的本地存儲,利用cgroup對lv卷進行iops、bps的限制;
(4)對于Metrics信息,分為兩方面。一方面,對于CPU和內存的相關信息從cgroup中進行收集;另一方面,對于網卡流量,從宿主機的/proc/net/dev上手機Container veth pair對端的流量,由于veth pair的特性,對端流入流量即為Container流出流量,而對端的流出流量即為Container的流入流量。
“有了虛擬機后,就可以進行集群的構建,主要是使用數據庫記錄宿主機、虛擬機和IP資源池等信息,然后編寫程序進行虛擬機的增刪改查以及IP的動態分配,從而構建了一個IaaS平臺”裴彤介紹說,基于這個IaaS平臺,可以進行以下三種用途:
(1)替代部分KVM虛擬機;
(2)構造一個PaaS平臺,從應用視角出發,對Docker虛擬機進行組織管理;
(3)構建MySQL數據庫云。
5.數人科技——微服務實踐:構建分布式爬蟲系統
數人科技COO謝樂冰主要是以一個項目經理的角度介紹了他們的分布式爬蟲系統。首先,他介紹了分布式和微服務的有點,主要包括:
(1)特定模塊單獨開發與測試;
(2)容器對特定模塊進行橫向擴張;
(3)服務(及代碼)的可重用;
(4)離線與在線可以混合部署。
在介紹完分布式爬蟲系統的CheckList(包括服務單元功能單一、計算模塊要做到“無狀態”、任何服務不能單點必須做成集群、模塊間接口盡量異步、分布式配置管理以及各個層面的監控與日志方案)后,謝樂冰給我們分享了一個經驗。
“不要在一個Container中加載一個過重的進程,可以將這個進程解耦成多個輕量的進程,分別運行在不同的Container中,因為Container本身就是比較輕量的,所以盡量讓Container中運行輕量的進程。”
***,謝樂冰以“朝陽區群眾”為例,提出日志與監控的重要性,并介紹了分布式爬蟲系統中的日志與監控。
責任編輯:wangpeng
來源:
時速云