卷配置

概述

卷配置涉及创建一个PersistentVolumeClaim使用默认设置directpv-min-io存储类或具有directpv-min-ioprovisioner. 存储类附带卷绑定模式等待首个消费者此模式延迟卷绑定和预配,直到PersistentVolume直到一个Pod使用PersistentVolumeClaim已创建。

DirectPV 选择或配置PersistentVolumes这些约束条件需与Pod调度约束所指定的拓扑结构相匹配。 包括但不限于资源需求、节点选择器、Pod亲和性与反亲和性、污点和容忍度等。 使用存储卷的Pod会被调度到已分配对应存储卷的节点上。 这确保了Pod能够实现高性能的数据访问。

A DirectPV volume inReadystate indicates that the volume is ready for binding to the pod. After binding,Bound状态已设置为音量。

创建持久卷声明

PersistentVolume 声明必须使用特定参数在PersistentVolumeClaim规范。

这些参数是:

参数
volumeMode Filesystem
storageClassName directpv-min-io或任何存储类名称包含directpv-min-io配置器
accessModes [ "ReadWriteOnce" ]

以下是一个示例声称8MiB存储来自directpv-min-io存储类sleep-pvcPVC:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: sleep-pvc
spec:
  volumeMode: Filesystem
  storageClassName: directpv-min-io
  accessModes: [ "ReadWriteOnce" ]
  resources:
    requests:
      storage: 8Mi

对于WaitForFirstConsumervolume binding mode,一个 pod 消耗sleep-pvc必须定义。 以下是一个使用示例sleep-volume安装于/mnt:

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 中创建持久卷声明

PV 声明必须使用特定参数进行定义volumeClaimTemplates规范。

这些参数是:

参数
storageClassName directpv-min-io或任何存储类名称包含directpv-min-io配置器
accessModes [ "ReadWriteOnce" ]

以下是一个声称两个16MiB存储来自directpv-min-io存储类minio-data-1minio-data-2PVC 到两个miniopods:

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

进一步阅读