今天,我很高興向大家宣佈,Apache Mesos 1.5.0版本已經正式與您見面!
Mesos 1.5當中包含資源管理、儲存與容器化方面的多項重大改進。容器儲存介面(簡稱CSI)支援正是Mesos 1.5當中全新的實驗效能力之一,此外亦有大量與之配合的新功能伴隨1.5版本一道推出。對代理進行重新配置的新能力將使得操作人員擁有更出色的使用體驗。效能提升使得主節點故障轉移速度提升80%到85%,而v1 API效能也得到了顯著改善。新版本中的資源管理機制更為靈活。此外,同樣重要的是,映象垃圾收集與更強大的Windows支援能力使得您能夠更輕鬆地在不同基礎設施型別之上執行Mesos,同時亦可在Mesos之上簡單執行多種不同工作負載。
在接下來的文章中,我們將共同瞭解Mesos 1.5當中的各項卓越改進。
Mesos 1.5以實驗性方式增加了對容器儲存介面(簡稱CSI)[1]的支援能力,這項新規範為儲存供應商與容器編排平臺之間的全部互動活動定義了一個通用型API。這項功能的出現無疑是Mesos、Kubernetes、Cloud Foundry以及Docker技術社群之間密切合作的結果。CSI的主要作用在於允許儲存供應商編寫出適用於全部容器編排平臺的外掛。
對CSI的支援將幫助Mesos始終與規模更大的儲存生態系統保持步調一致,從而確保Mesos一直具備更強大的儲存支援能力。使用者將能夠在包含Mesos的任何儲存系統當中使用一致的API選項。CSI的out-of-tree外掛樣式將Mesos的釋出週期與儲存系統的釋出週期區分開來,使得整合系統本身更具可持續性與可維護性。
上圖所示為Mesos所支援的CSI高層架構。若需瞭解更多細節資訊,請參閱 說明檔案[2]。
在Mesos 1.5之前,使用者無法對代理的配置作出任何變更——惟一的方法就是關閉該代理上執行的所有任務,並使用新的代理ID重新啟動。任何變化,例如新增額外屬性或者新接入磁碟驅動器,都將導致代理啟動中止並引發令人頭痛的錯誤:
EXIT with status 1: Failed to perform recovery: Incompatible agent info detected.
[...]
To remedy this do as follows:
Step 1: rm -f /path/to/work_dir/meta/slaves/latest
This ensures agent doesn't recover old live executors.
Step 2: Restart the agent.
從1.5版本開始,操作人員能夠使用新的代理命令列標記–reconfiguration_policy 對代理上應當允許的操作型別進行配置。在將該標記的值設定為additive時,代理將能夠接受一切對代理資源量的變更以及對其它屬性或故障域的調整。
未來,我們還希望能夠進一步新增–reconfiguration_policy=any 設定選項以允許對代理配置作出任意變更。
此版本還包括對主節點故障轉移與v1操作狀態查詢API效能的改進。主節點故障轉移完成時間的縮短,源自資料吞吐量高達450%到600%的顯著提升,這意味著整體完成時間將縮短80%到85%。
除此之外,v1操作狀態查詢API的效能也得到了極大改進,這要歸功於我們消除了過程中不必要的複製操作。具體來講,目前v1 protobuf GetState呼叫速度較v0提高了36%。此外,v1 JSON Get Sstate效能亦提升了四倍以上。
此次釋出的新版本當中引入了多項與配額機制相關的改進。如今,Mesos將能夠更好地保證角色獲取配額以及角色不致超額等等,例如:
-
此前,一個角色可收集未使用的預留配額以“愚弄”配額系統,但如今新版本會在分配資源時對預留配額進行核算,從而防止這種情況的發生。
-
資源如今會以細粒度方式進行分配,以防止角色出現超額狀況。
-
無配額角色可能收到保留資源的bug已經得到修複。
角色的保留資源高於配額資源時,可能出現配額空間缺失的問題已經得到修複。
-
當把資源分配給某個具有資源配額的角色時,此前的版本亦會將部分超出該角色配額之外的資源移交給它。這意味著不同角色的資源配額可能無法得到正確執行。目前這個問題已經透過在分配資源時計算餘量的方式[4]得到解決。
為了將資源與代理生命週期加以拆毀,我們引入了資源提供方這一抽象機制。其作用在於支援代理資源的動態變化、外部資源供應方整合乃至叢集範圍內資源管理。作為資源責任分離思路的組成部分,我們引入了一項新的資源分配協議,旨在更明確地就成功或失敗結果進行通訊,同時實現各叢集元件間的協調。我們使用新的資源供應方抽象將代理本地儲存資源同CSI透過介面加以整合。
隨著Mesos 1.5版本的釋出,Windows支援能力得到了極大改善。現在,您在利用Mesos容器執行任務時,可以透過作業物件(MEOS-6690[5])立足作業系統層級實現資源限制。在使用windows/cpu與windows/mem隔離器時,您可以對CPU週期與虛擬記憶體強制加以限制。此外,新版本現在也能夠正確支援CPU與記憶體統計資訊收集。Mesos fetcher已經被移植到Windows平臺,支援透過TLS自動下載檔案並釋放ZIP壓縮檔案。在進行配置時,libprocess現在可配合Windows上的OpenSSL支援能力進行構建,這意味著TLS連線將可立足叢集之內實現(請註意,由於Windows本身不提供OpenSSL,因此您需要在外部構建或安裝OpenSSL)。第一種驗證方法CRAM-MD5此次也正式登陸Windows,因此代理將可藉此與主節點進行驗證。HTTP與TCP狀態檢查機制也已經能夠作用於Windows代理(可用於shell任務; Docker容器執行狀態檢查也即將推出)。Meos代理不再需要以管理員身份執行,因為其現在能夠像普通使用者一樣建立符號連結,且此項功能已經被整合於代理當中。最後,雖然在上一版本中已經實現,但這裡不妨再提一句——Windows本地長路徑支援已經實現,意味著您將能夠更輕鬆地立足Windows執行代理(無需進行登錄檔配置)。
Mesos 1.5版本支援容器映象垃圾收集。目前您可以透過兩種方式對未使用的映象層進行垃圾收集:自動與手動。這項功能允許使用者輕鬆解決磁碟空間被docker映象大量佔用的難題。具體請參閱容器映象垃圾收集說明檔案[6]以瞭解更多細節資訊。
本次新版本包含一組新的操作程式API,用於啟動並管理所謂“獨立容器”這一新型原語。獨立容器類似於由Mesos代理之上的框架所啟動的容器,只是獨立容器由操作程式在Mesos代理上直接啟動。如此一來,這些容器將無需使用Mesos執行器,且具有其它一些限制特性(例如無法使用預留資源等)。與此同時,獨立容器幾乎與其它容器完全隔離,並與容器映象類似——能夠使用同樣的容器化功能集。
此項功能的釋出旨在支援CSI工作流,但各API並不限於此用例。未來,此項功能可能將被用於為各代理節點實現守護行程。具體請參閱MESOS-7302以瞭解更多細節資訊。
此次新版本包含一套gRPC客戶端打包器。是一種PC機制,並作為RESST API的替代性方案在雲原生領域愈發受到歡迎。作為將gRPC整合至Mesos的第一步,我們在libprocess當中添加了此客戶端打包器以支援CSI。該功能在預設情況下處於禁用狀態,您可以在安裝有OpenSSL庫的叢集當中使用–enable-grpc (autotools)加以啟用。該包裝類負責在內部維護gRPC執行時資料結構,同時提供一個簡單介面,以便實現與libprocess的基於actor樣式相相容的非同步gRPC呼叫。我們還利用這項新功能連線CSI外掛。除此之外,大家也可以使用這項新功能建立Mesos模組,用以同其基於gRPC的服務進行通訊。
Mesos複製日誌可幫助各類框架(例如Apache Aurora)將自身狀態儲存為多套副本,從而在故障轉移及重新啟動時實現狀態保留。從1.5版本開始,大家將能夠讀取來自一套非主導VOTING複製日誌副本處以最終一致化方式進行讀取。如此一來,您將能夠在非主導框架副本之上進行其它處理工作,例如將部分讀取任務移交至待命副本,或者將高頻複製日誌副本 保留在記憶體內以縮短故障轉移時間。
從Mesos 1.4.0升級至Mesos 1.5.0非常簡單。請參閱升級指南[7]以瞭解更多與升級至Mesos 1.5.0相關的細節資訊。
希望Apache Mesos 1.5能夠讓您滿意!
-
https://github.com/container-storage-interface/spec
-
http://mesos.apache.org/documentation/latest/csi/
-
http://mesos.apache.org/blog/performance-working-group-progress-report/
-
https://issues.apache.org/jira/browse/MESOS-8352
-
https://issues-test.apache.org/jira/browse/MESOS-6690
-
http://mesos.apache.org/documentation/latest/container-image/#garbage-collect-unused-container-images
-
http://mesos.apache.org/documentation/latest/upgrades/
原文連結:http://mesos.apache.org/blog/mesos-1-5-0-released/
本次培訓內容包括:Docker容器的原理與基本操作;容器網路與儲存解析;Kubernetes的架構與設計理念詳解;Kubernetes的資源物件使用說明;Kubernetes 中的開放介面CRI、CNI、CSI解析;Kubernetes監控、網路、日誌管理;容器應用的開發流程詳解等,點選識別下方二維碼加微信好友瞭解具體培訓內容。
長按二維碼向我轉賬
受蘋果公司新規定影響,微信 iOS 版的贊賞功能被關閉,可透過二維碼轉賬支援公眾號。