天天看點

遠端容器鏡像的解決方案 Overlaybd

Accelerated Container Image

是論文

“DADI: Block-Level Image Service for Agile and Elastic Application Deployment.USENIX ATC'20”

的開源實作。

它是遠端容器鏡像的解決方案,支援按需擷取鏡像資料,無需在容器運作前下載下傳和解壓整個鏡像。

加速的核心是overlaybd,它提供了作為塊裝置的一系列基于塊的層的合并視圖。該存儲庫是加速集裝箱圖像的組成部分,提供了由iSCSI和overlaybd的實施

TCMU

設定

https://github.com/alibaba/overlaybd#system-requirements 系統要求

Overlaybd通過iSCSI協定和TCMU提供虛拟塊裝置,是以需要TCMU核心子產品。TCMU 在 Linux 核心中實作并得到大多數 Linux 發行版的支援。

檢查并加載 target_core_user 子產品。

modprobe target_core_user
      

從 RPM/DEB 安裝

您可以從

Release

下載下傳我們的 RPM/DEB 包并安裝。

二進制檔案安裝到

/opt/overlaybd/bin/

.

運作

/opt/overlaybd/bin/overlaybd-tcmu

,日志存儲在

/var/log/overlaybd.log

最好

overlaybd-tcmu

作為服務運作,以便在意外崩潰後可以重新啟動。

https://github.com/alibaba/overlaybd#build-from-source 從源代碼建構

https://github.com/alibaba/overlaybd#requirements 要求

要從源代碼建構overlaybd,需要以下依賴項:

  • CMake >= 3.11
  • gcc/g++ >= 7
  • Libaio、libcurl、libnl3、glib2 和 openssl 運作時和開發庫。
    • CentOS/Fedora:

      sudo yum install libaio-devel libcurl-devel openssl-devel libnl3-devel glib2-devel

    • Debian/Ubuntu:

      sudo apt install pkg-config libcurl4-openssl-dev libssl-dev libaio-dev libnl-3-dev libnl-genl-3-dev libglib2.0-dev

https://github.com/alibaba/overlaybd#build 建造

你需要 git 來檢出源代碼:

git clone https://github.com/alibaba/overlaybd.git
cd overlaybd
      

整個項目由 CMake 管理。二進制檔案和資源檔案将安裝到

/opt/overlaybd/

mkdir build
cd build
cmake ..
make -j
sudo make install
      

最後,為overlaybd-tcmu backstore 設定一個systemd 服務。

sudo systemctl enable /opt/overlaybd/overlaybd-tcmu.service
sudo systemctl start overlaybd-tcmu
      

配置

https://github.com/alibaba/overlaybd#overlaybd-config 覆寫配置

預設配置檔案

overlaybd.json

安裝到

/etc/overlaybd/

{
    "logLevel": 1,
    "logPath": "/var/log/overlaybd.log",
    "registryCacheDir": "/opt/overlaybd/registry_cache",
    "registryCacheSizeGB": 1,
    "credentialFilePath": "/opt/overlaybd/cred.json",
    "ioEngine": 1,
    "download": {
        "enable": true,
        "delay": 120,
        "delayExtra": 30,
        "maxMBps": 100
    },
    "enableAudit": true,
    "auditPath": "/var/log/overlaybd-audit.log"
}
      
場地 描述
日志級别 調試 0、資訊 1、警告 2、錯誤 3
io引擎 用于打開本地檔案的IO引擎:psync 0、libaio 1、posix aio 2。
日志路徑 日志檔案的路徑

/var/log/overlaybd.log

是預設值。
系統資料庫緩存目錄 遠端圖像資料的緩存目錄。
系統資料庫緩存大小GB 緩存的最大大小,以 GB 為機關。
憑證檔案路徑 用于在系統資料庫上擷取圖像的憑據。

/opt/overlaybd/cred.json

下載下傳.啟用 是否啟用背景下載下傳。
下載下傳延遲 在overlaybd 裝置啟動後等待開始下載下傳任務的秒數。
下載下傳.delayExtra 延遲附加随機額外延遲,避免同時啟動過多任務。
下載下傳.maxMBps 下載下傳任務的速度限制(以 MB/s 為機關)。
啟用審計 是否啟用審計。
審計路徑 審計檔案的路徑

/var/log/overlaybd-audit.log

注意:

download

是背景下載下傳的配置。啟動overlaybd 裝置後,将運作背景任務以将整個blob 提取到本地目錄中。下載下傳後,I/O 請求被定向到本地檔案。與其他選項不同,下載下傳配置在裝置啟動時重新加載。

https://github.com/alibaba/overlaybd#credential-config 憑證配置

以下是按

credentialFilePath

字段描述的憑證檔案示例。

{
  "auths": {
    "hub.docker.com": {
      "username": "username",
      "password": "password"
    },
    "hub.docker.com/hello/world": {
      "auth": "dXNlcm5hbWU6cGFzc3dvcmQK"
    }
  }
}
      

需要身份驗證時會重新加載憑據。如果使用臨時憑證,則必須在到期前更新憑證,否則 overlaybd 會不斷重新加載,直到設定了有效的憑證。為了測試友善,我們在阿裡雲ACR上提供了一個公共系統資料庫,見後面的例子。

重要提示:如果系統資料庫不是公開的,則必須在啟動裝置之前設定相應的憑據。

https://github.com/alibaba/overlaybd#whats-next 下一步是什麼?

現在我們已經完成了 overlaybd 的設定,讓我們回到

repo 并開始運作我們的第一個加速容器。

繼續閱讀