久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

京東從 OpenStack 改用 Kubernetes 的始末

 張先民 2018-02-09

編者按:今天這篇文本是京東(JD.com)的基礎(chǔ)設(shè)施平臺部門團(tuán)隊撰寫的,,介紹了由OpenStack向Kubernetes轉(zhuǎn)變的過程。JD.com是中國最大的公司之一,,也是率先躋身于《財富》全球500強(qiáng)榜單的中國互聯(lián)網(wǎng)公司,。



構(gòu)建集群的歷史


物理機(jī)器的時代(2004年-2014年)


在2014年之前,我們公司的應(yīng)用程序都部署在物理機(jī)器上,。在物理機(jī)器時代,,為了給即將上線的應(yīng)用程序分配物理機(jī)器,我們平均需要等上一周的時間,。由于缺乏隔離機(jī)制,,應(yīng)用程序會彼此影響,導(dǎo)致了許多潛在風(fēng)險,。那時候,,每個物理機(jī)器上的Tomcat實例的平均數(shù)量至多9個。物理機(jī)器的資源嚴(yán)重浪費,,而且調(diào)度缺乏靈活性,。由于物理機(jī)器的故障,應(yīng)用程序遷移的時間要花數(shù)小時,。無法實現(xiàn)自動擴(kuò)展,。為了提高應(yīng)用程序部署的效率,我們開發(fā)了編譯-包裝,、自動化部署,、日志收集,、資源監(jiān)控及其他一些系統(tǒng),。


容器化時代(2014年-2016年)


2014年秋天,JD.COM的首席架構(gòu)師劉海峰領(lǐng)導(dǎo)的基礎(chǔ)設(shè)施平臺部門(IPD)尋求一種新的解決方法,。Docker進(jìn)入了我們的視線,。當(dāng)時,docker一直在不斷崛起,,但是還沒有完全成氣候,,而且在生產(chǎn)環(huán)境缺乏實踐經(jīng)驗。我們反復(fù)測試了docker。此外,,我們對docker進(jìn)行了定制,,解決了幾個問題,比如設(shè)備映射機(jī)制(device mapper)引起的系統(tǒng)崩潰和Linux內(nèi)核的一些缺陷,。我們還為docker添加了許多新的功能特性,,包括磁盤速度限制、容量管理和鏡像構(gòu)建中的層合并,,等等,。


為了適當(dāng)?shù)毓芾砣萜骷海覀冞x擇了OpenStack Novadocker驅(qū)動程序這種架構(gòu),。容器作為虛擬機(jī)來加以管理,。它名為第一代京東容器引擎平臺:JDOS1.0(京東數(shù)據(jù)中心操作系統(tǒng))。JDOS 1.0的主要用途是對基礎(chǔ)設(shè)施實行虛擬化,。此后,,所有應(yīng)用程序在容器里面運行,而不是在物理機(jī)器里面運行,。至于應(yīng)用程序的操作和維護(hù),,我們充分利用了現(xiàn)有的工具。開發(fā)人員在生產(chǎn)環(huán)境請求計算資源所花的時間由原來的一周縮短到了短短幾分鐘,。匯集計算資源后,,哪怕擴(kuò)展1000個容器都可以在短短幾秒內(nèi)完成。應(yīng)用程序?qū)嵗舜烁綦x開來,。應(yīng)用程序的平均部署密度和物理機(jī)器的利用率都提高了三倍,,這帶來了顯著的經(jīng)濟(jì)效益。


我們在每個IDC部署了集群,,并提供統(tǒng)一的全局API,,以支持跨IDC的部署。在我們的生產(chǎn)環(huán)境中,,單單一個OpenStack分布式容器集群中最多有10000個計算節(jié)點,,至少也有4000個計算節(jié)點。第一代容器引擎平臺(JDOS 1.0)成功地支持了2015年和2016年的開展的“6.18”和“11.11”促銷大活動,。到2016年11月,,投入運行的容器的數(shù)量就已經(jīng)有150000個。


“6.18”和“11.11”是JD.COM最受歡迎的兩次網(wǎng)上銷售大活動,,類似美國的黑色星期五促銷活動,。2016年11月11日完成的訂單達(dá)到了3000萬筆。


在開發(fā)和推廣JDOS 1.0的過程中,,應(yīng)用程序直接從物理機(jī)器遷移到了容器,。實際上,,JDOS 1.0是實現(xiàn)IaaS的系統(tǒng)。因此,,應(yīng)用程序的部署仍然高度依賴編譯-包裝和自動化部署工具,。然而,實施JDOS1.0非常有意義,。首先,,我們成功地將業(yè)務(wù)工作負(fù)載遷移到了容器中。其次,,我們對容器網(wǎng)絡(luò)和存儲有了深入的了解,,知道如何最充分地完善它們。最后,,所有的經(jīng)驗教訓(xùn)為我們開發(fā)一套全新的應(yīng)用程序容器平臺奠定了堅實的基礎(chǔ),。


新的容器引擎平臺(JDOS 2.0)


平臺架構(gòu)


JDOS 1.0的容器規(guī)模由2000個擴(kuò)大到100000后,我們推出了一個新的容器引擎平臺(JDOS 2.0),。JDOS 2.0的目的不僅僅是成為一種基礎(chǔ)設(shè)施管理平臺,,還成為一種面向應(yīng)用程序的容器引擎平臺。在JDOS 1.0和Kubernetes的基礎(chǔ)上,,JDOS 2.0 整合了JDOS 1.0的存儲和網(wǎng)絡(luò),,完成了持續(xù)集成/持續(xù)交付(CI/CD)的整個過程:從源代碼到鏡像,最后到部署,。另外,,JDOS 2.0提供了一站式服務(wù),比如日志,、監(jiān)控,、故障排除、終端和編排,。JDOS 2.0的平臺架構(gòu)如下所示,。



功能

產(chǎn)品

源代碼管理

Gitlab

容器工具

Docker

容器管理

Cane

容器引擎

Kubernetes

鏡像倉庫

Harbor

持續(xù)集成工具

Jenkins

日志管理

Logstash Elastic Search

監(jiān)控

Prometheus


在JDOS 2.0中,我們定義了兩層:系統(tǒng)和應(yīng)用程序,。系統(tǒng)由幾個應(yīng)用程序組成,,而應(yīng)用程序由幾個提供同樣服務(wù)的Pod組成。通常來說,,一個部門可以申請一個或多個直接對應(yīng)Kubernetes命名空間的系統(tǒng),。這意味著,同一系統(tǒng)的多個Pod會在同一命名空間里面,。


JDOS 2.0的大多數(shù)組件(GitLab/ Jenkins/ Harbor/Logstash/Elastic Search/Prometheus)也都實現(xiàn)了容器化,,部署在Kubernetes平臺上,。


一站式解決方案


  1. JDOS 2.0將docker鏡像作為實施持續(xù)集成和持續(xù)部署的核心,。

  2. 開發(fā)人員將代碼推送到git,。

  3. Git觸發(fā)jenkins主端,生成build任務(wù),。

  4. Jenkins主端調(diào)用Kubernetes,,生成jenkins從屬Pod。

  5. Jenkins從屬Pod獲取源代碼后,,編譯和包裝,。

  6. Jenkins從屬Pod將軟件包和Dockerfile發(fā)送到鏡像構(gòu)建節(jié)點。

  7. 鏡像構(gòu)建節(jié)點構(gòu)建鏡像,。

  8. 鏡像構(gòu)建節(jié)點將鏡像推送到鏡像倉庫Harbor,。

  9. 用戶創(chuàng)建或更新在不同區(qū)域的應(yīng)用程序Pod。


JDOS 1.0中的docker鏡像主要包含操作系統(tǒng)和應(yīng)用程序的運行時軟件堆棧,。所以,,應(yīng)用程序的部署仍然依賴自動部署和另外一些工具。而在JDOS 2.0中,,應(yīng)用程序的部署是在鏡像構(gòu)建過程中完成的,。而鏡像包含整個軟件堆棧,這包括應(yīng)用程序,。有了鏡像,,我們就能實現(xiàn)這個目標(biāo):讓應(yīng)用程序可以按設(shè)計的方式在任何一種環(huán)境中運行。



網(wǎng)絡(luò)和外部服務(wù)負(fù)載均衡


JDOS 2.0采用了JDOS 1.0的網(wǎng)絡(luò)解決方案,,它是與OpenStack Neutron的虛擬局域網(wǎng)(VLAN)模式一同實施的,。該解決方案讓容器之間能夠?qū)崿F(xiàn)高效的通信,因而它對公司里面的集群環(huán)境而言再理想不過,。每個Pod占據(jù)Neutron中的一個端口,,有獨立的IP地址?;谌萜骶W(wǎng)絡(luò)接口(CNI)標(biāo)準(zhǔn),,我們開發(fā)了一個新的項目:Cane,用于整合Kubernetes的核心組件kubelet和Neutron,。



與此同時,,Cane還負(fù)責(zé)管理Kubernetes中的負(fù)載均衡器(LoadBalancer)這項任務(wù)。LoadBalancer被創(chuàng)建/刪除/修改后,,Cane就會調(diào)用Neutron中l(wèi)baas服務(wù)的創(chuàng)建/刪除/修改接口,。此外,Cane項目中的Hades組件為Pod提供了內(nèi)部DNS解析服務(wù),。


Cane項目的源代碼目前已開發(fā)完成,,很快就會發(fā)布在GitHub上。


靈活調(diào)度


JDOS 2.0經(jīng)常訪問諸多應(yīng)用,,包括大數(shù)據(jù),、Web應(yīng)用,、深度學(xué)習(xí)和另外一些類型的應(yīng)用,采取了更多樣化,、更靈活的調(diào)度方法,。在一些IDC,我們嘗試性地混合部署了在線任務(wù)和離線任務(wù),。相比 JDOS 1.0,,總的資源利用率提高了大約30%。



結(jié)束語


Kubernetes的豐富功能讓我們得以更加關(guān)注平臺的整個生態(tài)系統(tǒng),,比如網(wǎng)絡(luò)性能,,而不是僅僅關(guān)注平臺本身。尤其是,,網(wǎng)站可靠性工程師(SRE)非常喜歡復(fù)制控制器的功能,。有了它,擴(kuò)展應(yīng)用程序就可以在短短幾秒內(nèi)實現(xiàn),。JDOS 2.0現(xiàn)在訪問大約20%的應(yīng)用,,部署的2個集群每天運行大概20000個Pod。我們計劃訪問公司中更多的應(yīng)用,,取代當(dāng)前的JDOS 1.0,。我們還很高興將這個過程中獲得的經(jīng)驗與業(yè)界同行交流。


感謝Kubernetes及其他開源項目的所有貢獻(xiàn)者,。

――JD.com的基礎(chǔ)設(shè)施平臺部門團(tuán)隊


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多