(三)Kubernetes---持久化儲存
一、叢集內本地基礎
(一) Volume
Volume是pod中能夠唄多個容器訪問的共享目錄,k8s通過Volume實現一個pod中的不同容器之間的資料共享及資料的持久化儲存。
Volume的生命週期不與pod中的單個容器的生命週期相關,當容器終止或重啟時,Volume中資料不會丟失。
(二) 持久化儲存
1、簡單儲存:EmptyDir、HostPath、HFS
2、高階儲存:PV、PVC
3、配置儲存:ConfigMap、Secret
(三) 示例
1、EmptyDir
EmptyDir是最基礎的volume型別,對應node上的空目錄
EmptyDir是pod被分配到node時建立的,k8s會自動分配一個目錄,當pod銷燬時,emptyDir的資料也會永久銷燬。
containers:
volumeMounts:
- name: logs-volume
mountPath: /var/log/nginx
volumes:
- name: logs-volume
emptyDir: {}
2、HostPath
HostPath是將node主機中的一個計時目錄掛載到pod中,以供容器使用,保證pod銷燬後資料仍然存在與node主機中
containers:
volumeMounts:
- name: logs-volume
mountPath: /var/log/nginx
volumes:
- name: logs-volume
hostPath:
path: /root/logs
type: DirectorOrCreatr #目錄存在就使用,不存在就先建立再使用
# type型別:
#1、DirectorOrCreatr #目錄存在就使用,不存在就先建立再使用
#2、Director #目錄必須存在
#3、FileOrCreate #檔案必須存在,不存在就先建立在使用
#4、File 檔案必須存在
二、網路持久化儲存
網路檔案儲存系統,可是搭建一臺或多臺檔案伺服器,然後將Pod中的儲存直接連線到檔案伺服器系統上,這樣無論Pod在節點上怎麼轉移,只要Node跟檔案伺服器對接沒問題,資料就可以成功訪問。
(一) NFS檔案伺服器
1、搭建NFS檔案伺服器
#安裝nfs服務
yum install nfs-utils -y
#準備共享目錄
mkdir /home/nfs/data -pv
#修改配置,將共享目錄以讀寫許可權暴露給所有網段
vim /etc/exports
/home/nfs/data *(rw,no_root_squash)
#開機啟動及啟動nfs服務
sudo systemctl enable nfs & systemctl start nfs
#在n每個node節點都安裝nfs,以驅動nfs裝置,只安裝不啟動
yum install nfs-utils -y
2、資源清單配置nfs
containers:
volumeMounts:
- name: logs-volume
mountPath: /var/log/nginx
volumes:
- name: logs-volume
nfs:
server: 192.168.189.100 #nfs伺服器地址
path: /root/data/nfs #網路共享檔案路徑
(二) 高階儲存
1、PV與PVC
pv 是持久券的意思,是對底層的共享儲存的一種抽象。一般情況下pv由k8s管理員進行建立和配置,它與底層具體的共享儲存技術有關,並通過外掛完美與共享儲存對接。
pvc 是持久券宣告的意思,是使用者對於儲存需求的一種宣告。PVC其實就是使用者向k8s系統發出的一種資源需求申請。
2、PV資源清單
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv2
spec:
nfs: #儲存型別,與底層真正儲存對應
capacity: #儲存能力,目前只支援儲存空間的設定
storage: 2Gi
#訪問模式 :
1、ReadWriteOnce (讀寫許可權,只能被單節點掛載)
2、ReadOnlyMany (只讀許可權,可以被多節點掛載)
3、ReadWriteMany (讀寫許可權,可被多節點掛在)
accessModes: ReadWriteMany
#回收策略:
1、Retain(保留) 保留資料,需要管理員手工清理資料
2、Recycle(回收) 清楚PV中的資料,效果相當於 rm -rf /the volume/*
3、Delete(刪除) 與PV相連的後端儲存完成volume的刪除操作,相當於常見的雲服務商的儲存服務
需要注意,底層不同的儲存型別可能支援的回收策略不同
persistentVolumeReclaimPolicy: #回收策略
PV的狀態(status)
Available 可用,表示可用狀態,還未被任何PVC繫結
Bound 已繫結,表示PV已被PVC繫結
Released 已釋放,表示PVC被刪除,但是資源還未被叢集重新宣告
Failed 失敗,表示該PV的自動回收失敗
#示例
apiVersion: v1
kind: PersistentVolume
metadata:
name: redis
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
nfs:
path: /home/nfs/data
server: 2.16.210.108
3、PVC資源清單
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: redis
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
安裝pv kubectl apply -f pv.yaml
檢視pv kubectl get pv -o wide
安裝pvc kubectl apply -f pvc.yaml
檢視pvc kubectl get pvc -o wide
相關文章
- Kubuesphere部署Ruoyi(三):持久化儲存配置持久化
- Redis持久化儲存Redis持久化
- Flutter持久化儲存之檔案儲存Flutter持久化
- Flutter持久化儲存之資料庫儲存Flutter持久化資料庫
- Flutter持久化儲存之key-value儲存Flutter持久化
- scrapy框架持久化儲存框架持久化
- Redis 持久化儲存詳解Redis持久化
- Redis持久化儲存——>RDB & AOFRedis持久化
- iOS資料持久化儲存-CoreDataiOS持久化
- Kubernetes 持久化資料儲存 StorageClass持久化
- tensorflow模型持久化儲存和載入模型持久化
- Kubernetes的故事之持久化儲存(十)持久化
- AOF持久化(儲存的是操作redis命令)持久化Redis
- 利用Kubernetes實現容器的持久化儲存持久化
- 容器雲對接持久化儲存並使用持久化
- Room-資料持久化儲存(入門)OOM持久化
- 使用容器化塊儲存OpenEBS在K3s中實現持久化儲存持久化
- 1.05 docker的持久化儲存和資料共享Docker持久化
- Docker的持久化儲存和資料共享(四)Docker持久化
- React通過redux-persist持久化資料儲存ReactRedux持久化
- Kubernetes 持久化儲存之 NFS 終極實戰指南持久化NFS
- 探索 Kubernetes 持久化儲存之 Longhorn 初窺門徑持久化
- K8S中如何使用Glusterfs做持久化儲存?K8S持久化
- 探索 Kubernetes 持久化儲存之 Rook Ceph 初窺門徑持久化
- 8 個用於 Kubernetes 持久化儲存的 CNCF 專案持久化
- k8s使用glusterfs實現動態持久化儲存K8S持久化
- k8s使用ceph實現動態持久化儲存K8S持久化
- 一文讀懂 K8s 持久化儲存流程K8S持久化
- Kubernetes 使用 ceph-csi 消費 RBD 作為持久化儲存持久化
- k8s-資料持久化儲存卷,nfs,pv/pvcK8S持久化NFS
- Tair持久儲存系列技術解讀AI
- 雲原生時代 容器持久化儲存的最佳方式是什麼?持久化
- flutter 持久化儲存-----資料庫sqflite|8月更文挑戰Flutter持久化資料庫
- Docker最全教程——資料庫容器化之持久儲存資料(十一)Docker資料庫
- 用非常硬核的JAVA序列化手段實現物件流的持久化儲存Java物件持久化
- 杉巖:雲原生時代,容器持久化儲存方案選對了嗎?持久化
- DelayQueue系列(三):持久化方案持久化
- K8S系列第九篇(持久化儲存,emptyDir、hostPath、PV/PVC)K8S持久化