跳至主要内容

見證節點

自 v1.3.0 版本起提供

部署在生產環境中的 Harvester 叢集需要一個控制平面 (control plane) 來進行節點和 pod 管理。一個典型的三節點叢集擁有三個管理節點,每個節點都包含完整的控制平面元件。其中一個關鍵元件是 etcd,Kubernetes 使用它來儲存資料(設定、狀態和中繼資料)。etcd 節點數量必須始終為奇數(例如,Harvester 中預設為 3),以確保維持法定人數 (quorum)。

某些情況下,您可能需要避免將工作負載和使用者資料部署到管理節點。在這種情況下,可以指派一個叢集節點擔任 見證 (witness) 角色,限制其僅作為 etcd 叢集成員運作。見證節點負責建立成員法定人數(節點的多數),以達成對叢集狀態更新的共識。

見證節點不儲存任何資料,但仍須考慮 etcd 節點的 硬體建議。使用資源受限的硬體會顯著影響叢集效能,如文章 Slow etcd performance (performance testing and optimization) 所述。

Harvester v1.3.0 支援具有兩個管理節點和一個見證節點(以及可選的一個或多個工作節點)的叢集。如需更多關於 Harvester 中節點角色的資訊,請參閱 角色管理。

important

節點只能在加入叢集時被指派為 witness 角色。每個叢集只能有一個見證節點。

建立包含見證節點的 Harvester 叢集​

您可以在節點加入新建立的叢集時,指派 witness 角色給該節點。

在以下範例中,建立了一個包含三個節點的叢集,並且節點 harvester-node-1 被指派了 witness 角色。harvester-node-1 消耗較少的資源,且僅具備 etcd 功能。

NAME↑               STATUS   ROLE                         VERSION               PODS     CPU      MEM    %CPU    %MEM    CPU/A    MEM/A AGE        
harvester-node-0 Ready control-plane,etcd,master v1.27.10+rke2r1 70 1095 10143 10 63 10000 15976 4d13h
harvester-node-1 Ready etcd v1.27.10+rke2r1 7 258 2258 2 14 10000 15976 4d13h
harvester-node-2 Ready control-plane,etcd,master v1.27.10+rke2r1 36 840 6905 8 43 10000 15976 4d13h

由於叢集必須有三個節點,晉升控制器 (promote controller) 會將其他兩個節點晉升。之後,叢集將擁有兩個控制平面節點和一個見證節點。

見證節點上的工作負載​

見證節點僅執行以下必要的基礎工作負載:

  • harvester-node-manager
  • cloud-controller-manager
  • etcd
  • kube-proxy
  • rke2-canal
  • rke2-multus

升級包含見證節點的叢集​

一般升級需求和程序適用於包含見證節點的叢集。然而,此類叢集中若存在降級的卷冊,可能會導致升級操作失敗。

包含見證節點之叢集中的 Longhorn 複本​

Harvester 使用分散式區塊儲存系統 Longhorn 來管理區塊裝置卷冊。Longhorn 會被配置到管理節點和工作節點,但不會配置到見證節點,因為見證節點不儲存任何資料。

Longhorn 會為每個卷冊建立複本 (replicas) 以增加可用性。複本包含該卷冊的一連串快照,每個快照儲存與前一個快照的變更差異。在 Harvester 中,預設 StorageClass harvester-longhorn 的複本數值為 3。

限制​

見證節點不儲存任何資料。這意味著在三節點叢集(無工作節點)中,每個 Longhorn 卷冊僅會建立兩個複本。然而,預設 StorageClass harvester-longhorn 為了高可用性,其複本數值為 3。如果您使用此 StorageClass 建立卷冊,Longhorn 將無法建立設定數量的複本。這會導致卷冊在 Longhorn UI 上被標記為 Degraded(降級)。

總之,您必須使用符合叢集設定的 StorageClass。

  • 2 個管理節點 + 1 個見證節點:建立一個新的預設 StorageClass,並將 Number of Replicas 參數設定為 2。這可確保每個 Longhorn 卷冊僅建立兩個複本。
  • 2 個管理節點 + 1 個見證節點 + 1 個或多個工作節點:您可以使用現有的預設 StorageClass。

new storageclass replica 2 set to default

如果您已經使用原始的預設 StorageClass 建立了卷冊,您可以在 嵌入式 Longhorn UI 的 Volume 畫面上修改複本數量。

redirect-to-longhorn-volume-page update-replica-count-to-2

已知問題​

1. 建立包含見證節點的叢集時,Harvester UI 上的 Network Config: Create 畫面無法識別任何可用於所有節點的 NIC。​

create network config with all nodes no uplink

解決方法是選取一個非見證節點,然後選取可用於該特定節點的 NIC。

create network config with specific node get uplink

您必須為叢集中的每個非見證節點重複此程序。可以在不同節點間使用相同的 uplink 設定。

相關議題:[BUG] Unable to select NIC to create network config when cluster contains witness node

2. 選取 VM 移轉的目標節點時,目標清單包含了見證節點。​

vm migration target witness node

請勿選取見證節點作為移轉目標。如果選取了,VM 移轉將會失敗。

相關議題:[BUG] The witness node should not be selected as a migration target