全部产品

云盘(FlexVolume)

使用前提:

Kubernetes集群中正确部署了virtual-kubelet(serverless Kubernetes默认集成)。

ECI可以使用FlexVolume挂载云盘,既支持已有的待挂载状态的云盘,也支持指定云盘大小来自动创建并挂载。

以下yaml展示挂载已有的待挂载状态的云盘,将以下内容保存为flexvolume_disk1.yaml:

apiVersion: v1
kind: Pod
metadata:
  name: test-flexvolume-disk1
spec:
  # ACK场景下可以通过nodeName指定调度到ECI
  # nodeName: virtual-node-eci-0
  containers:
  - image: nginx:latest
    name: test-container
    volumeMounts:
    - mountPath: /cache-test
      name: cache-volume
  volumes:
  - name: cache-volume
    flexVolume:
      driver: alicloud/disk
      fsType: ext4
      options:
        volumeId: "d-2zehdahrwoa7srga8eqw"
        performanceLevel: "PL2"

然后使用kubectl,依次执行以下命令创建实例:

  1. 输入以下命令:

    kubectl create -f flexvolume_disk1.yaml

    系统输出类似如下结果:

    pod/test-flexvolume-disk1 created
  2. 输入以下命令:

    kubectl get pod test-flexvolume-disk1

    系统输出类似如下结果:

    NAME                   READY   STATUS    RESTARTS   AGE
    test-flexvolume-disk1   1/1     Running   0          45s
  3. 输入以下命令:

    kubectl exec -it test-flexvolume-disk1 bash

    系统输出类似如下结果:

    root@default-test-flexvolume-disk1:/# ls
    bin  boot  cache-test  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
    root@default-test-flexvolume-disk1:/# ls cache-test/
    lost+found

以下yaml展示指定云盘大小来自动创建并挂载,将以下内容保存为flexvolume_disk2.yaml:

apiVersion: v1
kind: Pod
metadata:
  name: test-flexvolume-disk2
spec:
  # ACK场景下可以通过nodeName指定调度到ECI
  # nodeName: virtual-node-eci-0
  containers:
  - image: nginx:latest
    name: test-container
    volumeMounts:
    - mountPath: /cache-test
      name: cache-volume
  volumes:
  - name: cache-volume
    flexVolume:
      driver: alicloud/disk
      fsType: ext4
      options:
          volumeType: "alicloud-disk-essd"
          volumeSize: "100Gi"
          performanceLevel: "PL2"

然后使用kubectl,依次执行以下命令创建实例:

  1. 输入以下命令:

    kubectl create -f flexvolume_disk2.yaml

    系统输出类似如下结果:

    pod/test-flexvolume-disk2 created
  2. 输入以下命令:

    kubectl get pod test-flexvolume-disk2

    系统输出类似如下结果:

    NAME                   READY   STATUS    RESTARTS   AGE
    test-flexvolume-disk2   1/1     Running   0          45s
  3. 输入以下命令:

    kubectl exec -it test-flexvolume-disk2 bash

    系统输出类似如下结果:

    root@default-test-flexvolume-disk2:/# ls
    bin  boot  cache-test  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
    root@default-test-flexvolume-disk2:/# ls cache-test/
    lost+found

Options参数说明

名称

类型

必选

示例值

描述

volumeId

String

d-2zebuamrpar7xnjf****

已有实例ID

volumeSize

Integer

200

单盘容量(GiB),取值范围为:20~32768。动态创建云盘必填参数。

performanceLevel

String

PL1

性能等级。更多信息,请参见云盘性能。动态创建云盘可选参数,默认值:PL1。

deleteWithInstance

Boolean

false

是否随实例释放,动态创建云盘可选参数,默认值为:false。

encrypted

Boolean

false

是否加密云盘,动态创建云盘可选参数,默认值:false。更多信息,请参见加密云盘

kmsKeyId

String

2ea91e17-****-4b4f-a3ea-0e382cc8199f

云盘使用的KMS密钥ID。动态创建云盘可选参数。

数据盘加密

随ECI实例创建的数据盘支持加密。

参数说明

名称

数据类型

示例值

描述

encrypted

Boolean

true

是否加密云盘,默认值:false。

kmsKeyId

String

2ea91e17-****-4b4f-a3ea-0e382cc8199f

云盘使用的KMS密钥ID。

apiVersion: v1
kind: Pod
metadata:
  name: my-nginx
  namespace: default
spec:
  restartPolicy: Never
  containers:
  - image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:alpine
    imagePullPolicy: IfNotPresent
    name: nginx
    volumeMounts:
    - name: dzf-disk
      mountPath: /data
  nodeName: virtual-node-eci-0
  volumes:
  - name: dzf-disk
    flexVolume:
      driver: "alicloud/disk"
      fsType: "ext4"
      options:
        volumeSize: "20Gi"
        encrypted: "true"
        kmsKeyId: "2ea91e17-6de6-4b4f-a3ea-0e382cc8199f"