建立高可用叢集策略
使用 IBM Cloud® Kubernetes Service 設計標準叢集的應用程式最大可用性及容量。 利用內建功能,可提升叢集的高可用性,並在叢集中的某個元件發生故障時,防止您的應用程式出現停機情況。 但弄清楚叢集設定必須如何才能支援您的工作負載並不是一門精確的科學。 您可能需要測試不同的配置並進行調整。
高可用性(HA)是 IT 基礎架構中的核心技術,旨在確保您的應用程式即使在發生部分或全部站點故障後,仍能持續運作。 高可用性的主要目的是消除 IT 基礎架構中的潛在故障點。 例如,您可以新增備援並設定失效接手機制,來準備好應對系統故障的情況。 看 如何IBM Cloud確保高可用性和災難復原。
若要開始規劃叢集並調整叢集大小,請在建立叢集之前查看這些決策點。
決定要創建多少個集群
若將應用程式分散到多個工作者節點、區域及叢集,使用者遇到應用程式運作中斷時間的可能性就越低。 內建功能(例如負載平衡及隔離)可提高對於潛在主機、網路或應用程式失敗的備援。
您建立的叢集數量取決於您的工作負載、公司政策和法規、業務要求、您與客戶簽訂的服務等級協定、您想要消耗的資源以及您想要使用運算資源執行的操作。
-
多個叢集:多個叢集的管理通常較為複雜,但有助於您達成以下等重要目標。
- 符合需要您隔離工作負載的安全原則。
- 測試您的應用程式如何在不同版本的 Kubernetes 或其他叢集軟體(例如 Calico)中執行。
- 為不同地理區域的使用者實現更高的效能。
- 透過在叢集實例層級配置存取權限(而不是在命名空間層級自訂和管理多個 RBAC 策略),簡化使用者存取以控制叢集內的存取。
- 保持較低的工作節點數量。 擴展虛擬機器的網路頻寬約為 1000 Mbps。 如果您需要在叢集中部署數百個工作節點,可以將配置拆分為多個節點較少的叢集,或者訂購裸機節點。
- 允許更多的數量 服務整合 等5000多個服務。
- 為應用程式提供更高的可用性。 與在多區域叢集中使用 3 個區域類似,您可以透過在不同區域間建立三個叢集,為您的應用程式提供更高的可用性。
- 透過購置較小型的機器來處理您的工作量,從而降低成本。
-
一個叢集有更多工作節點:更少的叢集可以幫助您減少固定資源的營運工作量和每個叢集的成本。 您可以將工作池新增至一個叢集,以便為您的應用程式和服務元件提供不同類型的運算資源,而不是建立更多叢集。 當您開發應用程式時,所使用的資源位在相同的區域中,或在多區域中緊密地連接,因此您可以針對延遲、頻寬或相關故障做出一些假設。 然而,當您僅有一個叢集時,透過命名空間、資源配額和標籤來管理叢集就顯得更加重要。
確定需要多少位置
叢集可以在單一位置或多個位置的工作節點之間分配副本。 此選擇可能會影響下一節中可用的叢集類型。
將工作負載分佈到三個區域可確保應用程式在某個區域不可用時具有高可用性。 您必須讓工作節點平均分佈在所有三個可用性區域,以符合 IBM Cloud 服務層級協議 的 HA 配置。
區域故障會影響所有實體運算主機和 NFS 儲存空間。 故障包括電源、散熱、網路功能或儲存空間中斷,以及洪水、地震和颶風這類自然災害。 為了防止區域故障,您必須在兩個不同的區域中擁有由外部負載平衡器進行負載平衡的集群,在多區域位置創建一個集群,將主伺服器分佈在多個區域中,或者考慮在另一個區域中設定第二個集群。
多區域叢集
經典 VPC
多區域叢集將工作負載分佈到多個工作節點和區域,從而針對區域故障提供額外的保護。 工作節點自動部署為跨多個區域的三個副本。 如果整個區域發生中斷,您的工作負載將被調度到其他區域中的工作節點上,從而保護您的應用程式免受中斷影響。
每一個地區都有設定高可用性的負載平衡器,可從地區專用的 API 端點進行存取。 負載平衡器會將送入及送出要求遞送至地區區域中的叢集。 整個地區故障的可能性很低。 不過,若要說明此故障,您可以在不同地區設定多個叢集,然後使用外部負載平衡器連接它們。 如果某個區域完全故障,另一個區域的叢集便能接管該工作負載。
例如,您部署多專區集群 在都會區,例如 sydney,三個副本自動分佈在地鐵的三個區域,例如 au-syd-1,au-syd-2,和 au-syd-3。 如果一個區域中的資源停止執行,叢集工作負載仍會繼續在其他區域中執行。
多地區叢集需要數個「雲端」資源,視您的應用程式而定,它們可能既複雜又昂貴。 檢查您是否需要多地區設定,或您是否可以容忍潛在的服務中斷。 若要建立跨區域叢集,請確保您的應用程式和資料能夠部署在其他區域,且您的應用程式能夠處理全球資料複製。
與負載平衡器連結的多個集群
經典 VPC
為了保護您的應用程式免受主故障的影響,您可以在一個區域內的不同可用區中建立多個集群,並將它們與全域負載平衡器連接。 如果您必須在僅具有一個區域的經典資料中心中配置集群,但您仍然希望獲得多區域可用性的優勢,則此選項非常有用。
要將多個集群與全域負載平衡器連接,必須使用公共網路連接設定集群,並且您的應用程式必須透過 Ingress、路由 或 Kubernetes負載平衡器服務 公開。
若要在多個叢集之間平衡工作負載,您必須透過 Cloud Internet Services (CIS)設定全域負載平衡器,並將 ALB 或負載平衡器服務的公用 IP 位址新增至您的網域。 新增這些 IP 位址,即可在叢集之間遞送送入資料流量。
若要讓廣域負載平衡器偵測是否有一個叢集無法使用,請考慮將以 Ping 為基礎的性能檢查新增至每個 IP 位址。 當您設定此檢查時,DNS 提供者會定期對您新增至網域的 IP 位址執行連線測試。 如果有一個 IP 位址變成無法使用,則不會再將資料流量傳送至此 IP 位址。 不過,Kubernetes 不會自動從可用叢集之工作者節點的無法使用叢集裡重新啟動 Pod。 若您希望 Kubernetes 能自動在可用的叢集中重新啟動 Pod,請考慮建立一個多區域叢集。
單一區域叢集
經典
工作節點分佈在單一區域內的不同實體主機上。 此選項可防止某些中斷(例如在主更新期間),並且更易於管理。 但是,如果整個區域出現中斷,它不會保護您的應用程式。 如果您後來發現可用性有問題,部署在某些位置的單專區叢集稍後可以轉換為多專區叢集。
若您的叢集是在所有工作節點均位於單一區域的情況下建立的,則經典叢集的 Kubernetes 主節點具備高可用性,並分別為主API伺服器、etcd、排程器及控制器管理員配置獨立的實體主機,以防範系統中斷,例如在主節點更新期間發生中斷的情況。 您可以為單區域叢集新增額外的工作程序節點,以提高可用性並在一個工作程序節點發生故障時增加保護。
如果某個工作者節點關閉,則可用工作者節點上的應用程式實例會繼續執行。 Kubernetes 會自動從無法使用的工作者節點重新排定 Pod,以確保應用程式的效能及容量。 為確保您的 Pod 能均勻分佈於各工作節點上,請實作 Pod 親和性。
選擇集群類型
可供您使用的工作者節點規格和隔離層次取決於要使用的容器平台、叢集類型、要使用的基礎架構提供者以及要建立叢集的 IBM Cloud Kubernetes Service 位置。 您可以選擇經典、VPC 或Satellite集群。 您所需的叢集類型,取決於您針對叢集數量與位置所做的決定。
- 專有網路集群
- 工作節點是以虛擬伺服器實例的形式,在 VPC 基礎架構上進行配置。 VPC 是建立新叢集時建議採用的基础架構類型。 它預設提供網路隔離功能,並支援最新的 IBM Cloud Kubernetes Service 功能,包括專用主機與「預設安全」功能。
- Satellite叢集
- 工作節點會部署在您自己的基礎架構上,包括本地端硬體,或是其他雲端服務供應商(例如 AWS、Azure 及 GCP )中的虛擬機器。 當您需要在 IBM Cloud 資料中心以外的環境中執行由 IBM Cloud 管理的叢集時,請使用 Satellite。
- 經典集群
- 工作節點是在 IBM Cloud 經典基礎架構上的虛擬機器或裸機上進行配置的。 若您需要裸機工作節點、軟體定義儲存(SDS)規格,或需連線至現有的傳統基礎架構資源,請選用「經典」方案。
為叢集選擇作業系統
您可用的作業系統取決於您選擇的叢集類型。
- Ubuntu24
- 如需詳細資訊,請參閱 Ubuntu 24.04 發行紀錄。 請注意,使用 Ubuntu 24,NTP 使用
timesyncd,相關指令可能會更新。
要遷移到新的作業系統嗎? 請參閱 遷移至新的 Ubuntu 版本。
定義叢集命名策略
考慮為叢集提供在您帳戶中的資源群組和地區之間唯一的名稱,以避免命名衝突。 集群創建後無法重命名。
決定每個叢集有多少個工作節點
您為群集設定的可用性等級,會影響 IBM Cloud HA 服務等級協議條款 的涵蓋範圍。 例如,要獲得 SLA 條款下的完整 HA 覆蓋,您必須設定一個總共至少有 6 個工作節點的多區域集群,每個區域有兩個工作節點,均勻分佈在三個區域。
叢集裡的工作者節點總數決定了可用於叢集裡應用程式的運算容量。 您可以在叢集中設定多個工作節點,藉此在工作節點發生故障時保護您的系統配置。 工作節點的故障可能包括硬體故障(例如電源、散熱或網路問題),以及 VM 本身的問題。
-
多區域叢集 Classic VPC:建議每個區域至少配置兩個工作節點,因此三個區域總計需配置六個節點。 此外,將叢集的總容量計劃為至少等於總工作負載所需容量的 150%,這樣,如果一個區域停止運作,您仍有資源可用於維持工作負載。
-
單區域叢集請規劃在您的叢集中至少擁有三個工作節點。 此外,需要在叢集裡提供可容納 1 個額外節點的 CPU 和記憶體容量。 如果您的應用程式所需的資源少於工作節點上可用的資源,您或許可以將部署到單一工作節點的 Pod 數量加以限制。
請牢記:
- 你可以嘗試一下 集群自動縮放器 確保您始終有足夠的工作節點來滿足您的工作負載。
- Kubernetes 會限制您在叢集裡可以有的工作者節點數目上限。 請參閱「工作節點與 Pod 配額」以獲取更多資訊。
選擇工作節點風格
工作節點是指在實體硬體上運行的 VM。 工作者節點規格說明了佈建工作者節點時取得的運算資源,例如 CPU、記憶體和磁碟容量。 相同規格的工作者節點會分組成工作者節點儲存區。
當您選擇叢集類型時,您已經考慮過工作節點風格位置和機器類型如何影響您的決策。 當您在工作節點風格之間進行選擇時,請考慮以下事項。
-
租賃:根據您需要的硬體隔離級別,虛擬工作節點可以設定為由多個共享IBM客戶(多租戶)或專用於您的(單一租戶)節點。 裸機機器始終設定為專用機器。 在決定採用共享節點還是專用節點時,您可能需要諮詢法律部門,以討論您的應用程式環境所需的基础設施隔離程度及合規要求。
- 共享:物理資源(例如 CPU 和記憶體)會由部署在同一台實體硬體上的所有虛擬機器共同使用。 為了確保每個虛擬機器都可以獨立執行,虛擬機器監視器(也稱為 Hypervisor)會將實體資源區隔為隔離實體,並將它們當成專用資源配置至虛擬機器(Hypervisor 隔離)。 因為基礎硬體的成本是由多個客戶分攤,所以共用節點成本通常會比專用節點成本低。
- 投入的:所有實體資源僅供您使用。 您可以將多個工作者節點部署為相同實體主機上的虛擬機器。 與多方承租戶設定類似,系統管理程序也會確保每個工作者節點在可用實體資源中獲得應有的份額。
-
機器的種類:您有多種機器類型可供選擇。
-
虛擬機:為了獲得更大的靈活性、更快的配置時間、更多的自動可擴展功能以及更具成本效益的價格,請使用 VM。 您可以將 VM 用於大部份一般用途的使用案例,例如測試和開發環境、暫置和正式作業環境、微服務以及商務應用程式。 然而,這在效能方面存在取捨。
-
裸機(實體)伺服器:若您需要針對資料密集型或記憶體密集型工作負載進行高效能運算,請考慮建立由裸機工作節點組成的叢集。 由於您可以完全控制工作負載的隔離和資源消耗,因此您可以使用裸機來實現環境的 HIPAA 和 PCI 合規性。 裸機可讓您直接存取機器上的實體資源,例如記憶體或 CPU。 此設定可免除虛擬機器 Hypervisor,該 Hypervisor 將實體資源配置給在主機上執行的虛擬機器。 相反地,裸機的全部資源都專屬於該工作執行緒,因此您無需擔心「吵鬧的鄰居」會與您共享資源或拖慢效能。 實體規格的本端儲存空間多於虛擬規格,而且有些實體機型具有 RAID 可用來增加資料可用性。 工作節點上的本地儲存空間僅供短期處理使用,當您更新或重新載入工作節點時,主硬碟和輔助硬碟中的資料將會被清除。 裸機工作節點適用於經典叢集以及 VPC 裸機配置。
裸機工作節點的計費方式會因基礎架構類型而異。 傳統的裸機伺服器採每月計費。 若您在當月結束前取消經典型裸機伺服器,系統將向您收取費用至該月底為止。 在您訂購或取消經典裸機伺服器後,相關流程將透過您的 IBM Cloud 基礎架構帳戶以手動方式處理,因此可能需要超過一個工作天才能完成。 VPC 裸機伺服器採每小時計費,且無最低使用期限。
-
SDS 機器:軟體定義儲存 (SDS) 類型具有用於實體本機儲存的附加原始磁碟。 與主本地磁碟和輔助本地磁碟不同,這些原始磁碟在工作節點更新或重新載入時不會被清除。 由於資料與運算節點會並存,所以 SDS 機器很適合高效能工作負載。 軟體定義儲存方案僅適用於經典叢集,且不支援 VPC 叢集。
由於您可以完全控制工作負載的隔離和資源消耗,因此您可以使用 SDS 電腦來實現您的環境的 HIPAA 和 PCI 合規性。
一般您會在下列情況使用 SDS 機器: * 若您使用 SDS 擴充套件,例如 Portworx,請使用 SDS 機器。 * 如果您的應用程式是 StatefulSet 需要本地儲存空間的應用程式,您可以使用 SDS 機器並配置 Kubernetes 本地持久性卷宗。 * 如果您有需要額外原始本端儲存空間的自訂應用程式。
-
-
成本:一般而言,高負載的工作負載較適合在裸機實體伺服器上執行;至於性價比高的測試與開發工作,則可選擇在共用或專用硬體上的虛擬機器。
-
地點:決定您想要在哪些位置建立叢集。 在您想要的位置,它還可能會告知您需要多少個叢集或叢集類型。 例如,如果您知道您需要的位置位於蒙特利爾,那麼這有助於縮小您的選擇範圍。 查看可用的 地點。
-
規模:較大的節點可能比較小的節點更具成本效益,特別是對於那些在高效能機器上處理時能提升效率的工作負載而言。 然而,如果一個大型工作節點發生故障,您必須確保叢集具備足夠的處理能力,能夠將所有工作負載 Pod 安全地重新排程至叢集中的其他工作節點上。 較小的工作節點可以幫助您安全地擴展。 進一步了解容量。
-
GPU:您可以使用 GPU 機器來加快運算密集型工作負載(例如 AI、機器學習、推理等)所需的處理時間。
-
儲存:每台 VM 均配備一顆內建磁碟,用於儲存 VM 運作所需的資訊,例如作業系統檔案系統、容器執行環境以及
kubelet。 工作者節點上的本端儲存空間僅適用於短期處理,而且在您刪除、重新載入、取代或更新工作者節點時,會清除儲存空間磁碟。 此外,標準及 VPC 基礎架構在磁碟設定時不同。- 標準 VM:標準 VM 具有兩個連接的磁碟。 主儲存磁碟有 25 GB 用於作業系統檔案系統,而輔助儲存磁碟則有 100 GB 用於儲存諸如容器執行環境及
kubelet等資料。 為了確保可靠性,主儲存區和輔助儲存區採用本地磁碟,而非儲存區域網路(SAN)。 可靠性優點包括將位元組序列化到本端磁碟時的更高傳輸量,以及減少檔案系統由於網路故障而造成的退化。 輔助磁碟預設為加密狀態。 - VPC 運算虛擬機器:VPC 虛擬機器擁有一顆主要磁碟,該磁碟為透過網路掛載的區塊儲存卷。 儲存層未與其他網路層區隔,而且會在相同的網路上遞送網路及儲存空間資料流量。 主要儲存空間磁碟用於儲存資料(例如 OS 檔案系統、容器運行環境及
kubelet),而且依預設會進行加密。 對於 VPC 集群,您也可以在工作節點上配置輔助磁碟。 此選配磁碟已於您的帳戶中配置,您可在 VPC 控制台中查看。 這些磁碟的費用與每個工作人員的成本分開,並在帳單上顯示為不同的行項目。 這些次級流量也會計入您帳戶的配額使用量。 為了防止預設 pod 驅逐,10%Kubernetes資料盤(經典為輔助盤,VPC為主啟動盤)是為系統元件保留的。
在有狀態的應用程式中,資料扮演能讓您應用程式保持執行中的重要角色。 請確定資料具有高可用性,以在發生潛在故障時能夠回復。 在 IBM Cloud Kubernetes Service 中,可以從多個選項中進行選擇來持續保存資料。 例如,您可以使用 Kubernetes 原生持續性磁區來佈建 NFS 儲存空間,或使用 IBM Cloud 資料庫服務來儲存資料。 如需更多資訊,請參閱《 規劃高可用性資料 》。
請選擇一款具備正確儲存配置的版本或機器類型,以支援您的工作負載。 有些規格混合了下列磁碟及儲存空間配置。 例如,有些規格可能具有含原始 SSD 次要磁碟的 SATA 主要磁碟。
- 標準 VM:標準 VM 具有兩個連接的磁碟。 主儲存磁碟有 25 GB 用於作業系統檔案系統,而輔助儲存磁碟則有 100 GB 用於儲存諸如容器執行環境及
如需可用風味的清單,請參閱 VPC 風味 或 Classic 風味。
確定資源的工作節點容量
若要充分利用工作執行緒節點的效能,請在設定資源時考慮以下事項:
-
考慮您的應用程式在做什麼:首先將應用程式大小與可用工作節點類型之一的容量保持一致。 此外,也請考慮諸如您的應用程式是否會載入大型或大量圖片等因素,因為這些圖片可能會佔用工作節點上的本地儲存空間。
-
保持核心強度:每台機器都有一定數量的核心。 根據應用程式的工作負載,設定每個核心的 Pod 數目限制,例如 10。
-
避免節點過載:請將工作節點的利用率維持在約 75%,以預留空間給其他可能需要排程的 Pod。 如果您應用程式所需的資源比工作者節點上可用的資源還要多,請使用可滿足這些需求的不同工作者節點規格。 根據應用程式的工作負載,設定每個節點的 Pod 數目限制,例如 40。
-
選擇服務:當您考慮要建立多少個叢集時,您決定包含多少個服務整合? 這些整合服務與附加元件可能會啟動會消耗並影響叢集資源的 Pod。
-
應用程式的抄本:若要判定您想要的工作者節點數目,您也可以考量所要執行之應用程式的抄本數目。 例如,如果您知道工作負載需要 32 個 CPU 核心,而且規劃執行應用程式的 16 個抄本,則每個抄本 Pod 都需要 2 個 CPU 核心。 如果每個工作者節點只要執行一個應用程式 Pod,您可以為叢集類型訂購適當數目的工作者節點來支援此配置。
-
為運行時要求留出空間: Worker節點必須預留一定數量的CPU和記憶體資源 運行所需的元件,例如作業系統或容器運行時。
預留容量和預留實例 不支援。
選擇要在叢集中建立的命名空間數量
當您有多個共用叢集的團隊及專案時,請設定多個名稱空間。 命名空間是一種劃分群集資源的方法,使用 資源配額和 預設限制。 當您建立新的名稱空間時,請務必設定適當的 RBAC 原則來控制存取權。 如需更多資訊,請參閱《 Kubernetes 》文件中的「透過命名空間共用叢集」。
如果您有一個小型叢集、數十位使用者及類似的資源(例如相同軟體的不同版本),則可能不需要多個名稱空間。 您可以改為使用標籤。
查看有關此決定的安全信息 容器隔離和安全。
建立命名空間的資源請求與限制
為了確保每個團隊都擁有在叢集中部署服務和執行應用程式所需的資源,您必須為每個命名空間設定 資源配額。 資源配額決定了部署的限制,例如您可以部署的「Kubernetes」資源數量,以及這些資源可消耗的 CPU 和記憶體用量。 設定配額之後,使用者必須在其部署中包含資源要求和限制。
建立部署時,也請對其進行限制,確保您的應用程式 Pod 僅部署在資源組合最理想的機器上。 例如,建議您將資料庫應用程式限制為具有大量本端磁碟儲存空間(如 md1c.28x512.4x4tb)的裸機機器。
讓您的應用程式也具有高可用性
根據設計,容器和 Pod 的生存時間短,並且可能會非預期故障。 例如,如果應用程式發生錯誤,則容器或 Pod 可能會當機。 為了讓您的應用程式具備高可用性,您必須確保擁有足夠的執行個體來處理工作負載,並在發生故障時備有額外的執行個體。 您可以透過設定來確保有足夠的實例 自動縮放。
下一步
若要繼續規劃過程,請選擇 VPC集群網路 和 經典集群網路。 如果您準備好開始建立集群,請先從 準備您的帳戶以建立集群。