16.持久化儲存
1.前言
之前我們有提到資料卷:emptydir
,是本地儲存,pod重啟,資料就不存在了,需要對資料持久化儲存
對於資料持久化儲存【pod重啟,資料還存在】,有兩種方式
- nfs:網路儲存【通過一臺伺服器來儲存】
2.步驟
2.1 持久化伺服器上操作
- 找一臺新的伺服器nfs服務端,安裝nfs
- 設定掛載路徑
使用命令安裝nfs
yum install -y nfs-utils
首先建立存放資料的目錄
mkdir -p /data/nfx
設定掛載路徑
# 開啟檔案
vim /etc/exports
# 新增如下內容
/data/nfs *(rw,no_root_squash)
執行完成後,即部署完我們的持久化伺服器
2.2 Node節點上操作
然後需要在k8s叢集node節點上安裝nfs,這裡需要在 node1 和 node2節點上安裝
yum install -y nfs-utils
執行完成後,會自動幫我們掛載上
2.3 啟動nfs服務端
下面我們回到nfs服務端,啟動我們的nfs服務
systemctl start nfs
2.4 K8s叢集部署應用
最後我們在k8s叢集上部署應用,使用nfs持久化儲存
# 建立一個pv檔案
mkdir pv
# 進入
cd pv
然後建立一個yaml檔案 nfs-nginx.yaml
通過這個方式,就掛載到了剛剛我們的nfs資料節點下的 /data/nfs 目錄
最後就變成了: /usr/share/nginx/html -> 192.168.44.134/data/nfs 內容是對應的
我們通過這個 yaml檔案,建立一個pod
kubectl apply -f nfs-nginx.yaml
建立完成後,我們也可以檢視日誌
kubectl describe pod nginx-dep1
可以看到,我們的pod已經成功創建出來了,同時下圖也是出於Running狀態
下面我們就可以進行測試了,比如現在nfs服務節點上新增資料,然後在看資料是否存在 pod中
# 進入pod中檢視
kubectl exec -it nginx-dep1 bash
3.PV和PVC
對於上述的方式,我們都知道,我們的ip 和埠是直接放在我們的容器上的,這樣管理起來可能不方便
所以這裡就需要用到 pv 和 pvc的概念了,方便我們配置和管理我們的 ip 地址等元資訊
PV:持久化儲存,對儲存的資源進行抽象,對外提供可以呼叫的地方【生產者】
PVC:用於呼叫,不需要關心內部實現細節【消費者】
3.1 實現流程
- PVC繫結PV
- 定義PVC
- 定義PV【資料卷定義,指定資料儲存伺服器的ip、路徑、容量和匹配模式】
3.2 舉例
建立一個 pvc.yaml
第一部分是定義一個 deployment,做一個部署
- 副本數:3
- 掛載路徑
- 呼叫:是通過pvc的模式
然後定義pvc
然後在建立一個 pv.yaml
然後就可以建立pod了
kubectl apply -f pv.yaml
然後我們就可以通過下面命令,檢視我們的 pv 和 pvc之間的繫結關係
kubectl get pv, pvc
到這裡為止,我們就完成了我們 pv 和 pvc的繫結操作,通過之前的方式,進入pod中檢視內容
kubect exec -it nginx-dep1 bash
然後檢視 /usr/share/nginx.html
也同樣能看到剛剛的內容,其實這種操作和之前我們的nfs是一樣的,只是多了一層pvc繫結pv的操作