LOADING

加载过慢请开启缓存 浏览器默认开启

Kubernetes CSI

2025/5/20 Kubernetes CSI
  1. PVC(Persistent Volume Claim,持久卷声明):是用户对存储资源的请求,用于向 Kubernetes 申请存储,抽象化存储的使用细节,方便应用获取和使用持久化存储。
  2. PV(Persistent Volume,持久卷):是 Kubernetes 中底层存储的抽象,代表具体的存储资源(如 NFS、云硬盘等),通过定义存储的类型、容量、访问模式等参数,供 PVC 动态绑定调用。
  3. StorageClass:用于定义存储资源的配置模板,可动态创建 PV,支持按需提供存储服务,通过参数配置存储的类型(如 SSD、HDD)、备份策略等,实现存储资源的自动化管理和动态供给。

静态绑定

使用NAS静态存储卷为例:

  • PV

    静态绑定的方式需要手动配置 PV,并设定 labels

    apiVersion: v1
    kind: PersistentVolume
    metadata:
    name: pv-nas
    labels:
        alicloud-pvname: pv-nas
    spec:
    capacity:
        storage: 5Gi
    accessModes:
        - ReadWriteMany
    csi:
        driver: nasplugin.csi.alibabacloud.com
        volumeHandle: pv-nas   # 必须与PV Name保持一致。
        volumeAttributes:
        server: "0c47****-mpk25.cn-shenzhen.nas.aliyuncs.com"  # NAS挂载点,与集群VPC一致。
        path: "/csi"  # 挂载子目录。
    mountOptions:
    - nolock,tcp,noresvport
    - vers=3
    
  • PVC

    PVC 通过 label selector 绑定上面手动配置的 PV

动态绑定

  1. 用户创建 PVC:用户通过 PVC 声明存储需求(如容量、访问模式、存储类型等),但此时无对应的 PV 绑定。
  2. StorageClass 匹配与创建:PVC 会根据指定的 StorageClass (或默认类),触发存储插件(如云厂商存储插件、NFS 插件等)动态创建符合要求的 PV,并将两者绑定。
  3. 应用使用存储:绑定完成后,Pod 可通过 PVC 挂载自动创建的 PV,实现按需获取存储资源,无需手动预先创建 PV。

PVCPVstorageClassName 为桥梁,以 StorageClass 为中介动态绑定。若 storageClassName 为空,则 PVC 将会和默认的 PV 绑定。

StorageClassallowVolumeExpansion 属性用于表明该存储是否允许扩容卷,以阿里云 NAS为例,若该属性为 true,则可以通过 patch PVC,修改其声明的卷大小来动态扩缩容。

CSI Driver

Understanding CSI architecture and communication

  • Daemonset Pod 应用可在所有节点上运行。
  • StatefulSet / Deployment Pod 应用作为 Kubernetes controller 运行。
  • 在 Daemonset Pod中,CSI Driver 通过 gRPC 和 socket 与 Kubelet 通信。
  • node-driver-registrar 将 CSI Driver 作为插件注册到 Kubelet。
    https://speakerdeck.com/bells17/kubernetes-and-csi?slide=44
  • 在 StatefulSet / Deployment Pod 中,CSI Driver 通过 gRPC 和 socket 与 CSI sidecar 应用通信。
  • CSI sidecar 应用作为 Kubernetes controller 运行。
  • 例如,创建 PVC 资源时,external-provisioner 会监听该事件,并调用 CSI Driver 的 CreateVolume rpc。
    https://speakerdeck.com/bells17/kubernetes-and-csi?slide=47