Nydus 映象加速外掛遷入 Containerd 旗下

SOFAStack發表於2022-03-24

文|葛長偉(花名:川朗 )

螞蟻集團技術專家

負責容器映象加速專案 Nydus 的開發和維護,專注於容器映象儲存、持久儲存和檔案系統領域。

本文 1344 字 閱讀 4 分鐘

前言

今年 1 月 ,Containerd 社群通過投票接收 Nydus-snapshotter 成為 Containerd 社群的子專案。這是繼 ttrpc-rust 之後,螞蟻容器團隊再次向 Containerd 捐贈子專案。

此舉將方便 Nydus 和 Containerd 的開發協同,減少專案迭代過程中可能出現的不相容問題,也讓使用者可以更容易地使用 Nydus 映象加速服務。

目前 Nydus 已經將 Nydus-snapshotter 的程式碼遷移到了 Containerd 組織下的新倉庫[1]。

Nydus 簡介

Nydus 是螞蟻集團和阿里雲共同開源的容器映象加速專案,屬於 CNCF Dragonfly 專案,是其中的映象服務部分。

Nydus 是在最新的 OCI Image-Spec 基礎之上設計的容器映象加速服務,重新設計了映象格式和底層檔案系統,從而加速容器啟動速度,提高大規模叢集中的容器啟動成功率。

Nydus 設計了一個為映象優化的檔案系統—Rafs。

Nydus 映象可以推送和儲存在標準的容器映象中心,Nydus 映象格式完全相容 OCI Image Spec 和 Distribution Spec。成功轉換或者建立映象後,Nydus 映象會生成一個後設資料檔案 Bootstrap、若干個資料檔案 blob、manifest.json、config.json。

目前可以通過 Nydusify 、Acceld 或者 Buildkit 建立 Nydus 加速映象。

其中,Acceld[2] 是 Nydus 和 eStargz 的開發者正在合作開發的 Harbor 開源企業級映象中心的一個子專案,它提供了一個通用的加速映象轉換服務和框架。基於 Acceld,Nydus 和 eStargz 可以方便地從 Harbor 觸發加速映象轉換。

與此同時,Nydus 也在開發 Buildkit 相關的支援,在未來也可以直接通過 Buildkit 從 Dockerfile 直接建立加速映象。

Nydus-snapshotter 是 Containerd 的 Remote Snapshotter 外掛,它是一個獨立於 Containerd 的程式。

當整合 Nydus-snapshotter 到 Containerd 後,Nydus-napshotter 在容器映象準備階段,只會將 Nydus 映象的後設資料部分 Bootstrap 從映象中心下載下來,並且建立了一個新的程式 Nydusd。Nydusd 是處理檔案系統操作的使用者態程式。通過配置,Nydusd 可以作為基於 Linux FUSE 的使用者態檔案系統 Virtio-fs Vhost-user Backend,甚至可以是 Linux Fscache 的使用者態程式。

Nydusd 負責從映象中心或者物件儲存下載檔案資料以響應讀檔案的請求,並可以將檔案資料塊快取在 Host 的本地檔案系統。

weekly.jpg

Nydus 特性

Nydus 有如下重要的特性:

1、映象層間塊級資料去重,可以減少映象中心的儲存成本,降低資料傳輸的頻寬消耗。

2、Whiteout 檔案不會再被打包進 Nydus 映象。

3、端到端的資料完整性校驗。

4、作為 CNCF 孵化專案 Dragonfly 的子專案,Nydus 可以接入 P2P 分發系統,以此降低對映象中心的壓力。

5、支援資料和後設資料分離儲存。可以將資料儲存在 NAS、阿里雲 OSS 或者 AWS S3。

6、支援檔案訪問行為記錄,這樣就可以審計和分析容器內應用的訪問行為。增強安全能力、優化映象資料排布。

除了以上的關鍵特性,Nydus 可以靈活地配置成 Linux FUSE 使用者態檔案系統、基於輕量虛擬化技術容器的 Virtio-fs daemon,或者 Linux 核心磁碟檔案系統 EROFS 的使用者態 on-demand 資料下載服務:

1、輕量化地整合到 vm-based 容器執行時。現在 KataContainers 正在考慮原生地支援 Nydus 作為容器映象加速方案。

2、Nydus 和 EROFS 緊密合作,期望可以直接使用 EROFS 作為容器映象的檔案系統。相關修改的第一部分已經合併入 Linux Kernel v5.16。

Nydus 部署形態

支援 Runc 時,Nydus 作為 FUSE 使用者態檔案系統程式:

weekly.jpg

支援 KataContainers 時,Nydus 作為 Virtio-fs daemon:

weekly.jpg

目前 EROFS 正在嘗試聯合 Fscache 一起,以核心檔案系統 EROFS 直接作為容器 Rootfs:

weekly.jpg

Nydus 將與 Containerd 社群緊密合作,致力於提供更優秀的容器映象加速方案,提高映象的儲存和分發效率,提供安全可靠的容器映象服務。

「參 考」

[1] nydus-snapshotter repository:GitHub - containerd/nydus-snapshotter: A containerd snapshotter with capability of on-demand read.

[2] acceld repository:https://github.com/goharbor/a...

求賢若渴:

關於螞蟻集團可信原生技術部安全容器和儲存團隊

在螞蟻集團內部主要負責公司內部容器執行時和雲原生儲存技術,是公司資料鏈路的守護者,執行時環境的看門人。我們團隊也是 Kata Containers 的創立者,映象加速服務 Nydus 的發起者,分散式事務服務 Seata 的維護者,也維護著公司內資料訪問元件 ZDal/ZCache/XTS 等產品。

我們是開源精神的信徒,也是實現開源軟體和公司業務雙贏的踐行者。我們是一個關注業務、關注業界前沿、關注基礎設施技術,更關心成員成長的團隊。目前我們正在招收 2023 屆實習生,有興趣的可以參考螞蟻集團2023屆實習生招聘。

聯絡郵箱:liyuming.lym@antgroup.com

本週推薦閱讀

恭喜 李志強 成為 Layotto committer!

社群文章|MOSN 路由框架詳解

HAVE FUN | SOFARegistry 原始碼解析
img

BabaSSL:支援半同態加密演算法 EC-ElGamal

相關文章