您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關Serverless及OpenKruise 部署優化的實例分析,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
項目背景
SAE 底層使用 Kubernetes 架構,使用神龍裸金屬安全容器、 ECI 兩種資源池,用戶在 SAE 中運行的應用會映射到 Kubernetes 中相應的資源。
通過采集線上全量 K8s 事件,整個 Pod 的創建生命周期進行分節點、分階段的耗時統計分析,以神龍節點為例,各階段比例如圖:
從圖中可以看出,整個 pod 的創建生命周期包括調度,拉取并創建 init 容器,拉取用戶業務鏡像,創建和啟動容器等。其耗時主要集中在調度和拉取用戶鏡像上。究其原因在于 SAE 神龍節點調度鏈路整體耗時較長,而鏡像耗時主要在于拉取鏡像與解壓鏡像的時長,特別是在大容量鏡像部署的情況下尤為突出。
SAE 團隊從長期架構規劃,使用場景通用性等多個方面進行方案調研分析, 考慮采用原地升級的部署策略代替重建升級策略,避免部署過程中重調度,減少整體耗時。
所謂原地升級,即只更新 Pod 中某一個或多個容器版本、而不影響整個 Pod 對象、其余容器的升級,而且在升級過程中保證 ip、node 不發生改變。在阿里巴巴內部,絕大部分電商應用在云原生環境都統一使用原地升級的方式做發布,這種原地升級的模式極大地提升了應用發布的效率,節省了調度,分配網絡,掛載磁盤以及拉取鏡像的耗時。通過分析線上 SAE 用戶歷史部署記錄,發現只更新鏡像/程序包部署應用的占大多數,也就是說原地升級能力非常適合在 SAE 產品中落地。
原地升級給 SAE 帶來的優勢在于:
避免重調度,避免 sidecar 容器重建,整個部署耗時只需要拉取和創建業務容器;
無需調度,可以預先在 Node 上緩存新鏡像,提高彈性效率;
可以保持 ip 不變,避免因 ip 變化導致依賴組件如注冊中心感知的延時;
減少重建 pod 對調度器,注冊中心,業務上下游的壓力。
與此同時,OpenKruise 項目已經將原地升級能力通過 CloneSet / AdvanceStatefulSet 貢獻于開源。CloneSet 是 OpenKruise 中提供的核心 workload 之一,它主要面向無狀態應用,提供了更加高效、確定可控的應用管理和部署能力,支持優雅原地升級、指定刪除、發布順序可配置、并行/灰度發布等豐富的策略,可以滿足更多樣化的應用場景。CloneSet 與原生 Kubernetes workload 功能對比如圖:
SAE 決定采用 CloneSet 作為新的應用負載,一方面借助其原地升級的能力提升應用整體部署效率,另一方面也結合 OpenKruise 開源的力量,共同打造通用標準的無狀態應用負載的大規模使用實踐。針對于增量應用, SAE 會默認采用 CloneSet 進行用戶應用的部署,并結合最大不可用實例數和優雅升級時長來保證發布的流量無損,而對于存量應用, SAE 將采用基于有限狀態機的滾動升級進行在線遷移操作。
方案上線后效果顯著,在一個月的時間內,已經有近千個應用使用 CloneSet 進行部署,且原地升級次數為重建升級的兩倍,部署效率比原生 K8s 提升 42% ,結合鏡像緩存,用戶部署應用到容器啟動在秒級內完成。SAE 后續會對更多 OpenKruise 的高級能力產品化,同時結合用戶場景,不斷打磨穩定性與最佳實踐回饋于開源。
圖:原生 K8s 部署應用重建升級策略 VS SAE 部署應用原生升級策略
上述就是小編為大家分享的Serverless及OpenKruise 部署優化的實例分析了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。