卷供应
概述
卷供应涉及使用默认的 directpv-min-io
存储类或具有 directpv-min-io
提供程序的自定义存储类来创建 PersistentVolumeClaim
。存储类带有卷绑定模式 WaitForFirstConsumer。此模式会延迟卷绑定和 PersistentVolume
的供应,直到创建使用 PersistentVolumeClaim
的 Pod
。
DirectPV 选择或供应与 Pod 的调度约束指定的拓扑匹配的 PersistentVolumes
。这些包括但不限于资源需求、节点选择器、Pod 亲和性和反亲和性以及污点和容忍度。使用卷的 Pod 会调度到已调度卷的节点。这确保了对 Pod 的高性能数据访问。
处于 Ready
状态的 DirectPV 卷表示该卷已准备好绑定到 Pod。绑定后,Bound
状态将设置为卷。
创建持久卷声明
必须在 PersistentVolumeClaim
规范中使用特定参数定义持久卷声明。
这些参数是
参数 | 值 |
---|---|
volumeMode |
Filesystem |
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-data-1
和 minio-data-2
PVC 声明两个 16MiB
存储以用于两个 minio
Pod 的示例
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