持久卷(PersistentVolume,简称PV)是 Kubernetes 中用于存储的抽象,它可以用来持久化容器存储。PV 可以与存储类(StorageClass)相关联,或者独立于存储类。

持久卷概述

持久卷提供了以下特性:

  • 持久化存储:持久卷可以提供数据的持久化存储,即使容器被删除,数据也不会丢失。
  • 容量管理:持久卷有明确的容量限制,可以在创建时指定。
  • 访问模式:持久卷可以支持多种访问模式,如读写一次(ROX)、读写(RWX)、读(RO)。

使用场景

持久卷适用于以下场景:

  • 需要数据持久化的应用。
  • 需要在不同容器之间共享数据的应用。
  • 需要控制存储容量和应用存储成本的应用。

工作原理

Kubernetes 使用 PersistentVolumeClaim(简称PVC)来请求持久卷资源。当 PVC 与一个可用的 PV 匹配时,PVC 会绑定到相应的 PV,从而为应用程序提供存储资源。

配置与使用

以下是创建 PVC 的示例:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

创建 PVC 后,您可以在容器配置中挂载该 PVC:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-container
        image: my-image
        volumeMounts:
        - mountPath: /data
          name: my-pvc
      volumes:
      - name: my-pvc
        persistentVolumeClaim:
          claimName: my-pvc

更多配置和使用方法,请参考Kubernetes 官方文档

Kubernetes