中国免费域名申请网站,山东网站seo推广优化价格,媒体软文推广平台,营销型建设Kubernetes 硬盘持久化之 PV 和 PVC
Persistent Volume 定义
持久卷#xff08;PersistentVolume#xff0c;PV#xff09;是集群中的一块存储#xff0c;可以由管理员事先制备#xff0c; 或者使用存储类#xff08;Storage Class#xff09;来动态制备。 持久卷是集…Kubernetes 硬盘持久化之 PV 和 PVC
Persistent Volume 定义
持久卷PersistentVolumePV是集群中的一块存储可以由管理员事先制备 或者使用存储类Storage Class来动态制备。 持久卷是集群资源就像节点也是集群资源一样。PV 持久卷和普通的 Volume 一样拥有独立于任何使用 PV 的 Pod 的生命周期。
Persistent Volume 访问权限
权限缩写描述ReadWriteOnceRWO卷可以被一个节点以读写方式挂载。 ReadWriteOnce 访问模式仍然可以在同一节点上运行的多个 Pod 访问该卷。 对于单个 Pod 的访问请参考 ReadWriteOncePod 访问模式。ReadOnlyManyROX卷可以被多个节点以只读方式挂载。ReadWriteManyRWX卷可以被多个节点以读写方式挂载。
Persistent Volume 回收机制
机制Retain回收策略 Retain 使得用户可以手动回收资源。当 PersistentVolumeClaim 对象被删除时PersistentVolume 卷仍然存在对应的数据卷被视为已释放released。 由于卷上仍然存在这前一申领人的数据该卷还不能用于其他申领。Delete对于支持 Delete 回收策略的卷插件删除动作会将 PersistentVolume 对象从 Kubernetes 中移除同时也会从外部基础设施中移除所关联的存储资产。Recycle废弃如果下层的卷插件支持回收策略 Recycle 会在卷上执行一些基本的擦除 rm -rf /thevolume/*操作之后允许该卷用于新的 PVC 申领。
Persistent Volume Claim 定义
持久卷申领PersistentVolumeClaimPVC 表达的是用户对存储的请求。概念上与 Pod 类似。 Pod 会耗用节点资源而 PVC 申领会耗用 PV 资源。Pod 可以请求特定数量的资源CPU 和内存。同样 PVC 申领也可以请求特定的大小和访问模式。
PV 和 PVC 联合使用 申明 3 个 PV apiVersion: v1
kind: PersistentVolume
metadata:name: pv1labels:app: pv1
spec:nfs:server: 192.168.31.60path: /nfs-test/volume1accessModes: [ReadWriteOnce]persistentVolumeReclaimPolicy: Retaincapacity:storage: 1Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:name: pv2labels:app: pv2
spec:nfs:server: 192.168.31.60path: /nfs-test/volume2accessModes: [ReadOnlyMany]persistentVolumeReclaimPolicy: Deletecapacity:storage: 1Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:name: pv3labels:app: pv3
spec:nfs:server: 192.168.31.60path: /nfs-test/volume3accessModes: [ReadWriteMany]persistentVolumeReclaimPolicy: Deletecapacity:storage: 1Girootk8s-master1:~# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE
pv1 1Gi RWO Retain Available unset 8s
pv2 1Gi ROX Delete Available unset 8s
pv3 1Gi RWX Delete Available unset 8s声明 3 个 PVC apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: pvc1
spec:accessModes: [ReadWriteOnce]selector:matchLabels:app: pv1resources:requests:storage: 100Mi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: pvc2
spec:accessModes: [ReadOnlyMany]selector:matchLabels:app: pv2resources:requests:storage: 100Mi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: pvc3
spec:accessModes: [ReadWriteMany]selector:matchLabels:app: pv3resources:requests:storage: 100Mirootk8s-master1:~# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
pvc1 Bound pv1 1Gi RWO unset 2m35s
pvc2 Bound pv2 1Gi ROX unset 2m35s
pvc3 Bound pv3 1Gi RWX unset 2m35s申明 3 个 Deployment 进行测试 apiVersion: apps/v1
kind: Deployment
metadata:name: pv1-deploy
spec:replicas: 2selector:matchLabels:app: pv1-podtemplate:metadata:labels:app: pv1-podspec:containers:- name: pv1-testimage: busyboximagePullPolicy: IfNotPresentcommand: [/bin/sh]args: [-c,sleep 3600]volumeMounts:- name: pv1-testmountPath: /pv1-testvolumes:- persistentVolumeClaim:claimName: pvc1name: pv1-test
---
apiVersion: apps/v1
kind: Deployment
metadata:name: pv2-deploy
spec:replicas: 2selector:matchLabels:app: pv2-podtemplate:metadata:labels:app: pv2-podspec:containers:- name: pv2-testimage: busyboximagePullPolicy: IfNotPresentcommand: [/bin/sh]args: [-c,sleep 3600]volumeMounts:- name: pv2-testmountPath: /pv2-testvolumes:- persistentVolumeClaim:claimName: pvc2name: pv2-test
---
apiVersion: apps/v1
kind: Deployment
metadata:name: pv3-deploy
spec:replicas: 2selector:matchLabels:app: pv3-podtemplate:metadata:labels:app: pv3-podspec:containers:- name: pv3-testimage: busyboximagePullPolicy: IfNotPresentcommand: [/bin/sh]args: [-c,sleep 3600]volumeMounts:- name: pv3-testmountPath: /pv3-testvolumes:- persistentVolumeClaim:claimName: pvc3name: pv3-testNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pv1-deploy-9b857996d-9mlwq 1/1 Running 0 5m 10.244.194.97 k8s-worker1 none none
pv1-deploy-9b857996d-gs95v 1/1 Running 0 5m 10.244.126.40 k8s-worker2 none none
pv2-deploy-6f76d7c88b-bgr8k 1/1 Running 0 5m 10.244.126.41 k8s-worker2 none none
pv2-deploy-6f76d7c88b-grq7q 1/1 Running 0 5m 10.244.194.95 k8s-worker1 none none
pv3-deploy-8696ff555b-hkwgm 1/1 Running 0 5m 10.244.194.96 k8s-worker1 none none
pv3-deploy-8696ff555b-z72pp 1/1 Running 0 5m 10.244.126.42 k8s-worker2 none none测试过程中发现访问模式没有起到任何限制作用可能 Kubernetes 对特定配置下 NFS 没有很好的支持。