K8S 基于本地存储的持久卷

假设有如下三个节点的 K8S 集群:

k8s31master 是控制节点

k8s31node1、k8s31node2 是工作节点

容器运行时是 containerd

 一、背景分析

阅读本文,默认您有 PV-PVChostPath 相关知识。

由于安全方面的考虑,K8S 官方并不推荐 hostPath + 节点选择器 来作为 Pod 的持久化方案。

转而提倡 local 持久卷的方式。我们今天就来实践一下 local 持久卷

二、no-provisioner 方式(无供应商方式)

1)创建 StorageClass

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: local-storage  # 名称需与 PV 中的 storageClassName 对应
provisioner: kubernetes.io/no-provisioner  # 关键:本地卷不支持动态供应
volumeBindingMode: WaitForFirstConsumer  # 关键:延迟绑定直到 Pod 调度
reclaimPolicy: Delete  # 卷回收策略(Retain/Delete)

provisioner=kubernetes.io/no-provisioner:本地卷还不支持动态制备; 然而还是需要创建 StorageClass 以延迟卷绑定,直到 Pod 被实际调度到合适的节点。

volumeBindingMode=WaitForFirstConsumer:延迟 PVC 与 PV 的绑定。延迟卷绑定使得调度器在为 PersistentVolumeClaim 选择一个合适的 PersistentVolume 时能考虑到所有 Pod 的调度限制。

 2)创建挂载目录

因为本地卷不支持动态制备,所以需要在每个工作节点上手工创建挂载目录。

# node1 创建
[root@k8s31node1 ~]# mkdir -p /data/local_storage
# node2 创建
[root@k8s31node2 ~]# mkdir -p /data/local_storage

 3)创建 PV

apiVersion: v1
kind: PersistentVolume
metadata:
  name: local-rwo-pv
  labels:
    type: local
spec:
  capacity:
    storage: 1Gi  # 定义存储容量
  volumeMode: Filesystem  # 可选:Filesystem 或 Block
  accessModes:
    - ReadWriteOnce  # 关键:仅允许单节点读写挂载
  persistentVolumeReclaimPolicy: Delete # 可选:Retain/Recycle/Delete
  storageClassName: local-storage  # 引用上面创建的存储类
  local:
    path: /data/local_storage  # 节点上的实际路径
  nodeAffinity:  # 限制卷只能被特定节点使用
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - k8s31node1 # 替换为你的节点名

accessModes=ReadWriteOnce:因为是本地存储,所以只允许单节点挂载。

nodeAffinity:节点亲和性,限制卷只能被具有标签 kubernetes.io/hostname 且值为 k8s31node1 的节点使用。可以通过命令 kubectl get node --show-labels 查看节点标签。

  •  查看 pv

 STATUS=Available:实现可用状态。

 4)创建 PVC

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: local-rwo-pvc
spec:  
  storageClassName: local-storage
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  •  查看 pv,pvc

因为是延迟绑定,所以 PVC 显示为 Pending 状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值