代码改变世界

k8s pv pvc

  qgbo  阅读(8)  评论(0编辑  收藏  举报

https://artifacthub.io/packages/helm/nfs-subdir-external-provisioner/nfs-subdir-external-provisioner

部署:

 

helm install -n nfs-provisioner nfs-subdir-external-provisioner-retain nfs-subdir-external-provisioner/nfs-subdir-external-provisioner
--set nfs.server={IP}
--set nfs.path=/nfsshare
--set storageClass.reclaimPolicy=Retain
--set storageClass.name=nfs-retain

这样部署之后,在statefulset 中使用这个 pv

然后删掉 namespace,  对应的PV 变为 release 状态.

再次部署,会生成新的PVC:

kubectl get pv,  就是没用用上之前的

 kubectl get pvc:

 如果要恢复数据: 删除 spec.claimRef, 重新部署即可

k get sc   // 查看存储类

kubectl patch storageclass <your-class-name> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'    // 设置默认存储类 

 

 

 

如下代码测试本地的PVC:

复制代码
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mypv
  labels:
    type: local
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: local-path
  capacity:
    storage: 10Gi
  hostPath:
    path: "/nfs"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: local-path-pvc
spec:
  volumeName: mypv
  accessModes:
    - ReadWriteOnce
  storageClassName: local-path
  resources:
    requests:
      storage: 1Gi
---
apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: docker.io/library/busybox
    name: test-container
    volumeMounts:
    - mountPath: /cache
      name: cache-volume
  volumes:
  - name: cache-volume
    persistentVolumeClaim:
      claimName: local-path-pvc
复制代码

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
[root@master ~]# cat pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: storage-loki-0
  labels:
    type: local
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: "local-storage"
  capacity:
    storage: 10Gi
  hostPath:
    path: "/nfs"
[root@master ~]# cat pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: foo-pvc
spec:
  storageClassName: "local-storage" # Empty string must be explicitly set otherwise default StorageClass will be set
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
[root@master ~]# cat sc.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: local-storage
#表示不需要自动创建PV
provisioner: kubernetes.io/no-provisioner
#WaitForFirstConsumer表示需要等到Pod运行之后才让PVC和PV绑定。因为在使用Local Persistent Volume的时候PV和对应的PVC必须
#要跟随Pod在同一node下面,否则会调度失败。
volumeBindingMode: WaitForFirstConsumer

  

相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示