k8s的pv和pvc简述

网友投稿 261 2022-09-12

k8s的pv和pvc简述

pvc:资源需要指定:1.accessMode:访问模型;对象列表:    ReadWriteOnce – the volume can be mounted as read-write by a single node:  RWO - ReadWriteOnce一人读写    ReadOnlyMany – the volume can be mounted read-only by many nodes:          ROX - ReadOnlyMany 多人只读    ReadWriteMany – the volume can be mounted as read-write by many nodes:     RWX - ReadWriteMany多人读写2.resource:资源限制(比如:定义5GB空间,我们期望对应的存储空间至少5GB。)    3.selector:标签选择器。不加标签,就会在所有PV找最佳匹配。4.storageClassName:存储类名称:5.volumeMode:指后端存储卷的模式。可以用于做类型限制,哪种类型的PV可以被当前claim所使用。6.volumeName:卷名称,指定后端PVC(相当于绑定) PV和PVC是一一对应关系,当有PV被某个PVC所占用时,会显示banding,其它PVC不能再使用绑定过的PV。PVC一旦绑定PV,就相当于是一个存储卷,此时PVC可以被多个Pod所使用。(PVC支不支持被多个Pod访问,取决于访问模型accessMode的定义)。PVC若没有找到合适的PV时,则会处于pending状态。PV是属于集群级别的,不能定义在名称空间中。PVC时属于名称空间级别的。PV的reclaim policy选项:   默认是Retain保留,保留生成的数据。   可以改为recycle回收,删除生成的数据,回收pv   delete,删除,pvc解除绑定后,pv也就自动删除。例:在nfs服务器上,使用nfs创建多个数据卷,在k8s集群中定义PV/PVC,让pod关联PVC1.在/data/volumes/创建多个目录:v1,v2,v3,v4,v5,修改/etc/exports文件,使数据卷单独输出。1 /data/volumes/v1 192.168.1.0/24(rw,no_root_squash)2 /data/volumes/v2 192.168.1.0/24(rw,no_root_squash)3 /data/volumes/v3 192.168.1.0/24(rw,no_root_squash)4 /data/volumes/v4 192.168.1.0/24(rw,no_root_squash)5 /data/volumes/v5 192.168.1.0/24(rw,no_root_squash)exportfs -arv:显示nfs当前输出的可以挂载的数据卷。showmount -e :显示nfs导出的数据卷2.在k8s集群中定义pv: 1 vim pv-demo.yaml 2 apiVersion: v1 3 kind: PersistentVolume 4 metadata: 5 name: pv001 6 labels: 7 name: pv001 8 spec: 9 nfs:10 path: /data/volumes/v111 server: k8s-node212 accessModes: ["ReadWriteMany","ReadWriteOnce","ReadOnlyMany"]13 capacity:14 storage: 2Gi 15 ---16 ...pv00217 ---18 ...pv00319 ...创建5个以上内容,修改name和path等参数应用:kubectl apply -f pv-demo.yaml查看:kubectl get pv1 NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE2 pv001 2Gi RWO,ROX,RWX Retain Available 56m3 pv002 5Gi RWO,ROX Retain Available 56m4 pv003 3Gi ROX,RWX Retain Available 56m5 pv004 10Gi RWO Retain Available 56m6 pv005 15Gi ROX Retain Available 56m3.创建PVC和pod 1 vim pod-pvc.yaml 2 apiVersion: v1 3 kind: PersistentVolumeClaim 4 metadata: 5 name: mypvc 6 namespace: default 7 spec: 8 accessModes: ["ReadWriteOnce"] ##注:这个访问模型必须是PV中存在的访问模型的子集,否则会找不到合适的PV,会一直Pending。 9 resources:10 requests:11 storage: 6Gi12 ---13 apiVersion: v114 kind: Pod15 metadata:16 name: myapp-pv17 namespace: default18 spec:19 containers:20 - name: myapp21 image: ikubernetes/myapp:v122 imagePullPolicy: IfNotPresent23 ports:24 - name: html25 containerPort: 8026 volumeMounts:27 - name: nfs28 mountPath: "/usr/share/nginx/html" 29 volumes:30 - name: nfs31 persistentVolumeClaim:32 claimName: mypvc应用:kubectl apply -f pod-pvc.yaml 1 查看pvc:kubectl get pvc 2 NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE 3 mypvc Bound pv004 10Gi RWO 4s 4 查看pv:kubectl get pv 5 NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE 6 pv001 2Gi RWO,ROX,RWX Retain Available 56m 7 pv002 5Gi RWO,ROX Retain Available 56m 8 pv003 3Gi ROX,RWX Retain Available 56m 9 pv004 10Gi RWO Retain Bound default/mypvc 56m10 pv005 15Gi ROX Retain Available 56m 、如此pvc就绑定在合适的pv上了。绑定的pv是pv004,说明pod的/usr/share/nginx/html挂载在nfs服务器/data/volumes/v4目录下。4.查看pod:kubectl get pods -owide1 NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES2 myapp-pv 1/1 Running 0 24s 10.244.1.141 k8s-node2 5.在nfs服务器上,找到/data/volumes/v4目录,写个测试文件:1 vi /data/volumes/v4/index.html2

Smbands

测试:访问podIP1 curl 10.244.1.1412

Smbands

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:k8s的ingress资源简述
下一篇:k8s的secret基本概念及案例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~