kubesphere(k8s)如何设置存储类的默认路径

目录

1. 本地存储路径配置

1. 使用 Local Path Provisioner

2. 使用 OpenEBS LocalPV

2. NFS 存储路径配置

3. 重要注意事项

4. 总结


在 KubeSphere 中设置存储类的默认路径,本质上是通过配置存储类(StorageClass)及其背后的存储供给器(Provisioner)来实现的。这个“默认路径”的具体含义会根据你使用的存储类型(本地存储、NFS 等)有所不同。

1. 本地存储路径配置

如果你希望使用集群节点本身的磁盘空间,并指定一个统一的默认路径,通常会使用 ​​Local Path Provisioner​​ 或 ​​OpenEBS LocalPV​​ 这类供给器。

1. 使用 Local Path Provisioner

Rancher 提供的 Local Path Provisioner 是一个流行的本地存储动态供给方案。修改其默认路径(默认为 /opt/local-path-provisioner)的核心是修改其 ConfigMap。

  • ​部署供给器​​:

    kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml
  • ​修改配置​​:编辑 ConfigMap,将路径改为你所需的目录,例如 /app/k8s_data

    kubectl -n local-path-storage edit configmap local-path-config

    在 data.config.json中更新 nodePathMap

    {
      "nodePathMap": [
        {
          "node": "DEFAULT_PATH_FOR_NON_LISTED_NODES",
          "paths": ["/app/k8s_data"]  // 修改为你的自定义路径
        }
      ]
    }
  • ​重启 Pod​​:删除 Provisioner Pod 以加载新配置。

    kubectl -n local-path-storage delete pod -l app=local-path-provisioner
  • ​设为默认存储类​​(可选):

    kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
2. 使用 OpenEBS LocalPV

OpenEBS 的 LocalPV 供给器则通过 StorageClass 的 ​​annotations​​ 来指定默认路径。

以下 StorageClass 示例将数据目录设置为 /data1/openebs/local

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: local
  annotations:
    cas.openebs.io/config: |
      - name: StorageType
        value: "hostpath"
      - name: BasePath
        value: "/data1/openebs/local"  # 在此处修改你的默认路径
    openebs.io/cas-type: local
    storageclass.kubernetes.io/is-default-class: "true"
provisioner: openebs.io/local
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer

2. NFS 存储路径配置

当使用 NFS 作为后端存储时,“默认路径”指的是 ​​NFS 服务器上的共享目录​​。这个路径是在部署 NFS 客户端供给器(如 nfs-subdir-external-provisioner)时定义的。

在部署组的 YAML 文件中,你需要通过环境变量 NFS_PATH和 volumes字段来指定 NFS 服务器的共享目录:

env:
- name: NFS_SERVER
  value: 10.211.55.5 # 你的NFS服务器地址
- name: NFS_PATH
  value: /mnt/k8s/data # 在此处修改NFS服务器上的共享目录路径
volumes:
- name: nfs-client-root
  nfs:
    server: 10.10.15.15 # 与上面保持一致
    path: /mnt/k8s/data # 与上面保持一致

3. 重要注意事项

在进行任何修改之前,请务必牢记以下几点:

  • ​路径权限​​:确保所有工作节点上你​​自定义的本地路径(如 /app/k8s_data)已存在​​,并且容器进程(通常是非 root 用户)对其有​​读写权限​​。对于 NFS 路径,则需确保 NFS 服务器上的目录已正确导出(export)并设置了相应的权限。

  • ​数据迁移​​:​​修改存储类的路径不会自动迁移现有数据​​。如果你希望保留原有 PersistentVolume (PV) 中的数据,需要先​​手动备份旧路径下的数据​​,然后在新的存储类生效后,​​将数据恢复到新的路径或新创建的 PV 中​​。

  • ​节点亲和性​​:本地存储(Local PV)与特定节点绑定。如果使用本地存储,当 Pod 被重新调度到其他节点时,将无法访问原有节点上的数据。这是选择本地存储时必须要考虑的特性。

  • ​动态供给的便利性​​:使用 StorageClass 进行动态供给可以大幅简化管理流程。你无需为每个应用手动创建 PV,系统会在用户创建 PersistentVolumeClaim (PVC) 时​​自动按需创建 PV​​并绑定。

  • ​规划存储​​:根据你对性能、可用性、扩展性和数据共享的需求,​​谨慎选择存储类型​​(本地、NFS、云存储等)。

  • ​测试先行​​:在对生产环境进行操作前,​​务必在测试环境中验证整个流程​​,包括路径修改、存储类配置、PVC 创建和数据备份恢复。

  • ​使用声明式管理​​:尽量使用 YAML 文件来定义和管理你的 StorageClass、PV、PVC 等资源,这便于版本控制和重现部署过程。

4. 总结

在 KubeSphere 中设置存储类的默认路径,​​核心在于配置存储供给器​​:

  • 对于 ​​本地存储​​(如 Local Path Provisioner),通过​​修改其 ConfigMap​​ 中的 nodePathMap来指定节点上的默认数据目录。

  • 对于 ​​OpenEBS LocalPV​​,通过在 ​​StorageClass 的 annotation (cas.openebs.io/config)​​ 中设定 BasePath来指定。

  • 对于 ​​NFS 存储​​,通过在部署 ​​NFS 客户端供给器​​时设定 ​NFS_PATH环境变量和 volume​​ 来指定 NFS 服务器上的共享目录。

### Kubernetes配置和使用 MinIO 存储类 #### 创建命名空间 为了更好地管理资源,建议先创建一个专门用于 MinIO 的命名空间。 ```bash kubectl create namespace minio-system ``` #### 安装 MinIO Operator MinIO 提供了一个官方的 Helm Chart 来简化部署过程。通过安装 MinIO Operator 可以更方便地管理和扩展 MinIO 实例。 ```bash helm repo add minio https://operator.min.io/ helm install minio-operator minio/minio-operator \ --namespace minio-system \ --set serviceAccount.create=true \ --set rbac.create=true ``` 等待几分钟让 Operator 启动完成[^1]。 #### 部署 Tenant (租户) Tenant 是指运行中的 MinIO 服务器实例集合。可以通过自定义资源配置文件来指定所需的参数,例如副本数量、持久卷声明(PVC)大小等。 ```yaml apiVersion: minio.min.io/v2 kind: Tenant metadata: name: example-minio spec: pools: - servers: 4 # 总共四个节点参与构成分布式集群 volumesPerServer: 2 # 每个节点挂载两个数据盘 version: latest # 使用最新版本镜像 credentialsSecretName: "minio-secret" ... ``` 此 YAML 文件片段展示了如何设置一个多节点多磁盘架构的 MinIO 分布式集群[^5]。 #### 设置 PersistentVolumeClaim 和 StorageClass 为了让 Pod 访问外部存储设备上的实际位置,需要预先准备好相应的 PVC 并关联至合适的 SC。对于 MinIO 而言,默认情况下会自动创建名为 `tenant-pv` 的 PV/PVC 组合以及对应的默认存储类别 `standard` 或者可以手动定制特定需求下的其他类型。 #### 应用配置并验证 最后一步就是提交上述所有配置K8s API Server 处理: ```bash kubectl apply -f path/to/your-config.yaml ``` 检查各组件的状态直至全部正常工作为止: ```bash watch kubectl get all,pvc -n minio-system ``` 一旦确认无误,则意味着已经成功搭建起了基于 Kubernetes 上面运作良好的 MinIO 对象存储服务[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值