使用 PVC 挂载动态存储卷

挂载动态存储卷是基于 Storage Class 实现的,在挂载动态存储卷前,需要先创建存储类型(StorageClass)。

说明

目前 LHC 未对接阿里云的 NAS 及云盘存储,若要使用存储功能,需要安装第三方存储插件。

前提条件

已创建存储类型

步骤一:创建 PVC

您需要在创建 Pod 前创建存储声明,供创建 Pod 时使用。PVC 创建后,会有对应的 PV 自动创建出来。

云盘类型 PVC 样例

apiVersion: v1
kind:PersistentVolumeClaim
metadata:
  name: test-pvc
spec:
  accessModes:
-ReadWriteOnce
  resources:
    requests:
      storage:25Gi
  storageClassName: csi-disk-efficiency # csi-disk-ssd

参数说明

参数名

参数说明

是否必选

备注

accessModes

只读或读写

仅支持:ReadWriteOnce

storage

存储空间大小

遵循后端存储限制,参考 阿里云云盘限制。对于 csi-disk-ssd 和 csi-disk-efficiency 两种 Storage Class,最小的存储空间都是 20 GiB,否则 PV 无法创建成功,PVC 会一直处于 pending 状态。

storageClassName

Storage Class 名称

必须指定一个已经存在的名字,否则云盘无法创建。

NAS 类型 PVC 样例

apiVersion: v1
kind:PersistentVolumeClaim
metadata:
  name: test-pvc
spec:
  accessModes:
-ReadWriteMany
  resources:
    requests:
      storage:25Gi
  storageClassName: csi-nas-capacity # 或者 csi-nas-performance
重要

对于 NAS 存储,其对应的存储空间限制能力将不会生效,不会限制容器在运行时数据的写入量,仅用做 PV-PVC 在绑定过程的匹配。

参数说明

参数名

参数说明

是否必选

备注

accessModes

只读或读写

可选值:- ReadWriteOnce- ReadWriteMany

storage

存储空间大小

遵循后端存储限制,如阿里云 NAS 限制。文件系统容量上限都为 1 PB(性能型)或者 10 PB(容量型)。

storageClassName

Storage Class 名称

必须指定一个已经存在的名字,否则云盘无法创建。

步骤二:使用 PVC

您可以在创建 Pod 时使用 PVC 挂载动态数据卷。

apiVersion: v1
kind: Pod
metadata:
  name: pod-with-nas
  labels:
    app: nginx
spec:
  tolerations:
  - key: node.kubernetes.io/unreachable
    effect: NoSchedule
    operator: Exists
    automountServiceAccountToken: false
  containers:
  - name: busybox
    image: 'reg-cnsh-nf.cloud.alipay.com/library/busybox'
    command: ["sleep","3000"]
    ports:
    - containerPort: 80
    volumeMounts:
    - name: data
      mountPath: "/data"
    volumes:
    - name: data
      persistentVolumeClaim:
        claimName: test-pvc

容器运行后,可以看到 Pod 的状态为 Running:

# kubectl get pod
NAME            READY   STATUS    RESTARTS   AGE
pod-with-nas   1/1Running0103s