使用使用者自建物件快照保護您的 Kubernetes 叢集免於災害
Oracle Maximum Availability Architecture (MAA) 提供建議與公用程式,可讓您在影響位置的災害案例中復原,並強制將工作負載重新導向至複本網站。本書的重點是複寫應用系統的 Kubernetes 組態。在 Kubernetes 叢集上執行的應用系統仰賴許多不同的元件來進行作業,包括控制層節點、工作節點、負載平衡器及儲存體。與此同時,在 Kubernetes 上執行的應用程式所產生的執行階段資料,與傳統應用程式在執行時期應用程式中可能會產生、讀取及更新保存資料相同的挑戰。這個解決方案播放手冊提供複寫 Kubernetes 上執行之應用程式組態的建議。執行階段資料的災害保護超出本文件的範圍,應會以與在應用程式伺服器上執行之傳統應用程式相同的方式處理,包括:
- 避免多語言持續性。根據備份可用性一致性 (BAC) 理論,在程式實際執行資料使用不同類型的永久存放區幾乎無法解決問題。
- 儘可能將單一存放區用於所有不同資料類型、微服務和具有相依性的應用程式。
- 請參閱 Oracle MAA Oracle Database 的最佳做法,以取得執行階段資料的災害保護。
此外,您必須保護 Kubernetes 叢集控制層。使用適當的 etcd
快照來避免損毀、失敗,以及提供倒溯給工作叢集。雖然 Oracle Maximum Availability 可針對災害提供控制層保護的最佳實務,但此文件超出本文件範圍,以描述該領域的必要技巧。
開始之前
請複查下列以瞭解詳細資訊:
架構
此架構顯示 Kubernetes 叢集的災害復原 (DR) 系統拓樸。
主要資料庫中的所有程式實際執行、組態以及描述資料資訊,都會以 Oracle Autonomous Data Guard 從區域 1 複製到區域 2。必要的 Kubernetes (K8s) 叢集組態是透過 ETCD 快照進行複製,以保護控制層,並使用 YAML 快照進行應用程式組態保護。您可以使用使用者自建物件快照,或是針對應用程式特定組態保護,使用 etcd 副本或人工因素快照來進行應用程式特定組態保護。如需詳細資訊,請參閱 根據 etcd 快照進行 Kubernetes 叢集回復。容器使用的映像檔由每個叢集的本機或外部儲存區域代管 (這些映像檔本身並不視為 Kubernetes 叢集組態)。
注意:
對程式實際執行資料庫設定 Oracle Autonomous Data Guard 已超出此文件的範圍。![kubernetes-multiregion-dr.png 的描述如下 kubernetes-multiregion-dr.png 的描述如下](img/kubernetes-multiregion-dr.png)
kubernetes-multiregion-dr.png 圖解描述
kubernetes-multiregion-dr-oracle.zip
此架構支援下列元件:
- 區域
Oracle Cloud Infrastructure 區域是一個本地化的地理區域,包含一或多個資料中心 (稱為可用性網域)。區域與其他區域無關,因此廣大的距離可加以區隔 (跨國家或甚至洲)。
- 負載平衡程式
Oracle Cloud Infrastructure Load Balancing 服務提供從單一進入點到後端多部伺服器的自動化流量分配。
- 動態路由閘道 (DRG)
DRG 是一個虛擬路由器,可為 VCN 與區域外部網路之間的 VCN (例如另一個 Oracle Cloud Infrastructure 區域中的 VCN、企業內部部署網路或其他雲端提供者中的網路) 之間的專用網路流量提供路徑。
- 資料保全
Oracle Data Guard 提供一組全方位的服務,可建立、維護、管理及監督一或多個待命資料庫,讓生產環境的 Oracle 資料庫保持可用,而不會發生中斷。Oracle Data Guard 會將這些待命資料庫保留為生產資料庫的複本。接著,如果生產環境資料庫因計畫性或非計畫性停機而無法使用,Oracle Data Guard 可以將任何待命資料庫切換為生產角色,將停機關聯的停機時間降到最低。
- Oracle Real Application Clusters (Oracle RAC)
Oracle RAC 可讓您跨多部伺服器執行單一 Oracle Database,以最大程度地提高可用性並啟用水平擴展性,同時存取共用儲存。連線到 Oracle RAC 執行處理的使用者階段作業,可以在停機期間容錯移轉並安全重新執行變更,而不需要對一般使用者應用程式進行任何變更。
- 容器登錄
Oracle Cloud Infrastructure Registry 是 Oracle 管理的登錄,可讓您簡化開發到生產的工作流程。登錄可讓您輕鬆儲存、共用及管理開發使用者自建物件與映像檔。Oracle Cloud Infrastructure 的高可用性擴充架構可確保您可以可靠地部署和管理應用程式。
- Kubernetes 的容器引擎
Oracle Cloud Infrastructure Container Engine for Kubernetes 是一項完全託管、可擴展且高可用性的服務,可用來將容器化應用系統部署到雲端。您可以指定應用系統所需的運算資源,而 Kubernetes 的容器引擎則會在現有租用戶的 Oracle Cloud Infrastructure 上佈建這些資源。Kubernetes 的容器引擎使用 Kubernetes 將跨主機叢集的容器化應用程式部署、擴展及管理自動化。
- Kubernetes 叢集
Kubernetes 叢集是一組執行容器化應用程式的機器。Kubernetes 提供可攜式、可擴充的開源平台,可管理這些節點中的容器化工作負載和服務。kubernetes 叢集是由工作節點與控制層節點組成。
- Kubernetes 工作節點
Kubernetes 工作節點是一個在 Kubernetes 叢集內執行容器化應用程式的工作機器。每個叢集至少都有一個工作節點。
- Kubernetes 控制平面Kubernetes 控制層可管理 Kubernetes 叢集內工作節點與 Pod 的資源。控制層元件可偵測和回應事件、執行排程及移動叢集資源。以下為控制平面元件:
- kube-apiserver:執行 Kubernetes API 伺服器。
- etcd:所有叢集資料的分散式索引鍵值存放區。
- kube 排程器:決定將執行哪一個節點新的未指定 Pod。
- kube-controller-manager:執行控制器行程 。
- cloud-controller-manager:將您的叢集與雲端特定 API 連結。
- 傳入控制器
傳入控制器是指在 Kubernetes 叢集中執行並管理傳入資源的元件。它會從外部網路接收流量、將它遞送至正確的服務,以及執行負載平衡和 SSL 終止。傳入控制器通常以叢集中的個別 Pod 形式執行,且可以與所管理的服務個別調整規模。
- KUBE 端點 API
KUBE-Endpoint API 是 Kubernetes 控制層中的
kube-apiserver
元件。它會執行 Kubernetes API 伺服器。 - ETCD 備份
ETCD Backup 是 Kubernetes 控制層的
etcd
元件備份。etcd
包含所有叢集資料的分散式索引鍵值存放區。建立 ETCD 備份以復原用於災害復原的 Kubernetes 叢集是很重要的。 - YAML 快照
YAML 快照是 (yaml) 檔案的時間點複本,包含 Kubernetes 叢集中的使用者自建物件定義。此快照是一個 tar 檔案,可用來回復相同或不同 Kubernetes 叢集中的使用者自建物件。
Kubernetes 災害保護的考量
為 Kubernetes 實作災害保護時,請考慮下列事項:
- 對稱式災害復原 (DR) :Oracle 建議在主要和次要裝置中使用完全相同的資源容量和組態。相關的 Kubernetes 命名空間應具有類似的可用資源,例如工作節點數目 (及其硬體容量) 和其他基礎架構 (共用儲存體、負載平衡器、資料庫等等)。第二區域中 Kubernetes 叢集所依賴的資源,必須能夠與主要負載相同。此外,這兩個系統必須與回復系統依存的完全相同服務一致,在這兩個位置都必須使用並排車、組態對應 (CM)。
- 容器映像檔與二進位檔呈現類似的典範:映像檔不會像檔隨著 Kubernetes 組態的頻率變更,您可能不需要隨著每個 Kubernetes 叢集複寫更新映像檔。主要系統使用的影像必須與次要系統中使用的影像相同,或不一致且可能發生故障。不過,影像複製已超出此播放簿的範圍。您可以運用多種策略在兩個位置之間保持影像的一致使用,包括下列各項:
- 將影像儲存於主要節點,並載入至次要的職工節點。這個方法非常容易實作,但會產生管理負荷。使用容器登錄在本機儲存映像檔有許多優點,因此很難管理版本和更新。
- 映像檔可以完全位於不同區域中的外部容器登錄,也可以位於主要和待命資料庫使用的不同資料中心。外部產品和程式庫是由第三方維護,其可用性通常在其版本中是隱含的。
- 影像可以位於主要和待命的「容器註冊」中。釋出新版本的映像檔時,每個區域會平行更新。這樣可以更有效地控制使用的軟體,但會導致更高的管理負荷。它需要複製映像檔並管理證明資料,才能存取兩個不同的登錄檔。CI/CD 工具通常用於此方法。
雖然此手冊顯示使用 Oracle Cloud Infrastructure 的範例,但建議一般適用於安裝在內部部署系統的自訂 Kubernetes 叢集。您可以使用在 Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) 中執行的主要 Kubernetes 叢集與在內部部署或自訂 Kubernetes 叢集中執行的次要叢集之間的步驟和命令檔。您也可以使用 OKE 中執行的主要 Kubernetes 叢集與 OKE 中執行的次要叢集之間的步驟和命令檔,或是兩個企業內部部署叢集或自訂 Kubernetes 叢集之間。
關於必要產品與角色
此解決方案需要下列產品與角色:
- Kubernetes 叢集
- 能夠管理 kubernetes 系統的堡壘主機節點
- Oracle Cloud Infrastructure (OCI)
此手冊以 OCI 區域以及主要和次要區域的資源為基礎。不過,此解決方案也適用於不是位於 OCI 上的 Kubernetes 叢集。
這些是每項服務所需的角色。
服務名稱:角色 | 需要 ... |
---|---|
Oracle Cloud Infrastructure :admin |
如果您使用一或多個 OCI 區域,請佈建並設定資源和服務。 |
Kubernetes 叢集 (主要):administrator |
執行所有的命令檔。 |
Kubernetes (主要) 節點:具備次要執行權限的作業系統使用者 |
執行下列的命令檔:
|
Kubernetes 叢集 (次要):administrator |
執行所有的命令檔。 |
Kubernetes (次要) 節點:具備執行權限的作業系統使用者 |
執行下列的命令檔:
|
請參閱 Oracle 產品、解決方案和服務,以取得您需要的內容。