文|葛長偉(花名:川朗 )
螞蟻集團技術專家
負責容器映象加速專案 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 的本地檔案系統。
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 使用者態檔案系統程式:
支援 KataContainers 時,Nydus 作為 Virtio-fs daemon:
目前 EROFS 正在嘗試聯合 Fscache 一起,以核心檔案系統 EROFS 直接作為容器 Rootfs:
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