亚洲综合伊人,成人欧美一区二区三区视频不卡,欧美日韩在线高清,日韩国产午夜一区二区三区,大胆美女艺术,一级毛片毛片**毛片毛片,你瞅啥图片

您當前的位置是:  首頁 > 新聞 > 國內(nèi) >
 首頁 > 新聞 > 國內(nèi) >

白皮書:OpenStack與容器的相遇相知(上)

2018-05-28 09:55:27   作者:   來源:開源云中文社區(qū)   評論:0  點擊:


  想象一下,你的任務(wù)是從頭開始構(gòu)建整個私有云基礎(chǔ)設(shè)施。預(yù)算有限 ,團隊不大,被要求創(chuàng)造一個奇跡。
  幾年前,你可以構(gòu)建一個在虛擬機中運行應(yīng)用程序的基礎(chǔ)設(shè)施,其中一些裸機用于傳統(tǒng)應(yīng)用程序。隨著基礎(chǔ)設(shè)施的發(fā)展,虛擬機(VM)實現(xiàn)了更高水平的效率和敏捷性,但單靠虛擬機并不能完全滿足敏捷應(yīng)用部署的需求。它們繼續(xù)作為運行許多應(yīng)用程序的基礎(chǔ),但越來越多的開發(fā)人員關(guān)注容器的發(fā)展趨勢,以更好地開發(fā)和部署應(yīng)用程序——因為容器提供了更高級別的敏捷性和效率。
  像Docker和Kubernetes這樣的容器技術(shù)正在成為構(gòu)建容器化應(yīng)用程序的主要標準。它們幫助企業(yè)擺脫了限制開發(fā)敏捷性的復雜性。容器、容器基礎(chǔ)設(shè)施和容器部署技術(shù)已經(jīng)被證明是非常強大的抽象,可以應(yīng)用于許多不同的用例。通過使用Kubernetes等技術(shù),企業(yè)可以交付一個僅使用容器交付應(yīng)用程序的云。
  但是領(lǐng)先的私有云不僅僅是容器,容器并不適合所有的工作負載和用例。現(xiàn)在,大多數(shù)私有云基礎(chǔ)設(shè)施都需要包含用于管理基礎(chǔ)設(shè)施的裸機、用于傳統(tǒng)應(yīng)用程序的虛擬機以及用于較新應(yīng)用程序的容器。支持、管理和協(xié)調(diào)這三種方法的能力是運營效率的關(guān)鍵。
  OpenStack目前是構(gòu)建私有云的最佳選擇,它能夠管理網(wǎng)絡(luò)、存儲和計算基礎(chǔ)設(shè)施,支持來自一個控制平面的虛擬機、裸機和容器。雖然Kubernetes可以說是最受歡迎的容器編排器,并且已經(jīng)改變了應(yīng)用程序交付的方式,但它取決于可靠的云基礎(chǔ)設(shè)施的可用性,而OpenStack為托管應(yīng)用程序提供了最全面的開源基礎(chǔ)設(shè)施。OpenStack的多租戶云基礎(chǔ)設(shè)施非常適合Kubernetes,擁有多個集成點、部署解決方案以及跨多個云聯(lián)合的能力。
  在本文中,我們將探討容器如何在OpenStack中工作,查看各種用例,并提供讓容器成為易于采用和使用的技術(shù)的OpenStack等開源項目的概述。
  OpenStack中容器的總體視圖
  容器和OpenStack的交匯有三個主要場景。
  第一個場景稱為基礎(chǔ)設(shè)施容器,允許運維者使用容器來改善云基礎(chǔ)設(shè)施的部署、管理和運維。在這種情況下,容器設(shè)置在裸機基礎(chǔ)設(shè)施上,并允許對主機資源進行特權(quán)訪問。這種訪問使它們能夠直接利用計算、網(wǎng)絡(luò)和存儲資源,容器運行時通常不為用戶所見。這些容器隔離了每個應(yīng)用程序所依賴的復雜的依賴關(guān)系集,同時允許基礎(chǔ)設(shè)施應(yīng)用程序直接管理和操作底層系統(tǒng)資源。當要升級服務(wù)時,可以在不改變依賴關(guān)系的情況下處理升級。
  新版本的OpenStack已經(jīng)接受了這種基礎(chǔ)設(shè)施容器模型,現(xiàn)在通常使用編排工具和容器化服務(wù)的組合來管理OpenStack部署的整個生命周期;A(chǔ)設(shè)施容器使運維者能夠使用容器編排技術(shù)來解決許多問題,特別是快速迭代/升級現(xiàn)有軟件(包括OpenStack)。在容器中運行OpenStack有助于解決時間要求較高的挑戰(zhàn),包括為服務(wù)添加新組件,快速升級軟件版本以及跨機器和數(shù)據(jù)中心快速滾動更新。這種方法將容器的敏捷性帶入了OpenStack的部署和升級。
  第二個場景是關(guān)于在云基礎(chǔ)設(shè)施上托管容器化的應(yīng)用程序框架。這可以包括Docker Swarm和Kubernetes等容器編排引擎(COE),或者更輕量級的容器專用服務(wù)和無服務(wù)器應(yīng)用程序編程接口(API)。無論是在裸機還是虛擬機上,OpenStack社區(qū)都致力于確保可以在安全的、租戶隔離的云主機上交付容器化應(yīng)用程序。驅(qū)動程序促進了這種場景,這些驅(qū)動程序允許像Kubernetes這樣的項目直接利用OpenStack API進行存儲、負載均衡和身份識別。它還包括用于按需提供托管Kubernetes集群和應(yīng)用程序容器的API。借助這些功能,開發(fā)團隊可以編寫新的容器化應(yīng)用程序,并在OpenStack云中快速提供Kubernetes集群。這是一個完整的應(yīng)用程序生命周期解決方案,提供開發(fā)、測試和調(diào)試代碼所需的資源,并通過強大的自動化功能將應(yīng)用程序部署到生產(chǎn)環(huán)境中。
  在最后一個場景中,我們考慮了獨立OpenStack和COE部署之間的交互,在本文特指Kubernetes集群?鏞penStack和Kubernetes集群的API的一致性和互操作性是此場景成功的關(guān)鍵。例如,Kubernetes可以直接連接到OpenStack Cinder托管卷,使用OpenStack Keystone作為授權(quán)和身份驗證后端,或者作為網(wǎng)絡(luò)覆蓋連接到OpenStack Neutron。反過來,OpenStack云可能與Neutron驅(qū)動共享相同的網(wǎng)絡(luò)覆蓋。第三種場景不太關(guān)注云服務(wù)的托管方式(無論是Kubernetes還是OpenStack),而是更多地關(guān)注獨立的服務(wù)如何交互。
  OpenStack容器集成點
  在容器上部署OpenStack基礎(chǔ)設(shè)施
  正如介紹中指出的那樣,隨著容器的崛起,OpenStack的部署和管理發(fā)生了顯著變化,因為容器帶來了管理基礎(chǔ)設(shè)施代碼的新方法。以前的管理策略需要創(chuàng)建和維護重量級的“黃金”機器鏡像,或者使用脆弱的狀態(tài)維護配置管理系統(tǒng)。每種方法都有其復雜性和限制。進一步增加難度的是管理一系列服務(wù),這些服務(wù)都需要各自的依賴關(guān)系,而這些依賴關(guān)系在每個發(fā)布中都會變化。如果沒有某種形式的應(yīng)用程序隔離,解決依賴關(guān)系變得很困難。
  基礎(chǔ)設(shè)施容器使新的OpenStack部署項目能夠在兩者之間取得平衡,同時很好地解決了依賴性問題。使用輕量級、獨立、自包含且通常為無狀態(tài)的應(yīng)用程序容器,云運維者在部署復雜的控制平面時可獲得極大的靈活性。結(jié)合容器運行時和編排引擎,基礎(chǔ)設(shè)施容器使得快速部署、維護和升級復雜且高度可用的基礎(chǔ)設(shè)施成為可能。
  在構(gòu)建OpenStack集群時,選擇部署技術(shù)要考慮多個維度。運維者可以為其基本容器選擇Linux Containers(LXC)或Docker,使用預(yù)先構(gòu)建的或定制的應(yīng)用程序容器,并選擇用于編排的傳統(tǒng)配置管理系統(tǒng)或像Kubernetes這樣的更現(xiàn)代的方法。表1總結(jié)了現(xiàn)有的OpenStack部署項目及其基礎(chǔ)技術(shù)。
  在這些部署系統(tǒng)之下,是為OpenStack代碼和支持服務(wù)構(gòu)建一組容器的不同方法。OpenStack Ansible(OSA)和Kolla項目提供了自己的項目托管構(gòu)建系統(tǒng),而LOCI則側(cè)重于構(gòu)建項目應(yīng)用程序容器,不考慮特定的編排系統(tǒng)。在高層面上,它們之間的差異是:
  • OSA的獨特之處在于它依賴于較低層次的LXC容器,并且具有用于創(chuàng)建LXC應(yīng)用程序容器的自定義構(gòu)建系統(tǒng)。
  • Kolla構(gòu)建系統(tǒng)生成Docker容器(每個服務(wù)都有一個容器),還有支持初始化和管理OpenStack部署的容器。Kolla容器具有高度可配置性,可選擇基本操作系統(tǒng)、源或軟件包安裝,以及用于進一步定制的模板引擎。
  • 構(gòu)建OpenStack應(yīng)用程序容器的最終選擇是LOCI。LOCI也構(gòu)建Docker容器,為每個項目提供一個容器。LOCI專注于快速生產(chǎn)緊湊和安全的容器,并期望它們被部署系統(tǒng)用為基礎(chǔ)。
  裸機基礎(chǔ)設(shè)施——OpenStack和解決Bootstrap問題
  每個云的基礎(chǔ)中,都有一個承載基礎(chǔ)設(shè)施服務(wù)的裸機服務(wù)器數(shù)據(jù)中心。即使是“無服務(wù)器計算”,也在數(shù)據(jù)中心硬件上的云上運行軟件。如何引導硬件基礎(chǔ)設(shè)施的問題是OpenStack軟件有獨特資格來解決的一個關(guān)鍵問題,它可以提供類似于云的裸機管理質(zhì)量。
  OpenStack Ironic提供裸機即服務(wù)。作為獨立服務(wù),它可以發(fā)現(xiàn)裸機節(jié)點,在管理數(shù)據(jù)庫中對其進行編目,并管理整個服務(wù)器生命周期(包括注冊、提供、維護和退役)。當用作OpenStack Nova的驅(qū)動程序并結(jié)合全套OpenStack服務(wù)時,它可以提供強大的類似云的服務(wù)來管理整個裸機基礎(chǔ)設(shè)施。
  這引出了一個問題:一個bootstrap OpenStack服務(wù)如何管理裸機基礎(chǔ)設(shè)施?一個典型的解決方案是使用與前面章節(jié)中所述相同的基于容器的安裝工具來創(chuàng)建種子安裝。這個通常被稱為“undercloud”的種子可以用來完全自動化裸機集群的管理,就好像它是一個虛擬化的云。
  這帶來了機會,不僅可以在裸機云上運行OpenStack虛擬化,而且還可以運行裸機Kubernetes安裝(可以通過OpenStack服務(wù)充分利用身份、存儲、網(wǎng)絡(luò)和其他可用的云API)。
  在OpenStack上交付基于容器的應(yīng)用程序
  基礎(chǔ)設(shè)施容器和裸機基礎(chǔ)設(shè)施都很重要,但是當大多數(shù)人想到容器時,他們想到的是應(yīng)用程序容器。容器提供的隔離、封裝和易維護性使其成為交付應(yīng)用程序的理想解決方案。但是,容器仍然需要一個主機平臺來為它們提供服務(wù),無論是裸機、公有云還是私有云。
  Kubernetes是一個交付應(yīng)用程序的平臺,可以與云API一起使用,從而實現(xiàn)關(guān)鍵基礎(chǔ)設(shè)施的自動交付(如永久存儲、負載均衡器、網(wǎng)絡(luò)和動態(tài)分配計算節(jié)點)。OpenStack提供云基礎(chǔ)設(shè)施,無論是作為本地私有云還是通過任何可用的公有或托管OpenStack云。
  OpenStack是Kubernetes的首批上游云提供商之一,其活躍的開發(fā)團隊維護著“Kubernetes / Cloud Provider OpenStack”插件。這個插件允許Kubernetes利用Cinder塊存儲、Neutron和Octavia Load Balancers,以及使用Nova直接管理計算資源。使用非常簡單,只需將驅(qū)動程序部署到Kubernetes安裝中,設(shè)置一個標志來加載驅(qū)動程序,并提供本地用戶云憑證。
  在OpenStack上安裝Kubernetes和其他應(yīng)用程序框架有許多解決方案。提供容器框架的最簡單方法之一是使用Magnum——這是一個OpenStack項目,它提供了一個簡單的API來部署完全受管理的、有多個應(yīng)用程序平臺(包括Kubernetes)選擇的集群。這是一個依賴于OpenStack API和云提供商插件的Kubernetes部署系統(tǒng)的例子。例如,現(xiàn)在它被用在CERN的OpenStack現(xiàn)場云以及合作伙伴云上管理超過200個獨立和聯(lián)合的Kubernetes安裝。如果你在首選OpenStack云中沒有可用的Magnum API,你可以使用任何其他Kubernetes安裝工具(例如kubeadm、Kubernetes Anywhere、Cross-Cloud或Kubespray)在OpenStack上安裝和管理Kubernetes集群。因為每個用戶都使用標準的Kubernetes,所以很容易啟用云提供商接口來利用存儲和負載均衡。
  另一個OpenStack項目Zun提供了一個輕量級的容器服務(wù)API,用于管理單個容器,而無需管理服務(wù)器或集群。OpenStack托管的Kubernetes集群具有彈性,因為它可以直接通過Nova API向集群添加或刪除云資源來動態(tài)調(diào)整大小。另外,Kubernetes可以作為OpenStack Zun的容器后端,將pod基礎(chǔ)設(shè)施的管理轉(zhuǎn)交給Zun。它提供了一個更輕量級和多租戶容器服務(wù)API,用于運行容器而無需直接創(chuàng)建服務(wù)器。與Neutron和Cinder的直接集成被用于為單個容器提供網(wǎng)絡(luò)和卷。
  最后,Qinling項目提供了“Function as a Service”,旨在提供一個支持無服務(wù)器功能的平臺,類似于Lambda、Azure Functions或Google Cloud Functions。它進一步抽象了容器的管理,允許用戶通過事件驅(qū)動的、無需服務(wù)器的計算體驗來加速開發(fā)(這種體驗可按需伸縮)。Qinling支持不同的容器編排后端(如Kubernetes和Docker swarm)、各種流行的功能包存儲后端(如本地存儲和OpenStack Swift)。
  Kata Containers——通過虛擬化保證應(yīng)用安全
  Kata Containers是一個新的開源項目。它是一個輕量級虛擬機的新穎實現(xiàn),可無縫集成到容器生態(tài)系統(tǒng)中。Kata Containers與容器一樣輕而快,并與容器管理層(包括Docker和Kubernetes等常用編排工具)集成,同時還提供了虛擬機的安全優(yōu)勢。Kata Containers符合開放容器倡議(OCI)標準——OpenStack基金會是其中的一個活躍成員。Kata Containers由OpenStack基金會托管,但它是OpenStack項目之外的獨立項目,擁有自己的治理和社區(qū)。
  轉(zhuǎn)向容器帶來了獨特挑戰(zhàn),即在多租戶環(huán)境中保護用戶工作負載(有可信任和不可信任的工作負載)。Kata Containers使用硬件支持的隔離作為每個容器或pod中容器集合的邊界。這種方法解決了傳統(tǒng)容器架構(gòu)中共享內(nèi)核的安全問題。
  Kata Containers非常適合基于事件的按需部署(如持續(xù)集成/持續(xù)交付)和更長時間運行的Web服務(wù)器應(yīng)用程序。Kata還簡化了從傳統(tǒng)虛擬化環(huán)境向容器的過渡,因為它支持傳統(tǒng)訪客內(nèi)核和設(shè)備通過功能。Kata Containers提供增強的安全性、可擴展性和更高的資源利用率,同時帶來堆棧的整體簡化。
  并行的OpenStack和Kubernetes集成
  選擇開源平臺的一個主要優(yōu)勢在于,跨平臺標準部署的接口的穩(wěn)定性。OpenStack基金會和CNCF都在為OpenStack云和Kubernetes集群維護互操作標準,確保庫、應(yīng)用程序和驅(qū)動程序可以在所有平臺上運行,而不用管它們在哪里部署。這為并行集成創(chuàng)造了機會,允許OpenStack和Kubernetes利用彼此的資源。
  Kubernetes社區(qū)中的OpenStack特別興趣小組(SIG-OpenStack)維護Cloud Provider OpenStack插件。除了在OpenStack上運行Kubernetes的云提供商接口外,它還保留了幾個驅(qū)動程序,允許Kubernetes利用單個OpenStack服務(wù)。這些驅(qū)動程序包括:
  • 兩個獨立的Cinder驅(qū)動程序。Flex Volume驅(qū)動程序使用基于exec的模型與驅(qū)動程序進行交互,為容器編排系統(tǒng)使用標準接口的Container Storage Interface(CSI)驅(qū)動程序?qū)⑷我獯鎯ο到y(tǒng)暴露給其容器工作負載。通過支持70多種存儲驅(qū)動程序,這些驅(qū)動程序可以通過一個Cinder API與大量經(jīng)過測試的專有和開源存儲設(shè)備連接。
  • 基于webhook的Keystone認證和授權(quán)接口。每個模式、認證和授權(quán),都可以彼此獨立配置。雖然這項工作還在進行中,但該接口支持軟多租戶(使用OpenStack Keystone支持Kubernetes RBAC)。
  OpenStack和Kubernetes都支持由多種驅(qū)動程序支持的高度動態(tài)網(wǎng)絡(luò)模型。由于有這些標準網(wǎng)絡(luò)接口,可以輕松構(gòu)建具有強大網(wǎng)絡(luò)集成的獨立OpenStack和Kubernetes集群。在OpenStack中,Kuryr項目生成了一個Common Network Interface(CNI)驅(qū)動程序,可將Neutron網(wǎng)絡(luò)提供給Docker和Kubernetes。另一方面,像Calico這樣的項目提供Neutron驅(qū)動程序,通過標準的Neutron API提供對Kubernetes網(wǎng)絡(luò)覆蓋的直接訪問。
【免責聲明】本文僅代表作者本人觀點,與CTI論壇無關(guān)。CTI論壇對文中陳述、觀點判斷保持中立,不對所包含內(nèi)容的準確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔全部責任。

專題