溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

基于 K8S 構(gòu)建數(shù)據(jù)中心操作系統(tǒng)

發(fā)布時間:2020-07-29 06:52:10 來源:網(wǎng)絡(luò) 閱讀:324 作者:七仙女很忙 欄目:云計算

在 12 月 22 日 ECUG 的下午場 ,七牛云容器計算部技術(shù)總監(jiān)袁曉沛為大家?guī)砹酥黝}為《基于 K8S 的 DCOS 之路》的精彩分享,向大家介紹了七牛容器云目前 K8S 的狀況和產(chǎn)品思考。

同時,他在會上講述了如何通過七牛公有云業(yè)務(wù)容器化的操作實踐,組建 K8S 翻譯團隊,對《Kubernetes in Action》這本書進行落地的翻譯。

?

以下是演講內(nèi)容的實錄整理。

?

基于 K8S 構(gòu)建數(shù)據(jù)中心操作系統(tǒng)cdn.xitu.io/2019/1/9/168308d167eaf92e?w=1920&h=1280&f=jpeg&s=797215">

?

大家下午好!我是七牛云容器計算部技術(shù)總監(jiān)袁曉沛, 我今天想分享的是七牛云基于 K8S 的 DCOS 之路,結(jié)合一些實踐經(jīng)驗,講一下我們在其中做的事情和產(chǎn)品層面的思考。

?

我今天會先講一下七牛云內(nèi)部業(yè)務(wù)容器化歷程,然后講基于 K8S 的 DCOS,七牛云在做一個更強大的 K8S 發(fā)行版,它體現(xiàn)在三個地方:一是底層技術(shù)的穩(wěn)定性。做一個更強大的 K8S,技術(shù)穩(wěn)定性是用戶第一時間關(guān)注的;二是功能的擴展性。如果一個系統(tǒng)不滿足需求時,就要考慮它的擴展性怎么樣,能不能基于開放性接口實現(xiàn);三是易用性。K8S 是非常復(fù)雜的系統(tǒng),如何保證它的運維、使用非常簡便,讓終端用戶可以快速入門。最后,會簡單介紹 K8S 周邊的生態(tài),包括上下游及應(yīng)用生態(tài),以及應(yīng)用生態(tài)豐富性。

?

七牛云內(nèi)部的容器歷程

?
基于 K8S 構(gòu)建數(shù)據(jù)中心操作系統(tǒng)

?

七牛云從 2014 年開始做容器,當時啟動的項目叫 QCOS,它的全稱是「Qiniu Cloud Operating System」。當時我們通讀了 K8S 的設(shè)計草案,我們認為自己有能力做這樣一個系統(tǒng)。然后我們從零開始自研了一套容器集群調(diào)度管理系統(tǒng),這個事情做了兩年。2016 年底時再回頭看,發(fā)現(xiàn)一個容器集群調(diào)度管理系統(tǒng)要做的事情非常多,要包含 CPU 和內(nèi)存調(diào)度(計算力調(diào)度)、網(wǎng)絡(luò)管理、存儲插件、應(yīng)用相關(guān)處理(日志、監(jiān)控、告警),這是一個非常大的系統(tǒng),幾乎沒有幾個公司有能力從零開始做這件事情。當時來看,唯一的可能性是谷歌,因為他們有一套 BORG 服務(wù)內(nèi)部多年,而 K8S 是由 BORG 系統(tǒng)設(shè)計理念演化過來的。于是我們在 2016 年底決定全面轉(zhuǎn)向 K8S,而且 100% 兼容 K8S。

?

現(xiàn)在是 2018 年底,我們近兩年做的是七牛云內(nèi)部的 5 大業(yè)務(wù) K8S 容器化:最早是測試系統(tǒng),現(xiàn)在七牛云的測試已經(jīng)全容器化;第二個是多媒體轉(zhuǎn)碼系統(tǒng),也是全容器化的;第三個業(yè)務(wù)是七牛云 AI 業(yè)務(wù),AI 有大量 GPU 機器,需要基于大量數(shù)據(jù)集做 AI 學習和訓練,所以我們是基于 Kubernetes 之上做了機器學習的平臺,我們?yōu)檫@個平臺做了很多擴展功能;第四個是大數(shù)據(jù),大數(shù)據(jù) Spark 業(yè)務(wù)在我們的容器應(yīng)用市場上,作為一個應(yīng)用,讓用戶可以快速部署。

?

我們在本季度正熱火朝天做一件事情,把七牛云最核心的對象存儲業(yè)務(wù)搬到容器云上,這個事情已初步驗證通過,正在切量過程中。到現(xiàn)在為止,七牛云的幾大業(yè)務(wù)線都有大量應(yīng)用運行在容器之上。從 2018 年下半年已經(jīng)對一些外部客戶輸出容器產(chǎn)品,結(jié)合七牛云過去五年容器化經(jīng)驗,把我們好的技術(shù)、理念、功能打造成產(chǎn)品開始對外輸出。

?

容器化帶來了什么

?

基于 K8S 構(gòu)建數(shù)據(jù)中心操作系統(tǒng)

?

容器化到底給我們業(yè)務(wù)帶來什么?

?

第一點,員工開心。交付部署效率大幅提升。原本從一行代碼的提交到測試再到生產(chǎn)的上線,可能需要幾天甚至幾周時間,而且上線之后可能會不穩(wěn)定要回滾,基于容器技術(shù),可以把整套過程用 CICD 和 DevOPS 理念整合到一起,一行代碼提交之后,可以讓這行代碼變更編譯成一個鏡像自動跑單元測試,跑完單元測試可以跑代碼靜態(tài)檢查,也可以加一些自定義腳本,然后集成測試,最后是 CD 持續(xù)部署,線上連接起來。發(fā)布周期可以從幾天、幾周到分鐘級甚至秒級。這個過程中,最簡單的變化是員工很開心,開發(fā)、測試、運維,都可以早點下班,不用等到凌晨四點業(yè)務(wù)低峰時發(fā)布。

?

第二點,用戶開心。運維排錯效率大幅提升。一個容器平臺默認就提供了容器的監(jiān)控,系統(tǒng)級別 CPU 和內(nèi)存監(jiān)控、入口級別的監(jiān)控報警,甚至日志也可以自動收集起來。一個寫得很一般的后端應(yīng)用運行起來之后,平臺都能為它提供一些基礎(chǔ)的日志監(jiān)控,如果業(yè)務(wù)做一些適配,業(yè)務(wù)級的監(jiān)控也可以被收集到,這些整合起來就是全鏈路的日志監(jiān)控和告警機制。如果線上出現(xiàn)問題,基于監(jiān)控日志和告警,可以大幅降低從錯誤發(fā)現(xiàn)到錯誤解決的時間,降低 MTTR ,提高應(yīng)用的可用性。應(yīng)用的可用性提高了,客戶受到的影響就會越來越小,本質(zhì)上來講是客戶更開心了。

?

第三點,老板開心。因為機器資源的利用率大幅提升。在一個數(shù)據(jù)中心里可以用一個 K8S 集群來管理所有物理資源,讓所有業(yè)務(wù)在一個計算資源大池子里做業(yè)務(wù)混部,然后利用率提升了,從原來不到 20% 的資源利用率,最高可以提升到 60%、70% 以上。對公司來講,降低了企業(yè) IT 成本。從這一點來看,沒有老板會不開心。

?

基于 K8S 的數(shù)據(jù)中心操作系統(tǒng)

?

做了這么多事,我們收獲了很多好處,然后就在思考我們本質(zhì)上在做什么事情。本質(zhì)上我們是在做一個數(shù)據(jù)中心操作系統(tǒng)。原來機房里一堆機器的管理,本質(zhì)上是通過機器 IP 再加一個 SSH 端口號,無論使用什么部署工具,都是把一些應(yīng)用推上去,更改配置,啟動這個應(yīng)用,是通過 IP 地址和 SSH 端口跟這些機器打交道。但有了容器之后,跟數(shù)據(jù)中心交互的接口完全發(fā)生了改變。我們使用編程化接口,操作和調(diào)度數(shù)據(jù)中心的 CPU 和內(nèi)存,不用在意業(yè)務(wù)到底被調(diào)度到哪一臺機器上,甚至可以用 API 的方式操作日志、監(jiān)控、報警。所以,我們是在做一個數(shù)據(jù)中心操作系統(tǒng)。

?

K8S 已經(jīng)是一個數(shù)據(jù)中心操作系統(tǒng)了,而我們是在做一個更強大的 K8S 發(fā)行版。

?
基于 K8S 構(gòu)建數(shù)據(jù)中心操作系統(tǒng)

?

更強大的 K8S 發(fā)行版,需要具備什么呢?

?

我們總結(jié)了三點:第一是底層技術(shù)的穩(wěn)定性,商業(yè)公司站在背后支持,保證技術(shù)是更穩(wěn)定的;第二是豐富的擴展功能;第三是易用性,對于平臺運維來講是否易部署、擴容、升級,對于終端用戶來講是否容易使用,都是至關(guān)重要的。此外,一個完善的操作系統(tǒng),除了自身功能之外,還需要提供必備的上下游服務(wù)和上層應(yīng)用。

?
基于 K8S 構(gòu)建數(shù)據(jù)中心操作系統(tǒng)

?

底層技術(shù)穩(wěn)定性方面,我們每天都在迭代。這是我們近一兩個月在做的事情,我們在網(wǎng)絡(luò)模型上,etcd 分離部署,與 K8S etcd 互相不影響,使用 etcd V3 API 作為數(shù)據(jù)庫,性能提升 2 倍;使用 BGP route refletor,關(guān)閉 Full Mesh,大幅提升性能。

?

基于 K8S 構(gòu)建數(shù)據(jù)中心操作系統(tǒng)

?

舉例說明,大家可能都不會太關(guān)注的點:KubeDNS,社區(qū)默認版本性能只有 99.5%,意味著不工作時候可能超過 3 個小時。我們做了一系列改進可以把 KubeDNS 可用性從 99.5% 提升到 99.999%,每個月不可用時間不超過 25 秒。實際上過去三個月不可用時間是 0。

?

有人可能會問七牛云為什么在這么小的事情上較真,做這么多事情。對容器云團隊來講,每一個組件都是這種心態(tài)做優(yōu)化。因為用戶打到七牛云的每一個請求,存在我們這里每一個文件,都是對我們的信任。我們對用戶有一個承諾,我們要讓系統(tǒng)盡無限可能接近 100% 的可用性。

?

基于 K8S 構(gòu)建數(shù)據(jù)中心操作系統(tǒng)

?

擴展方面,系統(tǒng)層面針對 Nvidia GPU 監(jiān)控和調(diào)度做了優(yōu)化,定制調(diào)度器確保 GPU 的調(diào)度性能,開發(fā)了 K8S 集成 AlluXIO 存儲插件,通過這個插件可以讓 AI 訓練使用 AlluXIO 緩存海量文件。第二,我們在靜態(tài)本地磁盤上啟動了一個新的 Kubernetes SIG,基于這個很多人可以一起貢獻代碼,把靜態(tài)本地磁盤供給做好。在網(wǎng)絡(luò)上基于 vlan/vxlan 實現(xiàn) SDN,支持二層網(wǎng)絡(luò)隔離。

?

基于 K8S 構(gòu)建數(shù)據(jù)中心操作系統(tǒng)

     ?

這是基于 CLI 的日志自動收集方案。主要原因是一個容器往往需要往多個目錄打日志。但按照容器標準,只能往標準輸出和標準錯誤里打日志,這樣很難收集擴展多個目錄的日志。CLI 是 Container Logging Interface 的縮寫,它讓整個方案能夠?qū)尤魏维F(xiàn)有的日志方案,比如可以對接七牛云的 Pandora,也可以支持 ELK、Splunk。

?

基于 K8S 構(gòu)建數(shù)據(jù)中心操作系統(tǒng)

?

這是日志收集方案的使用方式。

?

作為一個容器平臺或者數(shù)據(jù)中心操作系統(tǒng),很關(guān)鍵的一點是易用。

?
基于 K8S 構(gòu)建數(shù)據(jù)中心操作系統(tǒng)

 ?

平臺的運維很關(guān)鍵,很多容器產(chǎn)品關(guān)注的是這個產(chǎn)品很好用,但實際上容器平臺的運維更難,因為 K8S 管理著整個數(shù)據(jù)中心,業(yè)務(wù)大了之后,K8S 平臺自身的運維更重要。

?

第一是部署、擴容、升級的便捷性。我們的目標是 5 分鐘部署一個新集群,秒級擴容一個新節(jié)點。K8S 是開源生態(tài),開源有很多安全性問題,我們?nèi)绾卧谏壭掳姹緯r,讓當前集群上的業(yè)務(wù)不會影響,這是一個非常關(guān)鍵的因素。

?

第二是集群信息可視化,包括宿主機、系統(tǒng)關(guān)鍵組件,L7、L4 入口的監(jiān)控、日志、告警。如何通過平臺監(jiān)控信息發(fā)現(xiàn)機器或者系統(tǒng)組件、入口層面的問題,通過平臺快速定位業(yè)務(wù)問題,這都是集群可視化要做的事情。

?

第三是常見故障自動化處理,我們實現(xiàn)了一種機制,可以讓故障自動探測、一鍵解決。

?
基于 K8S 構(gòu)建數(shù)據(jù)中心操作系統(tǒng)

?

這是平臺運維管理界面。

?

基于 K8S 構(gòu)建數(shù)據(jù)中心操作系統(tǒng)

?

這是具有自動化運維處理機制的工具,每一臺節(jié)點上都會運行這個工具,它能做到自動化探測,插件方式都是自動化探測已知現(xiàn)象,把這些上報到 K8S api-server,采取措施自動修復(fù)一些問題。

?

基于 K8S 構(gòu)建數(shù)據(jù)中心操作系統(tǒng)

     ?

從用戶使用層面講易用性,我們是以項目為中心,對用戶有強大的管控能力。傳統(tǒng)項目都是先有虛擬項目再有人,然后是機器和軟件。我們完全按照這樣的方式管理項目,把 K8S 資源空間當做一堆資源,往項目里添加。項目里可能有項管、運維、測試、開發(fā),每一個不同的人決策權(quán)限不一樣。

?

然后是強大的應(yīng)用編排能力,很多 K8S 平臺為了追求編排的易用性而犧牲了兼容性,等用戶對這個平臺和 K8S 足夠熟悉之后,用戶可能就會要求平臺和 K8S 完全兼容,意味著通過 K8S API 創(chuàng)建的資源必須通過平臺顯現(xiàn)出來,或者通過平臺創(chuàng)建、編排的資源可以通過 K8S API 操作,正向和逆向都可以,所以我們產(chǎn)品 100% 兼容原生 K8S,并且兼容 kubectl。

?

最后一個是強大的鏡像空間管理能力,國外鏡像同步、鏡像加速、私有鏡像托管;C2I:基于代碼、單元測試、靜態(tài)檢查,構(gòu)建可交付鏡像;鏡像檢查,基于一些工具檢查鏡像,看它里面是否有存在安全風險的東西。

?

以上是用戶易用性上需要考慮的點。

?

基于 K8S 構(gòu)建數(shù)據(jù)中心操作系統(tǒng)

?

這是用戶使用產(chǎn)品的界面,應(yīng)用編排、應(yīng)用列表、應(yīng)用服務(wù)編排。

?
基于 K8S 構(gòu)建數(shù)據(jù)中心操作系統(tǒng)

?

一個強大的數(shù)據(jù)中心操作系統(tǒng),還需要一個比較完善的周邊生態(tài)。持續(xù)部署和 Kubernetes 打通,上面可以通過 HELM,右上角是 ISTIO,基于 ISTIO 做流量管理功能,比如灰度發(fā)布、熔斷、鏈路追蹤,幫我們快速發(fā)現(xiàn)問題。

?

基于 K8S 構(gòu)建數(shù)據(jù)中心操作系統(tǒng)

?

七牛云基于 K8S 實現(xiàn)了常見的數(shù)據(jù)庫中間件服務(wù),包含 MySQL、MongoDBRedis、RabbitMQ。這些運維工具本質(zhì)上就是由 Operator 實現(xiàn)的高可用服務(wù),支持一鍵部署,能做定期備份和恢復(fù),保證數(shù)據(jù)的可靠性。本質(zhì)上是把公有云的 RDS 服務(wù)搬到 K8S 上,讓非公有云用戶使用高質(zhì)量的數(shù)據(jù)庫服務(wù),大幅度減輕 DBA 的工作負擔。

?

基于 K8S 構(gòu)建數(shù)據(jù)中心操作系統(tǒng)

?

這是七牛云當前在 K8S 社區(qū)的全球排名,我們排第 26 名??赡軙腥藛?,到底有多少人在開源,我的回答是我們沒有一個人專職做開源,也沒有把做開源當成很刻意的事情,是在維護 K8S 的穩(wěn)定性、擴展功能、提高產(chǎn)品可用性的過程中,貢獻一些東西。因為我們受益于開源,所以這些改進,新的功能我們都盡量直接貢獻到開源。但我們不做三件事情:不去改拼寫錯誤、增加單元測試、改注釋。

?
基于 K8S 構(gòu)建數(shù)據(jù)中心操作系統(tǒng)

?

這是七牛容器云團隊和七牛云內(nèi)部一些小伙伴翻譯的一本書,書的名字是《Kubernetes in Action》(中文版購買鏈接:https://item.m.jd.com/product/12510666.html),主要教我們?nèi)绾卧?Kubernetes 上部署分布式容器應(yīng)用,這本書的作者是 Marko Luksa,他是紅帽 OpenShift 工程師,這本書由七牛云 CEO 老許親自作序。翻譯過程中,七牛容器云團隊根據(jù)實際應(yīng)用經(jīng)驗,把這本書翻譯得盡量準確,并且通俗易懂。

?

Kubernetes 是希臘文,本意是舵手,帶領(lǐng)一條船到達正確的地方,希望這本書像舵手一樣,能在大家學習 K8S 的過程中帶來一些幫助。

?
基于 K8S 構(gòu)建數(shù)據(jù)中心操作系統(tǒng)

(Marko Luksa 在 ECUG Con 2018 的現(xiàn)場分享片段)

?
關(guān)注公眾號:七牛云

?
點擊本文文末「閱讀原文」,獲取

?

基于 K8S 構(gòu)建數(shù)據(jù)中心操作系統(tǒng)
Marko Luksa

?

完整版精彩演講 DEMO!

(為保證視頻及時獲取,請將「提交成功」頁面截圖發(fā)送至公眾號后臺)

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI