全部產品
Search
文件中心

Elastic Container Instance:為ECI執行個體掛載雲端硬碟資料卷

更新時間:Jul 25, 2024

雲端硬碟是阿里雲提供的資料區塊層級的儲存產品,具有低時延、高效能、持久性、高可靠等特點。通過FlexVolume外掛程式,ECI支援掛載雲端硬碟作為資料卷。本文介紹如何為ECI執行個體掛載雲端硬碟資料卷。

使用限制

  • 待掛載的雲端硬碟必須是隨用隨付。更多資訊,請參見Block Storage計費

  • 雲端硬碟為非共用儲存,一個雲端硬碟只能掛載到一個執行個體上。

  • 一個ECI執行個體最多可以掛載6個雲端硬碟資料卷。

  • 雲端硬碟只能掛載到相同可用性區域的執行個體上,不支援跨可用性區域掛載。

  • 不支援掛載開啟多重掛載功能的雲端硬碟(即NVMe共用盤)。

  • 不支援掛載已建立分區的雲端硬碟。

配置說明

調用CreateContainerGroup介面建立ECI執行個體時,您可以通過Volume相關參數聲明資料卷,然後通過Container.VolumeMount相關參數為容器掛載資料卷。相關參數說明如下,更多資訊,請參見CreateContainerGroup

聲明資料卷

通過Volume相關參數聲明資料卷時,需要先明確Volume的名稱和類型。再根據Volume.N.Type的取值,進一步配置該類型資料卷的相關參數。

名稱

類型

樣本值

描述

Volume.N.Name

String

disk-demo

資料卷名稱。

Volume.N.Type

String

FlexVolume

取值為FlexVolume,表示建立一個通過FlexVolume外掛程式掛載的資料卷。

Volume.N.FlexVolume.Driver

String

alicloud/disk

使用FlexVolume外掛程式掛載資料卷時的驅動類型。目前支援alicloud/disk,表示掛載阿里雲雲端硬碟。

Volume.N.FlexVolume.FsType

String

ext4

檔案系統類型。您可以選擇以哪種資料類型將資料存放區到雲端硬碟上,支援的類型包括ext4、ext3、xfs、vfat。預設為ext4。

Volume.N.FlexVolume.Options

String

{"volumeSize":"50","tags":"test:eci"}

FlexVolume對象選項列表。為索引值對形式,採用JSON傳遞。

通過FlexVolume掛載雲端硬碟時,Options表示雲端硬碟資料卷的配置參數,可配置的參數如下:

重要

當volumeId為空白,volumeSize欄位為必填;當volumeId有值時,volumeSize等雲端硬碟屬性相關參數值均會被忽略。

  • 靜態指定已有雲端硬碟

    • volumeId:已有雲端硬碟ID。

  • 動態建立新的雲端硬碟

    • volumeSize:雲端硬碟大小,單位為GiB。取值範圍為20~32768。

      說明

      如果基於快照建立雲端硬碟(配置了snapshotid參數),則實際建立的雲端硬碟大小為以下兩者的較大值:

      • 此處配置的值

      • 快照來源雲端硬碟大小

    • performanceLevel:雲端硬碟效能等級。預設採用ESSD雲端硬碟,暫不支援指定雲端硬碟類型。更多資訊,請參見ESSD雲端硬碟

    • deleteWithInstance:是否隨執行個體釋放雲端硬碟,預設為true。

    • encrypted:是否加密雲端硬碟,預設為false。更多資訊,請參見加密概述

    • kmsKeyId:加密雲端硬碟時,雲端硬碟使用的KMS密鑰ID。

    • tags:雲端硬碟要綁定的標籤,最多可以綁定20個。格式為"tagkey1:tagvalue1,tagkey2:tagvalue2"

    • snapshotId:快照ID。快照是某一時間點雲端硬碟資料狀態的備份檔案,基於快照建立雲端硬碟可以擷取快照包含的資料。更多資訊,請參見快照概述

      說明

      如果快照來源雲端硬碟已建立過分區,則不支援使用該快照建立雲端硬碟掛載到ECI執行個體。

掛載資料卷

聲明資料卷後,可以通過VolumeMount相關參數將資料卷掛載到容器中。

名稱

類型

樣本值

描述

Container.N.VolumeMount.N.Name

String

test-volume

要掛載到容器的資料卷的名稱,對應Volume.N.Name的值。

Container.N.VolumeMount.N.MountPath

String

/usr/share

掛載目錄。

容器掛載目錄下的內容會被資料卷的內容直接覆蓋,請準確填寫。

Container.N.VolumeMount.N.SubPath

String

/usr/sub

資料卷下的子目錄。方便執行個體將同一個資料卷下的不同目錄掛載到容器的不同目錄。

Container.N.VolumeMount.N.ReadOnly

Boolean

false

掛載目錄是否唯讀。預設為false。

Container.N.VolumeMount.N.MountPropagation

String

None

資料卷的掛載傳播設定。掛載傳播允許將容器掛載的卷共用到同一ECI執行個體中的其他容器,甚至可以共用到同一宿主機上的其他ECI執行個體。取值範圍:

  • None:該卷不感知任何後續在此卷或其子目錄上執行的掛載操作。

  • HostToContainer:該卷將會感知到後續在此卷或其子目錄上的掛載操作。

  • Bidirectional:和HostToContainer類似,能感知掛載操作。另外,該卷將被傳播回宿主機和使用同一卷的所有ECI執行個體的所有容器。

預設值:None。

說明

Init容器也支援掛載資料卷,參數與上表類似,只需要將Container改為InitContainer。

配置樣本

調用CreateContainerGroup介面建立ECI執行個體,並為其掛載雲端硬碟資料卷。所採用的參數樣本如下,更多資訊,請參見CreateContainerGroup

  • 樣本一:靜態

    ContainerGroupName=test-disk1
    SecurityGroupId=sg-bp1daxpbz9lzpvvc****
    VSwitchId=vsw-bp1gds63lmlm7ib05****
    #聲明資料卷
    Volume.1.Name=disk-demo
    Volume.1.Type=FlexVolume
    Volume.1.FlexVolume.Driver=alicloud/disk
    Volume.1.FlexVolume.FsType=ext4
    Volume.1.FlexVolume.Options={"volumeId":"d-2zebuamrpar7xnj****"}
    #為容器掛載資料卷
    Container.1.Name=nginx
    Container.1.Image=registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.14.2
    Container.1.VolumeMount.1.Name=disk-demo
    Container.1.VolumeMount.1.MountPath=/data
    說明

    靜態掛載時,指定的雲端硬碟必須處於待掛載狀態,且與待建立的ECI執行個體處於同一可用性區域。

  • 樣本二:動態

    ContainerGroupName=test-disk2
    #聲明資料卷
    Volume.1.Name=disk-demo
    Volume.1.Type=FlexVolume
    Volume.1.FlexVolume.Driver=alicloud/disk
    Volume.1.FlexVolume.FsType=ext4
    Volume.1.FlexVolume.Options={"volumeSize":"50","tags":"test:eci"}
    #為容器掛載資料卷
    Container.1.Name=nginx
    Container.1.Image=registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.14.2
    Container.1.VolumeMount.1.Name=disk-demo
    Container.1.VolumeMount.1.MountPath=/data