glusterfs

我們複用 kubernetes 的三臺主機做 GlusterFS 存儲。

安裝 GlusterFS

我們直接在物理機上使用 yum 安裝,如果你選擇在 kubernetes 上安裝,請參考 https://github.com/gluster/gluster-kubernetes/blob/master/docs/setup-guide.md

# 先安裝 gluster 源
$ yum install centos-release-gluster -y

# 安裝 glusterfs 組件
$ yum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma glusterfs-geo-replication glusterfs-devel

## 創建 glusterfs 目錄
$ mkdir /opt/glusterd

## 修改 glusterd 目錄
$ sed -i 's/var\/lib/opt/g' /etc/glusterfs/glusterd.vol

# 啓動 glusterfs
$ systemctl start glusterd.service

# 設置開機啓動
$ systemctl enable glusterd.service

#查看狀態
$ systemctl status glusterd.service

配置 GlusterFS

配置 volume

GlusterFS 中的 volume 的模式有很多種,包括以下幾種:

  • 分佈卷(默認模式):即 DHT, 也叫 分佈卷: 將文件以 hash 算法隨機分佈到 一臺服務器節點中存儲。

  • 複製模式:即 AFR, 創建 volume 時帶 replica x 數量: 將文件複製到 replica x 個節點中。

  • 條帶模式:即 Striped, 創建 volume 時帶 stripe x 數量: 將文件切割成數據塊,分別存儲到 stripe x 個節點中 (類似 raid 0)。

  • 分佈式條帶模式:最少需要 4 臺服務器才能創建。 創建 volume 時 stripe 2 server = 4 個節點: 是 DHT 與 Striped 的組合型。

  • 分佈式複製模式:最少需要 4 臺服務器才能創建。 創建 volume 時 replica 2 server = 4 個節點:是 DHT 與 AFR 的組合型。

  • 條帶複製卷模式:最少需要 4 臺服務器才能創建。 創建 volume 時 stripe 2 replica 2 server = 4 個節點: 是 Striped 與 AFR 的組合型。

  • 三種模式混合: 至少需要 8 臺 服務器才能創建。 stripe 2 replica 2 , 每 4 個節點 組成一個 組。

這幾種模式的示例圖參考 GlusterFS Documentation

因爲我們只有三臺主機,在此我們使用默認的分佈卷模式請勿在生產環境上使用該模式,容易導致數據丟失。

Glusterfs 調優

Kubernetes 中使用 GlusterFS

官方的文檔見https://github.com/kubernetes/examples/tree/master/staging/volumes/glusterfs.

以下用到的所有 yaml 和 json 配置文件可以在 glusterfs 中找到。注意替換其中私有鏡像地址爲你自己的鏡像地址。

kubernetes 安裝客戶端

因爲我們 glusterfs 跟 kubernetes 集群複用主機,因爲此這一步可以省去。

配置 endpoints

配置 service

創建測試 pod

配置 PersistentVolume

PersistentVolume(PV)和 PersistentVolumeClaim(PVC)是 kubernetes 提供的兩種 API 資源,用於抽象存儲細節。管理員關注於如何通過 pv 提供存儲功能而無需關注用戶如何使用,同樣的用戶只需要掛載 PVC 到容器中而不需要關注存儲卷採用何種技術實現。PVC 和 PV 的關係跟 pod 和 node 關係類似,前者消耗後者的資源。PVC 可以向 PV 申請指定大小的存儲資源並設置訪問模式。

PV 屬性

  • storage 容量

  • 讀寫屬性:分別爲

    • ReadWriteOnce:單個節點讀寫;

    • ReadOnlyMany:多節點只讀 ;

    • ReadWriteMany:多節點讀寫

PVC 屬性

  • 訪問屬性與 PV 相同

  • 容量:向 PV 申請的容量 <= PV 總容量

配置 PVC

創建 nginx deployment 掛載 volume

參考

Last updated