附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱 Oracle Cloud Infrastructure Free Tier 入門。
- 它使用 Oracle Cloud Infrastructure 證明資料、租用戶及區間的範例值。完成實驗室時,請將這些值取代為您雲端環境特定的值。
使用不同的容量類型管理 OCI Kubernetes 引擎,並解決先佔式節點的一般問題
簡介
隨著我們持續進行數位轉型的每個週期,企業將繼續創新並反覆執行,從而推動大規模基礎架構、應用程式和管理可能的界限。用來支援基礎架構和應用程式管理的最近和廣泛採用技術之一是 Kubernetes。在進一步深入探索 Kubernetes 之前,我們必須先了解容器的概念。
「容器」是軟體套件,包含應用程式特定程式碼的集合,以及必要的程式實際執行和程式庫,以支援可靠的應用程式執行。容器會設定為在相關伺服器之作業系統 (OS) 內的使用者空間內執行。此架構可讓您分離核心服務與應用程式的相依性輕量型部署。應用程式容器化的優點包括改善工作負載隔離、資源效率、擴展性及容錯能力。
為了大規模利用容器的強大功能和效率,我們需要一些工具來連接或管理容器型部署。Kubernetes (也稱為 K8s) 是一種開放原始碼容器協調工具,可建立可執行、調整容器規模並傳遞給使用者的伺服器叢集,藉此將容器部署自動化。Kubernetes 叢集架構包含主要節點 (控制層) 和多個工作節點。每位工作者都會代管一個提供應用程式的 Pod (容器集合)。
目標
- 使用 Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes 引擎或 OKE) 處理不同容量類型,並解決先佔式問題。
必要條件
- 執行中 OCI 租用戶和 OKE 叢集的管理員存取權。
Oracle 如何定位容器技術?
OKE 是一項完全受管理、可擴展且高可用性的 Kubernetes 服務,可協助客戶將容器化應用程式部署至雲端。OKE 讓 OCI 客戶能夠最佳化運算資源使用率,以滿足獨特的工作負載需求,並隨著工作負載需求的變化快速適應。OKE 提供無縫的客戶體驗,讓客戶享有無與倫比的性價比、資源效率、可攜性及可靠性。OKE 提供數個與各種容器生命週期管理產品的關鍵整合,包括容器登錄、CI/CD 架構、網路解決方案、儲存選項,以及頂尖安全功能。
在 OKE 中,您可以將叢集類型指定為基本或增強叢集。基本叢集支援 OKE 提供的所有核心功能。為了啟用進一步的功能,增強型叢集支援所有可用功能,包括虛擬節點、自行管理節點、叢集附加元件管理、更精細的 Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) 組態等等。
不同產能型態上的 OKE
-
隨需容量:隨需容量是指定資源配置類型的標準可用容量。這是預設的容量類型,且會根據使用量有效地付費。雖然這是標準選擇,但視資源配置類型和時機而定,對於大型多重執行處理工作負載來說,履行這些要求可能相當困難。
-
保留的容量:容量保留可用於佈建 OKE 管理的節點。容量保留通常用於確保在生產影響事件 (包括計畫性維護、使用者需求成長以及災害復原) 期間,有足夠的可用容量供關鍵業務工作負載使用。產能預留會產生 85% 的庫存單位定價,但未主動使用預留資源。若要運用容量保留,您必須先建立容量保留物件,然後指定區域 / 可用性網域以及資源配置類型和大小。建立容量保留之後,您可以在節點集區中部署節點時,將特定保留指定為容量類型。
-
先佔式容量: 現在可以使用先佔式運算資源配置佈建 OKE 受管理節點。先佔式資源配置可以是節省成本的來源 (SKU 定價的 50% 折扣),不過,如果需要更高優先順序的需求,Oracle 仍有權回收這些運算資源。如果您有可承受中斷的無狀態容錯工作負載,先佔式運算便是不錯的選擇。您可以選擇在執行處理部署先佔式運算時終止時收到通知,以便可見。在 OKE 叢集中,節點集區預期狀態將會嘗試啟動新的執行處理來取代回收的執行處理。
具有先佔式和 OnDemand 節點集區的 OKE 部署
含先佔的已知問題
使用搭配 OKE 的先佔式功能時,發生一些已知問題。
-
問題:部分客戶收到錯誤 NonRetryable BmcException:Compute 服務中的 LaunchInstance 作業傳回錯誤。(400,InvalidParameter,false) 建立 E3/E4 先佔式資源配置時,無法啟動具有容量保留 ID 的先佔式執行處理。
- 解決方案:已知的 OKE 錯誤含有空白的
<capacityreservationId>
和先佔式工作節點。如果您嘗試在透過 Oracle Cloud Infrastructure 命令行介面 (OCI CLI) 或 terraform 建立節點集區時使用先佔式容量,而未在設定組態段落時傳送<capacityReservationId>
參數,便可建立先佔式工作節點。不過,如果您透過主控台建立節點集區,預設會傳送空白的<capacityReservationId>
,這會在嘗試使用先佔式資源配置時發出錯誤。解決方法是在位置組態中明確將<capacityReservationId>
設為空值。
- 解決方案:已知的 OKE 錯誤含有空白的
-
問題:當您使用兩個節點集區 (一個使用先佔式集區,另一個使用隨需擴充) 時,並針對自動擴充程式使用以優先順序為基礎的擴充程式。先佔式節點集區設定為最高優先順序的先佔式節點集區組態,若先佔式節點集區因 OutOfHostCapacity 錯誤與先佔式容量而顯示狀況不良,則設為使用隨選節點集區。在某些實例中,即使當節點集區擁有 0 個節點時,叢集自動調整器仍不會備用到隨選節點集區。
- 解決方案:只有在兩個節點集區各有至少 1 個節點時,此設定才能運作。
-
問題:透過主控台在 OKE 啟動設定精靈中選取先佔式容量時,可用的 AMD 資源配置限制為 E3 和 E4。此處未顯示 E5;不過 OKE 支援 E5 先佔式容量。
-
解決方案:使用 API 或 CLI 建立具有先佔式 E5 資源配置的受管理節點集區。
--node-shape VM.Standard.E5.Flex
-
作業 1:使用命令行介面 (CLI) 建立 E5 可先佔式 OKE 工作程式節點集區的步驟
-
登入 OCI 主控台,然後按一下服務功能表。
-
瀏覽至開發人員服務。
-
在容器和使用者自建物件底下,按一下按一下 Kubernetes 引擎 (OKE) 。
-
按一下 OCI Cloud shell 以顯示 CLI。
-
在您的租用戶中執行下列 CLI 命令之前,請先編輯
node-pool
OCID、compartment
OCID、subnet-id
、fault domain
、組態以及大小。oci ce node-pool create --cluster-id ocid1.cluster.oc1.iad.aaaaaaaaxlokvt2r25b6dmdxxxxxxxxxxxxxxxxxkhdilj7kpehc5vke2ve5gq --compartment-id ocid1.compartment.oc1..aaaaaaaaqufgrkgzr4zb3dxxxxxxxxxxxxxxxxxxp7jx7yckglghxppfrui6a --name E5_Preemtible --node-shape VM.Standard.E5.Flex --placement-configs '[{"availabilityDomain": "FZyT:US-ASHBURN-AD-2", "preemptibleNodeConfig": {"preemptionAction":{"isPreserveBootVolume":true, "type": "TERMINATE"}}, "subnet-id": "ocid1.subnet.oc1.iad.aaaaaaaapmekowq4rqhu72xxxxxxxxxxxxxxxxxxxxtlkp4dmixebzhgrwdlmtteclq", "faultDomains":["FAULT-DOMAIN-1"]}]' --size 1 --node-image-id ocid1.image.oc1.iad.aaaaaaaajvtta4i5sq4xxxxxxxxxxxxxcskfxjwz4vwxz6ersmmax6q --node-shape-config '{"memoryInGBs": 6.0, "ocpus": 1.0}' --pod-subnet-ids '["ocid1.subnet.oc1.iad.aaaaaaaapmekowq4rqhxxxxxxxxxxxxxxxkp4dmixebzhgrwdlmtteclq"]'
這會在現有叢集中輸出建立節點集區和建立 E5 先佔式工作節點之工作要求的 OCID,如以下影像所示。
相關連結
認可
- 作者 - Payal Sharma (資深企業雲端架構師)、Anthony Vernava IV (資深企業雲端架構師)
其他學習資源
探索 docs.oracle.com/learn 上的其他實驗室,或存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Manage OCI Kubernetes Engine with Different Capacity Types and Resolve Common Issues on Preemptible Nodes
G19918-01
November 2024