Kubernetes 使用 NFS 存储动态供给

Kubernetes 使用 NFS 存储动态供给

nfs-subdir-external-provisioner 可以通过此插件实现现有的 NFS 存储对集群的 PersistentVolumeClaims 进行动态供给。其官方网站为:https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/

安装步骤

  1. 配置好 NFS 或 NAS 存储

  2. 在管理主机安装好 helm 工具

  3. 执行以下命令进行安装

    1. 添加 helm 仓库

      helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
    2. 下载安装包

      helm pull nfs-subdir-external-provisioner/nfs-subdir-external-provisioner
      ]# ls
      nfs-subdir-external-provisioner-4.0.14.tgz
    3. 解压修改 values.yaml 配置文件

      image:
      repository: registry.cn-hangzhou.aliyuncs.com/liy36/nfs-subdir-external-provisioner
      tag: v4.0.2
      pullPolicy: IfNotPresent
      ...
      nfs:
      server: # NFS 服务器地址或域名
      path: /nfs-storage # 存储数据的路径,需要提前创建
      mountOptions:
      volumeName: nfs-subdir-external-provisioner-root
      # Reclaim policy for the main nfs volume
      reclaimPolicy: Retain
      ...
      storageClass:
      create: true
      # Set a provisioner name. If unset, a name will be generated.
      # provisionerName:
      # Set StorageClass as the default StorageClass
      # Ignored if storageClass.create is false
      defaultClass: true # 修改为true
      ...
      # 这里的按需配置即可
      resources: {} # 资源限制
      # limits:
      # cpu: 100m
      # memory: 128Mi
      # requests:
      # cpu: 100m
      # memory: 128Mi
      nodeSelector: {} # 节点选择器
      tolerations: [] # 污点容忍度
      affinity: {} # 亲和性配置
      # Additional labels for any resource created
      labels: {} # 标签
    4. 部署到集群中

      # 进入到解压之后的目录 nfs-subdir-external-provisioner
      helm install nfs-storage ./ -n ops -f values.yaml # -n 部署到 ops 名称空间, -f 指定 values.yaml 文件
    5. 查看部署状态

      # 检查 Pod
      kubectl get pods -n ops
      # 检查 storageClass # 集群级别资源,不需要指定名称空间。
      kubectl get storageclass # 若 values.yaml 文件中 defaultClass 设置为 true 结果应显示.*(default)。
    6. 验证存储类是否可用

      cat << test-claim.yaml > EOF
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
      name: test-claim
      namespace: ops
      spec:
      accessModes:
      - ReadWriteOnce
      volumeMode: Filesystem
      resources:
      requests:
      storage: 1Gi
      limits:
      storage: 1Gi
      storageClassName: nfs-storage # 需要填写第五步查看存储类时返回的 name
      EOF
      # 先验证语法
      kubectl apply -f test-claim.yaml --dry-run=client # 客户端验证
      kubectl apply -f test-claim.yaml --dry-run=server # 服务端验证
      # 部署
      kubectl apply -f test-claim.yaml
      # 查看
      kubectl describe -f test-claim.yaml
      # 在 nfs 服务端查看创建的文件夹, 文件夹以 <namespace>-<pvc-name>-pvc-<uuid> 命名
      ls -dl ops-test-claim-pvc-5e256b35-cf93-4987-a0d0-04f80e61a431
    7. 后续如有 Pod 需要使用存储时,创建 PVC 挂载即可。

posted @   liy36  阅读(511)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示