「Kubernetes」- StorageClass, PersistentVolumeClaim

  CREATED BY JENKINSBOT

问题描述

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