簡體   English   中英

生產中 Kubernetes 的持久存儲

[英]Persistent Storage for Kubernetes in Production

我在試驗和學習 Rancher/Kubernetes。 在一本很短的電子書中,我讀到了這個。

“在 Kubernetes 集群中,可能需要有持久存儲可供應用程序使用。由於我們沒有在此集群中啟用 Kubernetes 雲提供程序,我們將部署將運行 NFS 服務器的 nfs-server-provisioner在我們的 Kubernetes 集群內部用於持久存儲。

這無論如何都不是一個生產就緒的解決方案,但有助於說明持久存儲結構。 "

我在 Rancher 中配置了 nfs-server-provisioner,一切都按預期工作。 但這里的問題。

對於我的“生產”家庭實驗室,我准備了 5 個裸機服務器並在 Kubernates 之上安裝了 Rancher,我還創建了一個 RKE2 集群

  • etcd 節點
  • 控制平面節點
  • 工作節點 1
  • 工作節點 2

我不使用 AWS、Azure 或任何雲解決方案。

什么是我的堆棧的“生產就緒解決方案”。 為什么“nfs-server-provisioner”不是“生產就緒解決方案”?

在沒有看到全文的情況下,這只是一個猜測,但基於該引用僅使用 nfs-server-provider 並不能提供“真實”和可靠的持久性。

nfs-server-provider 在集群中啟動 NFS 服務器,這意味着它的數據也在 kubernetes 的存儲系統中。 那里沒有真正的持久性:相反,基於 NFS 的持久性卷的持久性、可用性和安全性取決於 nfs-server-provider 如何存儲數據。 如果提供者以不高度可用的方式存儲提供的 NFS 數據(例如,在每個節點上的本地主機路徑上),那么您肯定會失去生產就緒性。 再說一次,如果 nfs-server-provider使用可靠的存儲 class,為什么不削減開銷並直接存儲 class 用於所有持久卷? 這可能是您引用的文本所指的內容。

我還想指出(至少在側面),當 NFS 服務器駐留在同一集群中時,使用 NFS 作為存儲 class 可能意味着自找麻煩。 如果由於某種原因在節點上配置 nfs-server-provider 失敗(即使是微不足道的,例如無法獲取圖像),您將無法訪問基於 NFS 的持久卷,從而在崩潰循環上發送依賴 NFS 卷的所有 pod。 然而,Longhorn、OpenEBS 和其他集群駐留存儲類也是如此。

進行生產就緒設置需要您至少將 nfs-server-provider 本身配置為使用生產級存儲后端或使用高度可用的外部 NFS。

另請注意,對於生產級,您應該至少有兩個控制平面和三個 etcd 節點,而不僅僅是一個和一個(永遠不要使用偶數個 etcd 節點。),一個節點可以運行多個節點,所以使用您的設備我會對於同時運行控制平面和 etcd 的兩個節點,可能是 go。 兩個“純”工作節點和一個節點完成這三個,最后一個不完全推薦。 但是在家庭實驗室環境中,在使用 pod 副本進行測試時會為您提供更多的工作人員。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM