使用多重 CNI 外掛程式在 OKE 上部署啟用 SR-IOV 的網路介面容器應用程式

簡介

在本教學課程中,我們將探討如何運用進階網路功能,在 Oracle Cloud Infrastructure Kubernetes Engine (OKE) 內的虛擬實例工作者節點上部署容器化應用程式。具體而言,我們將為容器網路介面啟用單一根 I/O 虛擬化 (SR-IOV) ,並設定 Multus CNI 外掛程式,為您的容器啟用多址網路。

透過結合 SR-IOV 與 Multus,您可以為 AI、機器學習和即時資料處理等專業工作負載實現高效能、低延遲的網路。本教學課程將逐步說明如何設定 OKE 環境、使用已啟用 SR-IOV 的介面部署工作節點,以及使用 Multus CNI 管理 Pod 中的多個網路介面。無論您是要進行高速封包處理,還是需要微調 Kubernetes 網路,本教學課程都將為您提供入門所需的工具和知識。

注意:

圖像

目標

作業 1:使用堡壘主機、操作員、三個 VM 工作節點及 Flannel CNI Plugin 部署 OKE

確定已使用下列設定部署 OKE:

此設定詳列於以下教學課程中:使用 Oracle Cloud Infrastructure Kubernetes Engine 部署 Kubernetes 叢集與 Terraform

下列影像顯示我們將在整個教學課程中使用的元件視覺總覽。

圖像

工作 2:在每個工作節點上啟用 SR-IOV (硬體輔助) 網路

注意:必須對屬於 OKE 叢集的所有工作節點執行下列步驟。

下圖顯示 OKE 叢集內將在此教學課程中搭配使用的工作節點視覺總覽。

圖像

在執行處理上啟用 SR-IOV

工作 3:為啟用 SR-IOV 的 VNIC 建立新的子網路

我們會建立一個專用的子網路,讓啟用 SR-IOV 的介面能夠使用。

工作 3.1:建立安全清單

由於我們已經在其他子網路使用安全清單,但我們也需要為新建立的 SR-IOV 子網路提供專用的安全清單。

工作 3.2:建立子網路

作業 4:新增第二個 VNIC 連附項

下圖以視覺化方式總覽,瞭解工作者節點在新增第二個 VNIC 之前,如何透過單一 VNIC 連線至工作者節點子網路。

圖像

在將第二個 VNIC 連附項新增至工作節點之前,請先建立一個網路安全群組。

作業 4.1:建立網路安全群組 (NSG)

我們已經在其他 VNIC 使用 NSG,但我們還需要為新建立的 VNIC 提供專用的 NSG,我們將會新增至屬於 OKE 叢集一部分的現有虛擬執行處理,以作為 Kubernetes 工作節點的方式播放。此介面將是已啟用 SR-IOV 的 VNIC。

作業 4.2:新增 VNIC

工作 5:指定 IP 位址給具有預設閘道的新第二個 VNIC

現在第二個 VNIC 已經在作業 4 中建立並連附,我們需要為其指定一個 IP 位址。新增第二個介面至執行處理時,您可以將它指定至與第一個介面相同的子網路,或是選擇新的子網路。

第二個介面未啟用 DHCP,因此必須手動指派 IP 位址。

對於第二個介面,有不同的指定 IP 位址的方法。

對於所有工作者節點,我們已指派 IP 位址給次要 vNIC (ens5)。我們使用方法 3 將 IP 位址指定給次要 vNIC (ens5)。如需有關將 IP 位址指派給第二個 VNIC 的詳細資訊,請參閱 Assign an IP Address to a Second Interface on an Oracle Linux Instance

將 IP 位址指定給 VNIC 後,我們需要確認第二個 VNIC 上的 IP 位址是否正確設定。我們也可以驗證是否在所有節點集區工作節點上啟用 SR-IOV。

我們的 OKE 叢集包括:

節點集區  
NP1 1 個工作節點
NP2 3 x 工作節點

我們將驗證所有節點集區中的所有工作節點。

工作 5.1:驗證節點集區 1 中的所有節點 (np1)

工作 5.2:驗證節點集區 2 中的所有節點 (np2)

工作 6:在工作節點上安裝 Meta-Plugin CNI (多重 CNI)

Multus CNI 是一個 Kubernetes 容器網路介面 (CNI) 外掛程式,可讓您將多個網路介面附加到 Pod。

Multus CNI 的運作方式

我們需要多國 CNI

作業 6.1:使用精簡安裝方法安裝 Multus CNI

Multus 常駐程式集執行什麼

工作 6.2:驗證 Multus 安裝

作業 7:將網路介面連附至 Pod

在這項任務中,我們將對應附加此 VNIC 的容器介面。

若要在 Pod 上附加其他介面,我們需要有連接介面的組態。

有數個 CNI 外掛程式可以與 Multus 一起使用以完成此作業。如需詳細資訊,請參閱外掛程式總覽

下列範例顯示設定已新增至節點之次要 ens5 介面的 NetworkAttachmentDefinition 物件。

作業 7.1:建立網路附件定義

NetworkAttachmentDefinition 用於設定網路附件,例如 Pod 的次要介面。

設定 NetworkAttachmentDefinition 的方式有兩種:

注意:在本教學課程中,我們將使用 CNI 組態檔來使用此方法。

我們有 4 個工作節點,每個工作節點都有第二個 VNIC,我們將對應至容器 (Pod) 上的介面。

作業 7.2:使用連附的 NetworkDefinitionAttachment 建立 Pod

在這項任務中,我們會將 NetworkAttachmentDefinitions 與實際的容器或 Pod 連結。

在下表中,我們已針對要代管哪些工作節點的 Pod 建立對應。

職工 (主要) 節點 IP ens5 名稱 POD 名稱 已完成
10.0.112.134 10.0.3.30/27 斯里夫族 -1 testpod1
10.0.66.97 10.0.3.15/27 斯里奧夫族 -2 testpod2
10.0.73.242 10.0.3.14/27 斯里奧夫族 -3 testpod3
10.0.89.50 10.0.3.16/27 斯里奧夫族 -4 testpod4

作業 7.3:使用節點相關性建立 Pod

Kubernetes 預設會決定 Pod 的放置位置 (工作節點)。在本範例中,這是不可能的,因為 NetworkAttachmentDefinition 連結到 IP 位址,且此 IP 位址連結到 VNIC,且此 VNIC 連結到特定的工作節點。因此,我們需要確定我們建立的 Pod 會結束在想要的工作節點上,當我們將 NetworkAttachmentDefinition 附加至 Pod 時,這是必要的。

如果我們沒有這樣做,則 Pod 可能會在 Pod 可用的 IP 位址所在的不同位置結束。因此,Pod 將無法使用啟用 SR-IOV 的介面進行通訊。

作業 7.4:驗證測試 Pod 上的 IP 位址

工作 7.5:驗證工作節點上的 IP 位址

作業 8:在多個 Pod 之間執行偵測測試

所有 Pod 都具有來自 OCI 子網路的 IP 位址,而 OCI 子網路中已連附啟用 SR-IOV 的 VNIC,我們可以進行一些 ping 測試來驗證網路連線是否正常運作。

注意:在此範例中,我們使用 testpod1 來偵測所有其他測試 Pod net1 IP 位址。

工作 9:( 選擇性 ) 建置具有多個介面的 Pod

到目前為止,我們只準備了一個 VNIC (支援 SR-IOV 時會發生此情況),並將此 VNIC 移入 Pod。我們已經為四個不同的測試 Pod 做了這一點。

現在,如果我們想要在特定 Pod 中新增或移動更多 VNIC,該怎麼辦?您必須重複下列步驟:

在這項任務中,您會發現一個範例,其中我們將建立額外的子網路 VNIC、指派 IP 位址 NetworkAttachmentDefinition,並將其新增至建立 testpod1 的 Pod YAML 檔案。

工作 10:移除所有 Pod 部署和 NetworkAttachmentDefinitions

若要重新開始或使用 NetworkAttachmentDefinitions 清除容器,請依照下列步驟進行:

確認

其他學習資源

docs.oracle.com/learn 上探索其他實驗室,或在 Oracle Learning YouTube 頻道上存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。

如需產品文件,請造訪 Oracle Help Center