问题描述
storage classes允许管理员定义各种所需的存储类。对于开发人员来说,storage classes可以抽象存储类型,并方便开发人员直接使用PVC,而无需关心存储本身。
解决方案
1)参考 StorageClass + PersistentVolumeClaim 笔记,获取驱动配置示例。
2)在 PVC 中,使用存储类来自动分配存储:
kubectl apply -f - <<EOF --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: test-claim spec: storageClassName: nas-client-provisioner accessModes: - ReadWriteMany resources: requests: storage: 1Mi --- apiVersion: v1 kind: Pod metadata: name: task-pv-pod spec: volumes: - name: task-pv-storage persistentVolumeClaim: claimName: test-claim containers: - name: task-pv-container image: alpine command: ["touch", "/srv/pv-test/test-file.txt"] volumeMounts: - mountPath: "/srv/pv-test/" name: task-pv-storage EOF # 检查 NFS 存储是否存在 test-file.txt 文件
on Minnikube
minikube中有默认的存储类,该存储类定义了一个默认的PV provisioner,这意味这当PVC创建时,k8s会自动创建一个相应的PV来忙组该PVC。
查看minikube的默认存储类:kubectl get storageclass,该存储类使用的存储provisioner会创建hostPath类型的PV。
你可以测试以下,直接定义一个PVC,然后使用kubectl get pv命令查看自动创建的PV。因此,即使Pod死亡,或者被删除,数据依旧会保存下来。
云商存储类文档
1)Alibaba Cloud/存储类(StorageClass)
2)Dynamically Provisioning Persistent Storage on GKE