1. 程式人生 > 實用技巧 >搭建NFS Server

搭建NFS Server

#背景

Kubernetes 對 Pod 進行排程時,以當時叢集中各節點的可用資源作為主要依據,自動選擇某一個可用的節點,並將 Pod 分配到該節點上。在這種情況下,Pod 中容器資料的持久化如果儲存在所在節點的磁碟上,就會產生不可預知的問題,例如,當 Pod 出現故障,Kubernetes 重新排程之後,Pod 所在的新節點上,並不存在上一次 Pod 執行時所在節點上的資料。

為了使 Pod 在任何節點上都能夠使用同一份持久化儲存資料,我們需要使用網路儲存的解決方案為 Pod 提供資料卷。常用的網路儲存方案有:NFS/cephfs/glusterfs。

本文介紹一種使用 centos 搭建 nfs 伺服器的方法。此方法僅用於測試目的

,請根據您生產環境的實際情況,選擇合適的 NFS 服務。

#配置要求

  • 兩臺 linux 伺服器,centos 7
    • 一臺用作 nfs server
    • 另一臺用作 nfs 客戶端

#配置NFS伺服器

TIP

本章節中所有命令都以 root 身份執行

  • 執行以下命令安裝 nfs 伺服器所需的軟體包
    yum install -y nfs-utils
    
  • 執行命令vim /etc/exports,建立 exports 檔案,檔案內容如下:
    /root/nfs_root/ *(insecure,rw,sync,no_root_squash)
    
  • 執行以下命令,啟動 nfs 服務
    # 建立共享目錄,如果要使用自己的目錄,請替換本文件中所有的 /root/nfs_root/
    mkdir /root/nfs_root
    
    systemctl enable rpcbind
    systemctl enable nfs-server
    
    systemctl start rpcbind
    systemctl start nfs-server
    exportfs -r
    
  • 檢查配置是否生效
    exportfs
    # 輸出結果如下所示
    /root/nfs_root /root/nfs_root
    
    已複製到剪貼簿!

#在客戶端測試nfs

TIP

  • 本章節中所有命令都以 root 身份執行
  • 伺服器端防火牆開放111、662、875、892、2049的 tcp / udp 允許,否則遠端客戶無法連線。
  • 執行以下命令安裝 nfs 客戶端所需的軟體包

    yum install -y nfs-utils
    
    已複製到剪貼簿!
  • 執行以下命令檢查 nfs 伺服器端是否有設定共享目錄

    # showmount -e $(nfs伺服器的IP)
    showmount -e 172.17.216.82
    # 輸出結果如下所示
    Export list for 172.17.216.82:
    /root/nfs_root *
    
    已複製到剪貼簿!
  • 執行以下命令掛載 nfs 伺服器上的共享目錄到本機路徑/root/nfsmount

    mkdir /root/nfsmount
    # mount -t nfs $(nfs伺服器的IP):/root/nfs_root /root/nfsmount
    mount -t nfs 172.17.216.82:/root/nfs_root /root/nfsmount
    # 寫入一個測試檔案
    echo "hello nfs server" > /root/nfsmount/test.txt
    
    已複製到剪貼簿!
  • 在 nfs 伺服器上執行以下命令,驗證檔案寫入成功

    cat /root/nfs_root/test.txt
    
    https://kuboard.cn/learning/k8s-intermediate/persistent/nfs.html#%E8%83%8C%E6%99%AF