使用前提:

  • K8S集群中正确部署了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创建实例:

# kubectl create -f flexvolume_disk1.yaml
pod/test-flexvolume-disk1 created
# kubectl get pod test-flexvolume-disk1
NAME                   READY   STATUS    RESTARTS   AGE
test-flexvolume-disk1   1/1     Running   0          45s
# 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创建实例:

# kubectl create -f flexvolume_disk2.yaml
pod/test-flexvolume-disk2 created
# kubectl get pod test-flexvolume-disk2
NAME                   READY   STATUS    RESTARTS   AGE
test-flexvolume-disk2   1/1     Running   0          45s
# 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"