K8S之持久卷(PV和PVC)

网友投稿 375 2022-09-09

K8S之持久卷(PV和PVC)

文章目录

​​一、概念​​

​​`1.1.PersistentVolume(PV)`​​​​`1.2.PersistentVolumeClaim(PVC)`​​​​`1.3.PV访问模式AccessModes`​​​​`1.4.PV回收策略RECLAIM POLICY`​​​​`PV状态STATUS`​​

​​二、PV静态供给​​

​​`2.1.创建PV`​​​​`2.2.创建PVC`​​​​`2.3.Pod使用PVC`​​​​`2.4.申请的存储空间是否为实际可用的存储空间?`​​

​​三、PV动态供给​​

​​`3.1.概念`​​​​`3.2.流程图`​​​​`3.3.部署外部插件(支持nfs)`​​​​`3.4.创建PVC`​​

一、概念

​​1.1.PersistentVolume(PV)​​

是集群中由管理员配置的一段网络存储。 它是集群中的资源,就像节点是集群资源一样。 生命周期独立于使用PV的任何单个pod。

​​1.2.PersistentVolumeClaim(PVC)​​

是由用户进行存储的请求,类似pod。 Pod消耗节点资源,PVC消耗PV资源。可以请求特定的大小和访问模式(例如,可以一次读/写或多次只读)。

​​1.3.PV访问模式AccessModes​​

RWO - ReadWriteOnce #单个Pod挂载并且可读写ROX - ReadOnlyMany #可以有多个Pod以只读方式挂载RWX - ReadWriteMany #可以有多个Pod以读写方式挂载

​​1.4.PV回收策略RECLAIM POLICY​​

Retain #人工回收,保留,默认选项Recycle #清除PV中的数据,相当于执行rm -rf /data/nfs/pv0001/*Delete #PV和与 PV 相连的后端存储同时删除,相当于执行rm -rf /data/nfs/pv0001

​​PV状态STATUS​​

二、PV静态供给

​​2.1.创建PV​​

创建两个PV,一个5G,一个10G注意:/data/nfs/pv0001和/data/nfs/pv0002需提前创建

apiVersion: v1kind: PersistentVolumemetadata: name: pv0001spec: capacity: storage: 5Gi volumeMode: Filesystem accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Recycle nfs: path: /data/nfs/pv0001 server: 192.168.1.10---apiVersion: v1kind: PersistentVolumemetadata: name: pv0002spec: capacity: storage: 10Gi volumeMode: Filesystem accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Recycle nfs: path: /data/nfs/pv0002 server: 192.168.1.10

​​2.2.创建PVC​​

根据​​访问模式​​​和​​存储空间​​​去绑定对应的PV,始终确保绑定的PV大小大于等于PVC的大小 PVC与PV是一一对应的 先删除Pod再删除PVC

apiVersion: v1kind: PersistentVolumeClaimmetadata: name: my-pvcspec: accessModes: - ReadWriteMany resources: requests: storage: 5Gi

​​2.3.Pod使用PVC​​

实际是把NFS共享的/data/nfs/pv0001目录绑定到容器的/usr/share/nginx/html目录

spec: containers: - name: empty image: nginx imagePullPolicy: IfNotPresent ports: - containerPort: 80 volumeMounts: - name: data mountPath: /usr/share/nginx/html volumes: - name: data persistentVolumeClaim: claimName: my-pvc

​​2.4.申请的存储空间是否为实际可用的存储空间?​​

不是。存储空间字段storage不能限制实际存储容量,只作为一种匹配标记,具体可用容量取决于后端网络存储(NFS、Ceph)。

就好比PV申请的存储空间为5G,而后端存储可用空间为100G,那么对应的Pod实际可使用100G的空间

现在K8s已逐步对部分存储提供自动限制的支持

三、PV动态供给

​​3.1.概念​​

Dynamic Provisioning机制工作的核心在于StorageClass的API对象

​​3.2.流程图​​

​​3.3.部署外部插件(支持nfs)​​

kubectl apply -f rbac.yaml #授权访问apiserver

vi deployment.yaml

修改镜像为gmoney23/nfs-client-provisioner填写正确的NFS服务器的地址和目录

kubectl apply -f deployment.yaml

kubectl apply -f class.yaml #创建存储类

​​3.4.创建PVC​​

apiVersion: v1kind: PersistentVolumeClaimmetadata: name: my-pvcspec: storageClassName: managed-nfs-storage accessModes: - ReadWriteMany resources: requests: storage: 25Gi

kubectl apply -f pvc.yaml

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

上一篇:K8S之StatefulSet有状态服务
下一篇:柚子味、香蕉牛奶味,会是你印象中夏天的味道吗?
相关文章

 发表评论

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