<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
官方檔案地址: https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes/
PresistentVolume(PV)是指叢集管理員設定提供的某儲存系統上的一段儲存空間,它是對底層共用儲存的抽象,將共用儲存作為一種可由使用者申請使用的資源,實現"儲存消費"機制,通過儲存外掛,PV支援使用多種網路儲存等多種後端儲存系統,例如,NFS、CephFS、RBD。PV是叢集級別的資源,不屬於任何名稱空間,使用者對PV資源的使用需要通過PersistentVolumeClaim(PVC)提供的使用申請來完成繫結,PVC是PV資源的消費者,它向PV申請特定大小的空間及存取模式(rw或ro)從而建立出PVC儲存卷。然後再由Pod資源通過PersistentVolumeClaim儲存卷關聯使用。
PersistentVolumeClaim,PVC是儲存卷型別的資源,它通過申請佔用某個PersistentVolume而建立,它與PV是一對一的關係,使用者無須關心其底層實現細節,申請時,使用者只需要指定目標空間的大小,存取模式,PV標籤選擇器和StorageClass等相關資訊即可。
PresistentVolume Spec支援如下幾個通用欄位,用於定義PV的容量,存取模式和回收策。
1.Capacity: PV的容量
2.volumeMode: 卷型別,用於指定此卷可被用作檔案系統還是裸格式的塊裝置,預設為Filesystem。
3.accessMode: PV的存取模式參考官方
4.persistentVolumeReclaimPolicy: PV空間的處理機制,可用型別為Retain(預設)、Recycle或Delete。
5.storageClassName: 當前PV所屬的StorageClass的名稱,預設為空,即不屬於任何StorageClass。
6.mountOptions: 掛載選項組成的列表,如ro,soft和hard等。
[root@kn-server-master01-13 pv]# cat hostpath-pv.yaml apiVersion: v1 kind: PersistentVolume metadata: name: pv-volume-001 spec: storageClassName: "host-storage" 資源型別的標識 persistentVolumeReclaimPolicy: "Retain" 回收策略預設為Retain capacity: 定義空間 storage: 1Gi 定義空間大小 accessModes: 存取模式 - ReadWriteOnce 存取模式為僅被單個節點讀寫掛載,單路讀寫 hostPath: 臨時儲存在哪個地方 path: "/mnt/data" [root@kn-server-master01-13 pv]# kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pv-volume-001 1Gi RWO Retain Available host-storage 4m36s
[root@kn-server-master01-13 pv]# cat nfs-pv.yaml apiVersion: v1 kind: PersistentVolume metadata: name: nfs-pv labels: 標籤 release: nfs-redis spec: storageClassName: "nfs-storage" 資源型別表示 persistentVolumeReclaimPolicy: "Recycle" 回收策略為Recycle相當rm -rf / capacity: storage: 0.5Gi accessModes: - ReadWriteMany nfs: server: 10.0.0.15 path: /data/redis [root@kn-server-master01-13 pv]# kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE nfs-pv 512Mi RWX Recycle Available nfs-storage 62m pv-volume-001 1Gi RWO Retain Bound default/001-pvc host-storage 160m
PersistentVolumeClaim,PVC是儲存卷型別的資源,它通過申請佔用某個PersistentVolume而建立,它與PV是一對一的關係,使用者無須關心其底層實現細節, 申請時,使用者只需要指定目標空間的大小,存取模式,PV標籤選擇器和StorageClass等相關資訊即可。
PVC的Spec欄位可巢狀欄位如下,
[root@kn-server-master01-13 pv]# cat hostpath-pvc.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: 001-pvc spec: storageClassName: "host-storage" 和PV的storageclassname須一致,否則無法識別。 accessModes: - ReadWriteOnce resources: pvc的資源限定僅指其空間大小。 requests: storage: 0.9Gi 大小為0.9Gi; [root@kn-server-master01-13 pv]# kubectl apply -f hostpath-pvc.yaml Available: 可用狀態的自由資源,尚未被繫結PVC。 Bound: 已經繫結至某個PVC。 Released: 繫結的PVC已經被刪除,但資源尚被叢集回收。 Failed: 因自動回收資源失敗而處於的故障狀態。 [root@kn-server-master01-13 pv]# kubectl get pv pv-volume-001 NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pv-volume-001 1Gi RWO Retain Bound default/001-pvc host-storage 33m [root@kn-server-master01-13 pv]# kubectl describe pv pv-volume-001 Name: pv-volume-001 Labels: <none> Annotations: pv.kubernetes.io/bound-by-controller: yes Finalizers: [kubernetes.io/pv-protection] StorageClass: host-storage Status: Bound Claim: default/001-pvc Reclaim Policy: Retain Access Modes: RWO VolumeMode: Filesystem Capacity: 1Gi Node Affinity: <none> Message: Source: Type: HostPath (bare host directory volume) Path: /mnt/data HostPathType: Events: <none> [root@kn-server-master01-13 pv]# kubectl describe pvc 001-pvc Name: 001-pvc Namespace: default StorageClass: host-storage Status: Bound 已係結 Volume: pv-volume-001 Labels: <none> Annotations: pv.kubernetes.io/bind-completed: yes pv.kubernetes.io/bound-by-controller: yes Finalizers: [kubernetes.io/pvc-protection] Capacity: 1Gi Access Modes: RWO VolumeMode: Filesystem Used By: <none> Events: <none>
NFS即是網路檔案系統,它是一種分散式檔案系統協定,kubernetes中的NFS儲存卷用於將某些事先存在的NFS伺服器匯出(export)的儲存空間掛載到Pod中以供容器使用,與臨時儲存不同的是,NFS儲存卷在Pod物件終止後僅僅是被解除安裝而非刪除,NFS是檔案系統級共用服務,它支援同時存在多路掛載,定義NFS儲存卷時,常用如下欄位。
server nfs伺服器的地址或者主機名,必須欄位。
pathnfs伺服器匯出(共用)的檔案系統路徑,必須欄位。
readOnly是否以唯讀方式掛載,預設為false。
生產環境建議使用Ceph、azureDisk等公有云端儲存。
[root@kn-server-node02-15 ~]# yum install nfs-utils -y [root@kn-server-node02-15 ~]# cat /etc/exports /nfs/data5/ 10.0.0.0/24(rw,no_root_squash) /data/redis 10.0.0.0/24 10.0.0.0/24 pod存取nfs服務會將源IP修改為節點IP,允許所有節點存取NFS服務 (ro,no_root_squash)存取NFS-SERVER共用目錄的使用者如果是root,它對共用目錄有root許可權 準備資料共用目錄 [root@kn-server-node02-15 ~]# mkdir /data/redis -p [root@kn-server-node02-15 ~]# systemctl enable nfs-server Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service. 伺服器端設定 各個工作節點安裝nfs-utils ubuntu安裝: sudo apt-get install nfs-common 。 centos安裝nfs-utils [root@kn-server-master01-13 pv]# showmount -e 10.0.0.15 Export list for 10.0.0.15: /data/redis 10.0.0.0/24 master節點和node節點都需要安裝 [root@kn-server-node01-14 ~]# showmount -e 10.0.0.15 Export list for 10.0.0.15: /data/redis 10.0.0.0/24
[root@kn-server-master01-13 pv]# cat nfs-pvc.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nfs-pvc labels: 首先標籤須匹配,不然無法匹配,也可以稱為強行繫結。 release: nfs-redis spec: storageClassName: "nfs-storage" 須同屬一個 accessModes: - ReadWriteMany resources: requests: storage: 0.5Gi 指定大小。 [root@kn-server-master01-13 pv]# kubectl apply -f nfs-pvc.yaml persistentvolumeclaim/nfs-pvc created 顯示已為繫結狀態。 [root@kn-server-master01-13 pv]# kubectl get pv,pvc NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE persistentvolume/nfs-pv 512Mi RWX Recycle Bound default/nfs-pvc nfs-storage 78m persistentvolume/pv-volume-001 1Gi RWO Retain Bound default/001-pvc host-storage 175m NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE persistentvolumeclaim/001-pvc Bound pv-volume-001 1Gi RWO host-storage 143m persistentvolumeclaim/nfs-pvc Bound nfs-pv 512Mi RWX nfs-storage 6s 通過describe來檢視 [root@kn-server-master01-13 pv]# kubectl describe pv nfs-pv Name: nfs-pv Labels: release=nfs-redis 所屬標籤 Annotations: pv.kubernetes.io/bound-by-controller: yes Finalizers: [kubernetes.io/pv-protection] StorageClass: nfs-storage storageclass名稱 Status: Bound 繫結狀態 Claim: default/nfs-pvc 名稱空間 Reclaim Policy: Recycle 回收策略 Access Modes: RWX 存取模式 VolumeMode: Filesystem Capacity: 512Mi 大小 Node Affinity: <none> Message: Source: Type: NFS (an NFS mount that lasts the lifetime of a pod) Server: 10.0.0.15 來自那個nfs伺服器 Path: /data/redis 共用的資料目錄 ReadOnly: false Events: <none>
[root@kn-server-master01-13 pv]# cat pod-redis.yaml apiVersion: v1 kind: Pod metadata: name: redis spec: containers: - name: redis image: redis volumeMounts: - name: redis-data mountPath: /data volumes: - name: redis-data persistentVolumeClaim: claimName: nfs-pvc [root@kn-server-master01-13 pv]# kubectl describe pods redis Containers: redis: Container ID: docker://d82061a1a86f56432e9956fc46bc810e577a0d89b91894e266e883bef68f5d9d Image: redis Image ID: docker-pullable://redis@sha256:db485f2e245b5b3329fdc7eff4eb00f913e09d8feb9ca720788059fdc2ed8339 Port: <none> Host Port: <none> State: Running Started: Sun, 27 Nov 2022 21:57:34 +0800 Ready: True Restart Count: 0 Environment: <none> Mounts: /data from redis-data (rw) 已經掛載 [root@kn-server-master01-13 pv]# kubectl describe pvc nfs-pvc Name: nfs-pvc Namespace: default StorageClass: nfs-storage Status: Bound Volume: nfs-pv Labels: release=nfs-redis Annotations: pv.kubernetes.io/bind-completed: yes pv.kubernetes.io/bound-by-controller: yes Finalizers: [kubernetes.io/pvc-protection] Capacity: 512Mi Access Modes: RWX VolumeMode: Filesystem Used By: redis 這裡可以看到是redis這個Pod正在使用這個PVC Events: <none>
[root@kn-server-master01-13 pv]# redis-cli -h 192.168.1.86 192.168.1.86:6379> set key haitang OK 192.168.1.86:6379> get key "haitang" 192.168.1.86:6379> bgsave Background saving started 192.168.1.86:6379> exit 可以看到資料是寫到nfs-server了 [root@kn-server-node02-15 redis]# ll 總用量 4 -rw-r--r-- 1 polkitd input 110 11月 27 22:14 dump.rdb 刪除Pod後,資料是不會丟失的。 [root@kn-server-master01-13 pv]# kubectl delete pods redis pod "redis" deleted 資料是還在的。 [root@kn-server-node02-15 redis]# ll 總用量 4 -rw-r--r-- 1 polkitd input 110 11月 27 22:20 dump.rdb
以上就是kubernetes資料持久化PV PVC深入分析詳解的詳細內容,更多關於kubernetes資料持久化PV PVC的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45