卷佈建
概觀
卷佈建涉及使用預設的 directpv-min-io
儲存類別或具有 directpv-min-io
佈建程式的自訂儲存類別來建立 PersistentVolumeClaim
。儲存類別具有卷綁定模式 WaitForFirstConsumer。此模式會延遲卷綁定和 PersistentVolume
的佈建,直到建立使用 PersistentVolumeClaim
的 Pod
為止。
DirectPV 會選取或佈建符合 Pod 排程限制所指定拓樸的 PersistentVolumes
。這些限制包括但不限於資源需求、節點選擇器、Pod 親和性和反親和性,以及污點和容忍度。使用卷的 Pod 會排程到卷已排程的節點上。這可確保對 Pod 的高效能資料存取。
處於 Ready
狀態的 DirectPV 卷表示該卷已準備好綁定到 Pod。綁定後,卷會設定為 Bound
狀態。
建立持久卷請求
必須在 PersistentVolumeClaim
規格中定義具有特定參數的 PersistentVolume 請求。
這些參數是
參數 | 值 |
---|---|
volumeMode |
檔案系統 |
storageClassName |
directpv-min-io 或任何具有 directpv-min-io 佈建程式的儲存類別名稱 |
accessModes |
[ "ReadWriteOnce" ] |
以下範例是從 directpv-min-io
儲存類別為 sleep-pvc
PVC 請求 8MiB
儲存空間
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: sleep-pvc
spec:
volumeMode: Filesystem
storageClassName: directpv-min-io
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 8Mi
對於 WaitForFirstConsumer
卷綁定模式,必須定義使用 sleep-pvc
的 Pod。以下範例是使用掛載在 /mnt
上的 sleep-volume
apiVersion: v1
kind: Pod
metadata:
name: sleep-pod
spec:
volumes:
- name: sleep-volume
persistentVolumeClaim:
claimName: sleep-pvc
containers:
- name: sleep-container
image: example.org/test/sleep:v0.0.1
volumeMounts:
- mountPath: "/mnt"
name: sleep-volume
在 StatefulSet 中建立持久卷請求
必須在 volumeClaimTemplates
規格中定義具有特定參數的 PV 請求。
這些參數是
參數 | 值 |
---|---|
storageClassName |
directpv-min-io 或任何具有 directpv-min-io 佈建程式的儲存類別名稱 |
accessModes |
[ "ReadWriteOnce" ] |
以下範例是從 directpv-min-io
儲存類別為兩個 minio
Pod 的 minio-data-1
和 minio-data-2
PVC 請求兩個 16MiB
儲存空間
kind: Service
apiVersion: v1
metadata:
name: minio
labels:
app: minio
spec:
selector:
app: minio
ports:
- name: minio
port: 9000
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: minio
labels:
app: minio
spec:
serviceName: "minio"
replicas: 2
selector:
matchLabels:
app: minio
template:
metadata:
labels:
app: minio
directpv.min.io/organization: minio
directpv.min.io/app: minio-example
directpv.min.io/tenant: tenant-1
spec:
containers:
- name: minio
image: minio/minio
env:
- name: MINIO_ACCESS_KEY
value: minio
- name: MINIO_SECRET_KEY
value: minio123
volumeMounts:
- name: minio-data-1
mountPath: /data1
- name: minio-data-2
mountPath: /data2
args:
- "server"
- "http://minio-{0...1}.minio.default.svc.cluster.local:9000/data{1...2}"
volumeClaimTemplates:
- metadata:
name: minio-data-1
spec:
storageClassName: directpv-min-io
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 16Mi
- metadata:
name: minio-data-2
spec:
storageClassName: directpv-min-io
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 16Mi