k8s-NFS系統配置
NFS(network filesystem),nfs檔案系統在k8s中主要用於持久化儲存,可以被多個pod訪問和共享資料。
特點
- 資料永續性
nfs為k8s的pod提供了一種持久化資料的方式,即使pod被刪除,資料也不會丟失,這是因為資料存在nfs伺服器上,並不是存在pod上。 - 資源共享
nfs系統的檔案可以用於多個pod共享相同的資料。
NFS服務端安裝-master節點
以centos系統為例
# 安裝nfs服務端
yum install nfs-utils -y
# 建立共享目錄
mkdir /nfs
# 配置nfs共享
vim /etc/exports
# 新增以下一行
/nfs *(rw,sync,no_root_squash) # 指明共享目錄和許可權設定
# 啟動nfs服務,並設定開機啟動
systemctl start nfs-server
systemctl enable nfs-server
# 檢視nfs伺服器狀態
systemctl status nfs-server
# 啟動rpcbind服務,設定開機啟動
systemctl start rpcbind
systemctl enable rpcbind
# 檢視rpcbind服務狀態
systemctl status rpcbind
# 需要保證nfs伺服器能夠訪問,關閉防火牆
systemctl stop firewalld
systemctl disable firewalld
NFS客戶端安裝-work節點
以centos為例
yum install nfs-utils -y
# 建立掛載點,掛載nfs共享
mkdir /mnt/nfs
mount -t nfs server_ip:/shared_directory /mnt/nfs
# 自動掛載
server_ip:/shared_directory /mnt/nfs nfs defaults 0 0
欄位解釋
/nfs *(rw,async,no_root_squash)
ro # 只讀
rw # 讀寫
sync # 同步寫入記憶體和硬碟
async # 非同步,優先寫入記憶體,之後寫入硬碟
Secure # 請求源埠小於1024
# 使用者許可權
root_squash # nfs客戶端使用root登入,對映到nfs伺服器的匿名使用者
no_root_squash # nfs客戶端使用root登入,對映到nfs伺服器的root使用者
all_squash # 全部使用者對映為nfs伺服器的匿名使用者
anonuid=UID # 將客戶端使用者對映為使用者ui
anongid=GID # 將客戶端使用者對映為使用者gi
NFS-server工作原理
NFS允許網路上的節點像本地檔案一樣訪問和共享檔案系統。NFS伺服器設定共享目錄後,客戶端可以將這些目錄掛載到本地檔案系統中。
NFS伺服器在啟動時會隨機使用一些埠來處理檔案系統操作,這些埠通常是小於1024的隨機埠。NFS伺服器的主要守護程序包括rpc.nfsd和rpc.mountd,分別負責處理檔案系統操作和掛載請求。
NFS伺服器的配置在/etc/exports檔案中進行,定義了共享目錄的訪問許可權以及使用者訪問限制。
客戶端訪問NFS系統場景:當NFS客戶端需要訪問伺服器上的檔案時,先透過RPC服務(rpcbind)詢問NFS伺服器的埠資訊。RPC服務響應客戶端的請求,提供NFS服務使用的埠資訊。客戶端使用這些埠資訊來建立與NFS伺服器的連線,並進行資料傳輸。資料傳輸通常直接在客戶端和伺服器之間進行,不再經過RPC服務。
rpcbind工作原理
RPC作為一種協議,允許一個程式透過網路向另一個程式請求服務,而無需瞭解網路技術的細節。RPC透過一箇中介服務如rpcbind或portmap管理服務的埠號。
Rpcbind記錄了NFS使用的埠資訊,並在客戶端請求時提供這些埠資訊,以便客戶端能夠連線到正確的埠進行資料傳輸。通常NFS服務會向RPC註冊其使用的埠。RPC服務監聽的埠通常是111。