1.概念
2. helm安装storageclass
2.1 环境准备
2.2 安装storageclass
| [root@DoM01 ~]# git clone https://github.com/helm/charts.git |
| [root@DoM01 ~]# cd charts/ |
| [root@DoM01 ~]# helm install stable/nfs-client-provisioner --set nfs.server=10.252.97.213 --set nfs.path=/data/nfs/storage |
| [root@DoM01 ~]# git clone https://github.com/helm/charts.git |
| [root@DoM01 ~]# cd charts/stable/nfs-client-provisioner |
| [root@DoM01 ~]# helm install storageclass --set nfs.server=10.252.97.213 --set nfs.path=/data/nfs/storage -n storageclass ./ |
| [root@DoM01 ~]# kubectl get storageclasses.storage.k8s.io |
| NAME PROVISIONER AGE |
| nfs-client cluster.local/storageclass-nfs-client-provisioner 1d |
2.3 测试
| kind: PersistentVolumeClaim |
| apiVersion: v1 |
| metadata: |
| name: test-claim1 |
| spec: |
| accessModes: |
| - ReadWriteMany |
| resources: |
| requests: |
| storage: 1Mi |
| storageClassName: nfs-client |
| # kubectl create -f test_pvc.yaml |
| [root@DoM01 storageclass]# kubectl get pvc |
| NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE |
| test-claim1 Bound pvc-0d1ee112-bf86-45cc-afe0-c03c014edb43 1Mi RWX nfs-client 1d |
2.4 设置默认storageclass
| # kubectl patch storageclass nfs-client -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}' |
| [root@DoM01 ~]# kubectl get storageclasses.storage.k8s.io |
| NAME PROVISIONER AGE |
| nfs-client (default) cluster.local/storageclass-nfs-client-provisioner 1d |
| # kubectl patch storageclass nfs-client -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}' |
3. 手动安装storageclass
说明:nfs服务器准备同上
3.1 Provisioner(供应者)
创建 nfs-client.yaml
文件如下:
| kind: Deployment |
| apiVersion: extensions/v1beta1 |
| metadata: |
| name: nfs-client-provisioner |
| spec: |
| replicas: 1 |
| strategy: |
| type: Recreate |
| template: |
| metadata: |
| labels: |
| app: nfs-client-provisioner |
| spec: |
| serviceAccountName: nfs-client-provisioner |
| containers: |
| - name: nfs-client-provisioner |
| image: quay.io/external_storage/nfs-client-provisioner:latest |
| volumeMounts: |
| - name: nfs-client-root |
| mountPath: /persistentvolumes |
| env: |
| - name: PROVISIONER_NAME |
| value: fuseim.pri/ifs |
| - name: NFS_SERVER |
| value: 10.252.97.208 |
| - name: NFS_PATH |
| value: /data/nfs/storage |
| volumes: |
| - name: nfs-client-root |
| nfs: |
| server: 10.252.97.208 |
| path: /data/nfs/storage |
创建nfs-client-sa.yaml
文件:
| kind: PersistentVolumeClaim |
| apiVersion: v1 |
| metadata: |
| name: test-claim1 |
| spec: |
| accessModes: |
| - ReadWriteMany |
| resources: |
| requests: |
| storagapiVersion: v1 |
| kind: ServiceAccount |
| metadata: |
| name: nfs-client-provisioner |
| |
| --- |
| kind: ClusterRole |
| apiVersion: rbac.authorization.k8s.io/v1 |
| metadata: |
| name: nfs-client-provisioner-runner |
| rules: |
| - apiGroups: [""] |
| resources: ["persistentvolumes"] |
| verbs: ["get", "list", "watch", "create", "delete"] |
| - apiGroups: [""] |
| resources: ["persistentvolumeclaims"] |
| verbs: ["get", "list", "watch", "update"] |
| - apiGroups: ["storage.k8s.io"] |
| resources: ["storageclasses"] |
| verbs: ["get", "list", "watch"] |
| - apiGroups: [""] |
| resources: ["events"] |
| verbs: ["list", "watch", "create", "update", "patch"] |
| - apiGroups: [""] |
| resources: ["endpoints"] |
| verbs: ["create", "delete", "get", "list", "watch", "patch", "update"] |
| |
| --- |
| kind: ClusterRoleBinding |
| apiVersion: rbac.authorization.k8s.io/v1 |
| metadata: |
| name: run-nfs-client-provisioner |
| subjects: |
| - kind: ServiceAccount |
| name: nfs-client-provisioner |
| namespace: default |
| roleRef: |
| kind: ClusterRole |
| name: nfs-client-provisioner-runner |
| apiGroup: rbac.authorization.k8s.io |
3.3 创建storageclass
创建storageclass.yaml
文件:
| |
| apiVersion: storage.k8s.io/v1 |
| kind: StorageClass |
| metadata: |
| name: df-storage |
| provisioner: fuseim.pri/ifs |
3.4 测试和设置默认值
同 "2. helm安装storageclass"
4. 创建多个storageclass
如果供应者不变,直接创建storageclass即可
| apiVersion: storage.k8s.io/v1 |
| kind: StorageClass |
| metadata: |
| name: hello-world |
| provisioner: fuseim.pri/ifs |
| # kubectl create -f storageclass02.yaml |
5. 更改nfs存储
- 方法一
更改storageclass.yaml文件后,用 apply命令修改即可
- 方法二
edit直接修改供应者的deployment
FAQ
《【FAQ】1.21创建PV报错》

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?