1. 程式人生 > 其它 >16.持久化儲存

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的操作