使用 OCI Kubernetes 引擎虛擬節點部署無伺服器 Kubernetes

Oracle Cloud Infrastructure Kubernetes Engine (Kubernetes 引擎確定 ) 提供不同的操作模式:「受管理節點」和「虛擬節點」。Oracle Cloud Infrastructure (OCI) 可管理控制層,但您可選擇作業模式。使用受管理節點時,您可以在租用戶內佈建節點,並負責維護作業,例如升級、調整規模及修正工作節點。OCI 為這些作業提供自動化步驟,但您必須啟動這些作業。透過虛擬節點,OCI 可部署、監控及管理您 OCI 租用戶中實際節點的軟體摘要。使用虛擬節點提供無伺服器 Kubernetes 體驗,讓您專注於工作負載、Pod 和應用程式邏輯,而無需管理、調整、升級和疑難排解節點基礎架構的作業負荷,即可大規模執行容器化應用程式。

這兩種操作模式都可以支援最高關鍵任務的基本應用程式。透過虛擬節點,Kubernetes 作業可以簡化並提供最佳性價比。受管理節點和虛擬節點之間的權衡是受管理的節點;您可以更有效地控制節點基礎架構。您可以將 Kubernetes 資源設定為使用 HostPortHostNetwork,或執行 DaemonSets 以及您的應用程式或工具可能需要的其他選項。在大多數使用案例中,不需要這些選項。

當您不需要微調執行及管理容器的控制時,虛擬節點會變得更有意義。如果您的應用程式需要設定「虛擬節點」無法使用的節點基礎架構,請使用「受管理節點」。

架構

此架構描述部署在 OCI Kubernetes 引擎 (OKE) 叢集中的應用程式伺服器,其「虛擬節點」可讓您在部署在客戶租用戶之另一個子網路中的 Oracle MySQL Database Service 資料庫上執行、建立、讀取、更新及刪除 (CRUD) 作業。應用程式伺服器是透過對應至 Kubernetes 傳入控制器的負載平衡器服務從外部存取。應用程式需要密碼才能存取 Oracle MySQL Database Service (儲存在 Oracle Cloud Infrastructure Vault 中)。

若要整合 OKE 叢集與 OCI Vault ,則「外部加密密碼操作員」會部署在 OKE 叢集中。這可讓您定義對應至 OCI Vault 的 SecretStore 資源,以保存資料庫的密碼。對應 SecretStore 資源之後,OKE 叢集便能以 Kubernetes 密碼存取密碼。具備從 OCI Vault 讀取權限的 OCI Identity and Access Management 角色可讓 Pod 存取加密密碼。此角色與 Pod 定義中使用的 Kubernetes 服務帳戶相關聯,可授予該帳戶從 OCI Vault 讀取的存取權。

下圖說明此參考架構。

k8n-virtual-nodes.png 的描述如下
k8n-virtual-nodes.png 圖解描述

k8n- 虛擬節點 -oracle.zip

架構具有下列元件:

  • Tenancy

    租用戶是 Oracle 在您註冊 Oracle Cloud Infrastructure 時設定在 Oracle Cloud 內的安全隔離分割區。您可以在租用戶內的 Oracle Cloud 中建立、組織及管理您的資源。租用戶與公司或組織同義。通常,公司會擁有單一租用戶,並在該租用戶內反映其組織結構。單一租用戶通常與單一訂閱相關聯,單一訂閱通常只有一個租用戶。

  • 地區

    Oracle Cloud Infrastructure 區域是一個本地化地理區域,其中包含一或多個稱為可用性網域的資料中心。區域獨立於其他區域,而廣大的距離可以將其分開 (跨國家或大陸)。

  • 區間

    區間是 Oracle Cloud Infrastructure 租用戶內的跨區域邏輯分割區。使用區間組織 Oracle Cloud 中的資源、控制對資源的存取,以及設定使用配額。若要控制對指定區間中資源的存取,您可以定義指定可存取資源的人員及其可執行動作的原則。

  • 可用性網域

    可用性網域是區域內的獨立獨立資料中心。每個可用性網域中的實體資源會與其他可用性網域中的資源隔離,以提供容錯能力。可用性網域不會共用基礎架構 (例如電源或冷卻系統) 或內部可用性網域網路。因此,一個可用性網域的故障不應影響該區域中的其他可用性網域。

  • 容錯域

    容錯網域是可用性網域內的一組硬體和基礎架構。每個可用性網域都有三個具有獨立電源和硬體的容錯域。當您將資源分散到多個容錯域時,您的應用程式可以容忍容錯域內的實體伺服器故障、系統維護和電源故障。

  • 虛擬雲端網路 (VCN) 和子網路

    VCN 是您在 Oracle Cloud Infrastructure 區域中設定的可自訂軟體定義網路。與傳統的資料中心網路一樣,VCN 可讓您控制網路環境。VCN 可以有多個非重疊的 CIDR 區塊,您可以在建立 VCN 之後變更。您可以將 VCN 區隔成子網路,此子網路可以設定區域範圍或可用性網域。每個子網路都是由連續的位址範圍組成,這些位址不會與 VCN 中的其他子網路重疊。您可以在建立子網路後變更其大小。子網路可以是公用或專用。

  • 負載平衡器

    Oracle Cloud Infrastructure Load Balancing 服務提供從單一進入點到後端多部伺服器的自動流量分配。

  • 網際網路閘道

    網際網路網關允許 VCN 中公共子網路與公共網際網路之間的流量。

  • 網路位址轉譯 (NAT) 閘道

    NAT 閘道可讓 VCN 中的專用資源存取網際網路上的主機,而無須向內送網際網路連線公開這些資源。

  • 服務閘道

    服務閘道可讓您從 VCN 存取其他服務,例如 Oracle Cloud Infrastructure Object Storage 。從 VCN 到 Oracle 服務的流量會透過 Oracle 網路結構傳送,不會周遊網際網路。

  • Vault

    Oracle Cloud Infrastructure Vault 可讓您集中管理保護資料的加密金鑰,以及用來保護雲端資源存取的秘密證明資料。您可以使用 Vault 服務來建立和管理 Vault、金鑰和加密密碼。

  • 登錄

    Oracle Cloud Infrastructure Registry 是 Oracle 管理的登錄檔,可讓您簡化開發到生產的工作流程。「登錄」可讓您輕鬆儲存、共用及管理開發使用者自建物件,例如 Docker 映像檔。Oracle Cloud Infrastructure 的高可用性且可擴展的架構可確保您能夠可靠地部署和管理應用程式。

  • 安全清單

    您可以為每個子網路建立安全規則,以指定必須允許進出子網路的來源、目的地和流量類型。

  • 路由表

    虛擬路由表包含將流量從子網路路由到 VCN 外部目的地 (通常是透過閘道) 的規則。

  • OCI Kubernetes 引擎

    Oracle Cloud Infrastructure Kubernetes Engine (Kubernetes 引擎確定 ) 是完全託管、可擴展且高可用性的服務,可用來將容器化應用程式部署到雲端。您可以指定應用程式所需的運算資源,而 Kubernetes 引擎則會在現有租用戶的 Oracle Cloud Infrastructure 上佈建這些資源。OKE 使用 Kubernetes 將跨主機叢集的容器化應用程式部署、調整規模及管理自動化。

  • Oracle MySQL Database Service

    Oracle MySQL Database Service 是完全託管的 Oracle Cloud Infrastructure (OCI) 資料庫服務,可讓開發人員快速開發及部署安全的雲端原生應用程式。Oracle MySQL Database Service 是 OCI 和 MySQL 工程團隊所建置、管理和支援的 100%,專為 OCI 所提供和獨家提供。

    Oracle MySQL Database Service 具有整合式高效能分析引擎 (HeatWave),可直接對作業 MySQL 資料庫執行複雜的即時分析。

  • 傳入控制器

    傳入控制器 (ing) 是在 Kubernetes 叢集中執行並管理傳入資源的元件。它會接收來自外部網路的流量,將其路由到正確的服務,並執行負載平衡和 SSL 終止。傳入控制器通常在叢集中以個別的 Pod 執行,而且可以獨立於其管理的服務進行調整。

  • Kubernetes 密碼

    Kubernetes 加密密碼可以包含機密組態資料,例如認證權杖、密碼及 SSH 金鑰。加密密碼可讓您控制機密資料,並降低向未經授權使用者公開資料的風險。Oracle Container Engine for Kubernetes 支援靜態 Kubernetes 加密密碼加密。

  • 外部加密密碼運算子

    Kubernetes 外部加密密碼操作員將 Oracle Container Engine for KubernetesOracle Cloud Infrastructure Vault 整合。操作員會從外部 API 讀取資訊,並自動將值插入 Kubernetes 加密密碼中。

  • SecretStore

    Kubernetes 叢集控制層會將機密組態資料 (例如認證權杖、憑證及證明資料) 儲存為 etcd 中的 Kubernetes 加密密碼物件。Etcd 是 Kubernetes 用於叢集協調和狀態管理的開放原始碼分散式索引鍵值存放區。在 Container Engine for Kubernetes 建立的 Kubernetes 叢集中,etcd 會將資料寫入 Oracle Cloud Infrastructure Block Volumes 服務中的區塊儲存磁碟區,並從中寫入和讀取資料。Oracle 預設會加密靜態區塊磁碟區中的資料,包括 etcd 和 Kubernetes 加密密碼。Oracle 使用主要加密金鑰管理此預設加密,無須採取任何動作。若要對主要加密金鑰的生命週期與其使用方式進行額外的控制,您可以自行選擇管理主要加密金鑰,而非讓 Oracle 為您管理。

    建立新叢集時,您可以指定使用 Oracle Key Management Cloud Service 加密 etcd 中的 Kubernetes 加密密碼。

  • Pod

    Pod 是一或多個容器及其共用儲存體的群組,以及有關如何一起執行這些容器的任何特定選項。Pod 中的容器通常會共用相同的網路和記憶體空間,並可存取共用磁碟區以進行儲存。這些共用資源可讓 Pod 中的容器以無縫接軌的方式在內部進行通訊,就像是在單一邏輯主機上安裝一樣。

  • 虛擬節點

    「虛擬節點」是實際節點的軟體抽象。虛擬節點部署在 OCI 的租用戶中,完全由 OCI 監控和管理。

建議

使用下列建議作為起點。 您的需求可能與此處所述的架構不同。
  • VCN

    建立 VCN 時,請根據您計畫附加到 VCN 子網路的資源數量,決定所需的 CIDR 區塊數量和每個區塊的大小。請使用標準專用 IP 位址空間內的 CIDR 區塊。

    選取未與您要設定專用連線的任何其他網路重疊的 CIDR 區塊 (在 Oracle Cloud Infrastructure 中、您的內部部署資料中心或其他雲端提供者)。

    建立 VCN 之後,您可以變更、新增及移除其 CIDR 區塊。

    當您設計子網路時,請考慮流量和安全需求。將特定層或角色中的所有資源附加至相同的子網路,作為安全界限。

    使用區域子網路。

  • 網路安全群組 (NSG)

    您可以使用 NSG 定義一組適用於特定 VNIC 的傳入和傳出規則。建議您使用 NSG 而非安全列表,因為 NSG 可讓您將 VCN 的子網路架構和應用程式的安全需求分開。

    您可以使用 NSG 定義一組適用於特定 VNIC 的傳入和傳出規則。建議您使用 NSG 而非安全列表,因為 NSG 可讓您將 VCN 的子網路架構和應用程式的安全需求分開。

  • 負載平衡器頻寬

    建立負載平衡器時,您可以選取提供固定頻寬的預先定義資源配置,或指定自訂 (彈性) 資源配置,以便在其中設定頻寬範圍,並讓服務根據流量模式自動調整頻寬。只要採用任一方式,您就可以在建立負載平衡器之後隨時變更資源配置。

注意事項

使用虛擬節點時,請注意以下事項。

若要從虛擬節點開始,您必須先使用「虛擬節點集區」建立 OCI Kubernetes 引擎叢集,或將「虛擬節點集區」新增至現有的 Kubernetes 引擎 (OKE) 叢集。

  • 選取虛擬節點的資源配置和位置。
    • 資源配置決定了處理器類型,以及可配置給每個 Pod 的 CPU 和記憶體資源數量。每個 Pod 最多可以配置所選資源配置的記憶體與 CPU 限制。

    • 虛擬節點將使用水平 Pod 自動調整器 (HPA) 組態調整 Pod。不需要設定節點自動調整器。

    • 您可以將虛擬節點放在最符合高可用性 (HA) 需求的特定可用性網域和容錯網域中。如需冗餘的最大層級,請將虛擬節點置於 OKE 叢集可用性網域內的每個容錯域中。

    • 使用 Kubernetes 節點標籤指定 Pod 在虛擬節點上的位置。若要在節點之間取得 Pod 的平均分配,請使用 PodTopologySpread 限制條件。

  • 虛擬節點使用 VCN 原生 Pod 網路。叢集中可用的 Pod 數目受子網路中可用的 IP 位址數目限制。

    • 原生 Pod 網路為每個 Pod 提供原生 VCN 子網路的 IP 位址,讓每個 Pod 都能從 VCN 流量日誌、路由原則、VTAP 和安全群組等內建 OCI 網路安全功能中受益。
    • 請考慮使用子網路範圍,以允許您預期使用的 Pod 和節點數目,並提供成長空間。
    • 定義網路安全群組 (NSG),以限制可從 Pod 進行輸入和輸出的流量類型。
    • 使用 VCN 流量日誌檢查 Pod 之間的所有網路流量,或使用 VTAP 擷取網路流量。
  • 虛擬節點中的 Pod 可透過工作負載識別存取其他 OCI 服務。

    在某些情況下,Pod 可能需要存取 OCI 內的其他服務。

    • 使用工作負載識別將權限授予虛擬節點中的 Pod。工作負載識別會將 OCI Identity and Access Management 角色與指派給 Pod 的 Kubernetes 服務帳戶建立關聯。
  • 虛擬節點會為您的 Pod 提供虛擬機器管理程式層次的隔離。

    安全漏洞可能會允許容器內的惡意處理作業「脫離」,並影響節點的核心,可能會導致節點停止運作。惡意程式碼也可存取記憶體或儲存體中的資料,並洩漏資料。壓縮的資料可能屬於多租用戶環境中的另一個租用戶。

    • 虛擬節點會為您的 Pod 提供 Hypervisor 層級隔離。Pod 不會與叢集中的其他 Pod 共用運算、記憶體和網路,以降低因惡意程式碼而屬於另一個租用戶的已停止節點或已過洩漏資料的可能性。

確認

  • Author: Chiping Hwang