Local卷

Local卷具有以下特性,可用于一些特殊的应用,例如需要存储临时文件到本地磁盘进行分析。

(1)local卷所代表的是某个被挂载的本地存储设备,例如磁盘、分区或者目录。

(2)与 hostPath卷相比,local卷能够以持久和可移植的方式使用,而无需手动将 Pod 调度到节点。

(3)local卷仍然取决于底层节点的可用性,并不适合所有应用程序。 如果节点变得不健康,那么 local卷也将变得不可被 Pod 访问。使用它的 Pod 将不能运行。 使用 local卷的应用程序必须能够容忍这种可用性的降低,以及因底层磁盘的耐用性特征而带来的潜在的数据丢失风险。

(4)Kubernetes 调度器使用 PersistentVolume 的 nodeAffinity信息来将使用 local卷的 Pod 调度到正确的节点。对于Stateful Set (有状态)的服务,其调度的节点不会漂移,第一次启动在哪个节点,后续启动都在该节点。

示例

apiVersion: v1
kind: PersistentVolume
metadata:
  name: server-pv
spec:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 20Gi
  local:
    path: /data/extract-server
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - k8s-slave01
          - k8s-slave02
          - k8s-slave03
  persistentVolumeReclaimPolicy: Delete
  storageClassName: local-storage
  volumeMode: Filesystem

创建PVC(PersistentVolumeClaim,PVC

表达的是用户对存储的请求。这里采用的是单主机读写模式:ReadWriteOnce

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: server-pvc
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
  storageClassName: local-storage
  volumeMode: Filesystem
  volumeName: server-pv
status:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 20Gi
  phase: Bound

挂载

在服务中配置挂载即可

volumes:
      - name: vol1
        persistentVolumeClaim:
          claimName: server-pvc