彈性RDMA(Elastic Remote Direct Memory Access,簡稱eRDMA)是阿里雲提供的低延遲、大吞吐、高彈性的高效能RDMA網路服務。eRDMA是基於第四代神龍系統架構和雲上VPC網路、100%相容RDMA生態、提供超大規模網路部署的ECS普惠RDMA服務。本文介紹如何在ACK叢集中配置和使用eRDMA。
前提條件
步驟一配置RRSA授權
ACK通過ACK eRDMA Controller組件提供eRDMA裝置的管理和配置能力。通過ACK eRDMA Controller管理eRDMA裝置時,需要擁有相應的許可權配置。您可以基於服務賬戶的RAM角色(RAM Roles for Service Accounts,簡稱RRSA)完成授權。
1、開啟叢集RRSA授權能力
為叢集開啟RRSA功能。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇叢集資訊。
在基本資料頁簽,在叢集資訊地區單擊RRSA OIDC右側的開啟,閱讀提醒內容後根據頁面提示完成開啟。
當叢集狀態由更新中變為運行中時,表示該叢集的RRSA特性已變更完成,RRSA OIDC右側會顯示供應商的URL連結以及ARN資訊。
安裝ack-pod-identity-webhook組件。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
單擊安全頁簽,定位ack-pod-identity-webhook組件,按照頁面提示完成組件的安裝。
2、配置RAM授權
建立可信實體類型為身份供應商的RAM角色,角色名稱為
ack-erdma-controller-role
。使用阿里雲帳號登入RAM控制台。
在左側導覽列,選擇 ,然後在角色頁面,單擊建立角色。
在建立角色面板,選擇可信實體類型為身份供應商,然後單擊下一步。
在配置角色頁面,配置如下角色資訊後,單擊完成。
下文介紹樣本配置,詳細配置項請參見建立RAM使用者。
配置項
描述
角色名稱
ack-erdma-controller-role。
備忘
選填有關該角色的備忘資訊。
身份供應商類型
OIDC。
選擇身份供應商
ack-rrsa-<cluster_id>。其中,<cluster_id>為您的叢集ID。
限制條件
oidc:iss:保持預設。
oidc:aud:選擇sts.aliyuncs.com。
oidc:sub:條件判定方式選擇StringEquals,此處需要填入system:serviceaccount:ack-erdma-controller:ack-erdma-controller。
參見如下內容,建立eRDMA管理所需的自訂權限原則。具體操作,請參見建立自訂權限原則。
為ack-erdma-controller-role角色完成上述權限原則的授權。具體操作,請參見為RAM角色授權。
步驟二:安裝ACK eRDMA Controller組件
您可以參見如下流程安裝ACK eRDMA Controller組件。
如果您的叢集網路外掛程式為Terway,還需要配置Terway的網卡白名單,避免Terway組件修改eRDMA的網卡。配置方式,請參見為彈性網卡(ENI)配置白名單。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在組件管理頁面,單擊網路頁簽,定位ACK eRDMA Controller組件,按照頁面提示配置組件並完成安裝。
配置項
說明
preferDriver 驅動類型
選擇叢集節點上使用的eRDMA驅動類型。可選值:
default
:預設驅動模式。compat
:相容RoCE驅動模式。ofed
:基於ofed的驅動模式,適用於GPU機型。
關於驅動類型的詳細說明,請參見使用eRDMA。
是否為Pod分配節點全部eRDMA裝置
可選值:
True(勾選):為Pod分配節點上所有的eRDMA裝置。
False(不勾選):Pod根據NUMA拓撲分配一個eRDMA裝置。節點需要開啟CPU Static Policy才能保證Pod和裝置的固定NUMA分配。關於如何配置CPU Policy,請參見建立節點池。
安裝完成後,您可以在左側導覽列,選擇工作負載 >容器組,然後選擇命名空間為ack-erdma-controller,查看Pod運行狀態,確認組件運行正常。
步驟三:使用eRDMA加速容器網路
安裝ACK eRDMA Controller組件後,您可以在Pod使用下方配置來開啟eRDMA加速。
配置 | 配置方式 | 說明 |
開啟eRDMA | 在Pod的容器資源中聲明
| 通過在Pod資源中聲明 分配後,您可以在Pod中查看分配到的RDMA裝置。
|
開啟SMC-R透明加速 | 在開啟eRDMA的基礎上,在Pod的
| 在啟用SMC-R的透明加速功能後,只有當TCP串連的兩端都配置了SMC-R時,才能使用eRDMA的加速。 您可以在Pod中安裝 說明
|
情境樣本一:GPU機型使用eRDMA加速NCCL通訊
參見步驟二:安裝ACK eRDMA Controller組件安裝組件時,配置
preferDriver
為ofed
,用於NCCL類型的通訊。在節點池中添加GPU節點。具體操作,請參見建立節點池。
在應用程式容器鏡像構建時安裝eRDMA相關包。
在叢集中運行使用eRDMA的GPU應用,以
nccl-test
為例。驗證NCCL使用了eRDMA加速。
您可以在應用日誌中查看NCCL使用的通訊類型和使用的網卡數量。例如下圖所示。
預期輸出表明,已使用
erdma_0
和erdma_1
的eRDMA裝置進行了加速。
情境樣本二:使用SMC-R透明加速應用網路
參見步驟二:安裝ACK eRDMA Controller組件安裝組件時,配置
preferDriver
為default
,用於普通類型的通訊加速。參見下方範例程式碼,在叢集中建立SMC-R加速的應用。
查看Pod中網路連接的加速情況。
您可以在容器中安裝
smc-tools
,通過smcss
的命令查看加速效果。/# smcss State UID Inode Local Address Peer Address Intf Mode ACTIVE 00000 0059964 172.17.192.73:47772 172.17.192.10:80 0000 SMCR
預期輸出表明,
Mode
中顯示SMCR
,表明已對這條串連進行了eRDMA加速。