Ubuntu

VPN 網路和 Kubernetes 集群

  • November 7, 2020

在跨多個物理伺服器設置帶有虛擬機的 Kubernetes 集群時,我有一個關於最佳實踐的問題。我們能夠在一台物理伺服器上成功地在多個 VM 實例之間設置集群。這些 VM 實例之一是主節點。VM 實例沒有自己的唯一公共 IP,只有內部 IP。

最終,這台伺服器將耗盡資源。這個想法是只設置一個額外的伺服器,上面有多個 VM 實例,並將這些新的 VM 實例作為新節點加入現有集群。

  • 像這樣的工作嗎?
  • 所有虛擬機實例都必須在同一個網路中嗎?
  • 這適用於 VPN 嗎?
  • 這是否需要每個物理伺服器的另一個主節點?

感謝您的任何指示和建議!

將這個答案發佈為社區 wiki,因為所描述的問題可能很廣泛,並且無法得到明確的答案。

隨意擴展它。


至於:

像這樣的工作嗎?

是的。事實上,有多種方法可以配置您的集群。我鼓勵您訪問以下站點以了解 Kubernetes 組件和架構的概述:

您可以使用以下連結(帶有指南)來設置一個集群,該集群將使用最少 3 個主節點和 3 個工作節點來進行高可用性設置:

一些技巧!

  • 對於生產環境,您需要一個專用的 HAProxy 負載平衡器節點(物理、虛擬)
  • 雖然 master 組件可以在任何機器上執行,但最佳實踐要求為 master 使用單獨的伺服器,而不是在這台機器上執行任何使用者容器。
  • 最佳實踐是在生產環境中以多主方式執行集群——以確保主組件本身的高可用性和彈性。這意味著您至少需要 3 個主節點(奇數,以確保仲裁

至於法定人數etcd

請記住,這etcd需要法定人數才能執行。您可以通過以下連結了解更多資訊:


所有虛擬機實例都必須在同一個網路中嗎?

這將取決於您的設置的網路架構。最簡單的解決方案是創建一個私有網路,該網路將跨越您打算部署 Kubernetes 的多台物理機(在同一網路中擁有節點)。

轉述剛才所說的話:

  • VM #1onPhysical server #1可以輕鬆與VM #2on通信Physical server #2

這適用於 VPN 嗎?

請具體說明 VPN 連接的確切含義:

  • 它是網路中節點之間的連接嗎?
  • 是從異地位置連接節點之間的連接嗎?
  • 它是開發人員/系統管理員訪問 Kubernetes 集群的連接嗎?

至於旁注,您可以查看 Wireguard(具有內置加密的網路外掛):


這是否需要每個物理伺服器的另一個主節點?

總之沒有但是。總有一個但是:

  • 可以創建一個集群,其中將有一個主節點和多個物理機器上的多個工作人員。此設置將起作用,但它不是高度可用的解決方案。
  • 可以創建一個集群,其中將有多個主節點跨越多個物理伺服器。這在很大程度上取決於您的確切需求。

我考慮過這個問題,這可能是一個很長的問題,但是如果您認為每台物理機器上的 master 和 worker 在任何方面都是耦合的,那麼它們不是。每個工作人員應該能夠與每個主節點通信,反之亦然。


他們也必須在同一個專用網路中嗎?還是您只是在每台伺服器上創建一個主節點並僅將主節點連接在一起?

您需要執行$ kubeadm init以在單個主節點上初始化集群。然後您將需要 $ kubeadm join在每個節點(主節點/工作節點)上執行。它們(master/worker)之間的區別在於參數:

  • --control-plane# <– 此參數將指示主節點(僅在主節點上使用)。

我還鼓勵您查看其他資源:

引用自:https://serverfault.com/questions/1040893