k8s的StorageClass存儲類和pv、pvc、provisioner、物理存儲的鏈路
StorageClass能自動創建pv
在控制器中,直接聲明storageClassName,不僅能自動創建pvc,也能自動創建pv
stoageclass來自于provisioner,provisioner來自于pod,pod來自于鏡像。也就是provisioner的鏡像。鏡像里面有提供provisioner相關的代碼。
nfs-subdir-external-provisioner:v4.0.2 這個鏡像生成的nas盤上的目錄名稱的定義規則是:namespace-pvc-pv。這個是在nfs-subdir-external-provisioner:v4.0.2的鏡像里面寫好的
StorageClass是一種kind,也就是一種k8s的API資源,是一個動態存儲卷。
先看pv、pvc:
kubectl get sc # storageclass
kubectl get sa # serviceaccount
# StorageClass (iscsi-scsi-storage.yaml)
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: iscsi-scsi-storage
provisioner: example.com/iscsi
parameters:targetPortal: "192.168.1.100:3260"lun: "0"fsType: "ext4"chapAuthEnabled: "true"# StatefulSet (postgres-statefulset.yaml)
apiVersion: apps/v1
kind: StatefulSet
metadata:name: postgres-cluster
spec:replicas: 3selector:matchLabels:app: postgrestemplate:spec:containers:- name: postgresimage: postgres:14volumeMounts:- name: postgres-datamountPath: /var/lib/postgresql/datavolumeClaimTemplates:- metadata:name: postgres-dataspec:accessModes: [ "ReadWriteOnce" ]storageClassName: iscsi-scsi-storageresources:requests:storage: 1Ti