您可以在ACK叢集中使用P2P加速功能提升鏡像拉取速度,減少應用部署時間。本文介紹如何在ACK叢集中安裝P2P加速套件。
前提條件
已建立標準版或進階版ACR企業版執行個體。
確認在Container Registry企業版執行個體中配置ACK叢集對應的專用網路。具體操作,請參見配置專用網路的存取控制。
鏡像使用限制
如果您的業務容器鏡像是大模型等超大鏡像,需確保節點池的節點資料盤為AutoPL類型,或確保節點有8GB以上的空閑記憶體用於P2P資料緩衝,以提高P2P拉取的效率。
步驟一:擷取Container RegistryACR企業版執行個體ID並開啟P2P模組
在頂部功能表列,選擇所需地區。
在左側導覽列,選擇執行個體列表。
在執行個體列表頁面單擊目標企業版執行個體。
在概覽頁面,記錄執行個體ID並開啟組件設定板塊下的P2P加速按鈕,然後在彈出的對話方塊中單擊確定。
警告關閉P2P加速組件前需要停止使用P2P功能,並從所有安裝使用P2P組件的叢集中卸載P2P組件,重新開啟該功能需要重新安裝P2P組件。

步驟二:安裝P2P組件(包含授予P2P組件相應的許可權)
您可以通過以下三種方式授予P2P組件對Container RegistryACR企業版執行個體的存取權限。
使用Worker RAM角色進行授權並安裝。
使用限制:Container RegistryACR企業版執行個體與ACK叢集屬於同一個阿里雲帳號。
使用RAM使用者的AK及SK進行授權並安裝。
使用RRSA進行授權並安裝。
使用限制:僅支援在1.22及以上版本的ACK託管叢集。
使用Worker RAM角色進行授權並安裝
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇叢集資訊。
在叢集資訊頁面,選擇基本資料頁簽,在叢集資源地區,複製Worker RAM角色右側的名稱,並單擊連結進入RAM存取控制控制台為該Worker RAM角色授權。
建立如下自訂權限原則。請參見建立自訂權限原則。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "cr:GetInstanceVpcEndpoint", "cr:ListInstanceEndpoint" ], "Resource": "*" } ] }在角色頁面,搜尋定位該Worker RAM角色,為其授予以上建立的自訂權限原則。具體操作,請參見管理RAM角色的許可權。
登入Container Service管理主控台,在左側導覽列選擇。
在應用目錄頁面下方搜尋方塊內輸入ack-acr-acceleration-p2p,找到該組件,單擊該組件卡片。
在組件詳情頁面,單擊右上方的一鍵部署。
在建立面板中,選擇叢集和命名空間,設定發布名稱,單擊下一步。
在參數配置面板,選擇Chart版本為最新版本,設定acrInstances參數為上文擷取的容器鏡像執行個體ID。如果有多個容器鏡像執行個體,在設定acrInstances參數時,執行個體之間使用英文半形逗號(,)隔開。
# ID of ACR EE instances, support multi, e.g. "cri-xxx,cri-yyy" acrInstances: "" # Region of ACR EE instance, default is the region of the cluster on the cloud. # Need to be set if cross-regional access on the cloud cluster, or access on your IDC cluster. region: "" # VPC which is connected to the VPC network of the ACR EE instance, default is the VPC of the cluster on the cloud. # Need to be set if cross-regional access on the cloud cluster, or access on your IDC cluster through VPC network. vpcId: "" p2p: # Port of P2P Agent in host network port: 65001說明預設佔用節點上的65001連接埠,如果有衝突,請根據實際情況修改。
當ACK叢集與ACR企業版執行個體處於同一地區時,參數Region和VPC ID可以留空;若ACK叢集與ACR企業版執行個體處於不同地區時,Region需要設定為ACR企業版執行個體所在的地區,VPC ID需要設定為ACR企業版執行個體所綁定的VPC ID。
如果您的業務容器鏡像是大模型等超大鏡像,您需要結合節點情況調整P2P資料緩衝模式:
資料盤緩衝模式(預設):確保節點上的資料盤類型為AutoPL類型。將
p2p.v2.cache.mode的值設定為disk。記憶體緩衝模式:確保節點上有至少8GB的空閑記憶體,然後將
p2p.v2.cache.mode的值設定為memory。
使用RAM使用者的AK及SK進行授權並安裝
建立RAM使用者。具體操作,請參見建立RAM使用者。
為RAM使用者添加如下許可權,然後建立AccessKey並記錄AccessKey ID和AccessKey Secret。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "cr:GetInstanceVpcEndpoint", "cr:ListInstanceEndpoint" ], "Resource": "*" } ] }登入Container Service管理主控台,在左側導覽列選擇。
在應用目錄頁面下方搜尋方塊內輸入ack-acr-acceleration-p2p,找到該組件,單擊該組件卡片。
在組件詳情頁面,單擊右上方的一鍵部署。
在建立面板中,選擇叢集和命名空間,設定發布名稱,單擊下一步。
在參數配置面板,選擇Chart版本為最新版本,設定acrInstances參數為上文擷取的容器鏡像執行個體ID。如果有多個容器鏡像執行個體,在設定acrInstances參數時,執行個體之間使用英文半形逗號(,)隔開,填入上文中查到的AccessKey ID和AccessKey Secret。
# ID of ACR EE instances, support multi, e.g. "cri-xxx,cri-yyy" acrInstances: "" # Please fill in the following parameters if the K8s cluster is built in your own IDC accessKey: "" accessKeySecret: "" # Region of ACR EE instance, default is the region of the cluster on the cloud. # Need to be set if cross-regional access on the cloud cluster, or access on your IDC cluster. region: "" # VPC which is connected to the VPC network of the ACR EE instance, default is the VPC of the cluster on the cloud. # Need to be set if cross-regional access on the cloud cluster, or access on your IDC cluster through VPC network. vpcId: "" p2p: # Port of P2P Agent in host network port: 65001說明預設佔用節點上的65001連接埠,如果有衝突,請根據實際情況修改。
當ACK叢集與ACR企業版執行個體處於同一地區時,參數Region和VPC ID可以留空;若ACK叢集與ACR企業版執行個體處於不同地區時,Region需要設定為ACR企業版執行個體所在的地區,VPC ID需要設定為ACR企業版執行個體所綁定的VPC ID。
如果您的業務容器鏡像是大模型等超大鏡像,您需要結合節點情況調整P2P資料緩衝模式:
資料盤緩衝模式(預設):確保節點上的資料盤類型為AutoPL類型。將
p2p.v2.cache.mode的值設定為disk。記憶體緩衝模式:確保節點上有至少8GB的空閑記憶體,然後將
p2p.v2.cache.mode的值設定為memory。
使用RRSA進行授權並安裝
基於適用於服務賬戶的RAM角色(RAM Roles for Service Accounts,簡稱RRSA)功能,可以在叢集內為組件實現Pod維度許可權隔離。
RRSA功能目前僅支援在1.22及以上版本的叢集中使用。
開啟RRSA功能需要將組件升級到v0.3.6或以上版本。
啟用P2P組件的RRSA功能首先需要在叢集基本資料中啟用RRSA,再進行P2P組件的RRSA的相關配置。若操作順序不對,在配置完成後,需要卸載P2P組件並重新安裝,RRSA功能才會生效。
啟用叢集的RRSA功能。具體操作,請參見通過RRSA配置ServiceAccount的RAM許可權實現Pod許可權隔離。
配置RAM角色的Container RegistryACR的資源存取權限。
若ACR企業版執行個體與ACK叢集屬於同一阿里雲帳號。
例如A使用者為ACK叢集和ACR企業版執行個體的所有者,在A使用者中建立RAM角色。具體操作,請參見建立可信實體為阿里雲帳號的RAM角色。並添加如下權限原則。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "cr:GetInstanceVpcEndpoint", "cr:ListInstanceEndpoint" ], "Resource": "*" } ] }說明將樣本<oidc_issuer_url>替換為當前叢集中OIDC供應商的URL。該URL可以在Container Service管理主控台叢集資訊頁面的基本資料頁簽中擷取。
將樣本中的<oidc_provider_arn>替換為當前叢集OIDC供應商的ARN。該ARN可以在Container Service管理主控台叢集資訊頁面的基本資料頁簽中擷取。
{ "Statement": [ { "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "oidc:aud": [ "sts.aliyuncs.com" ], "oidc:iss": "<oidc_issuer_url>", "oidc:sub": [ "system:serviceaccount:aliyun-acr-acceleration:ack-acr-acceleration-p2p-job-sa", "system:serviceaccount:aliyun-acr-acceleration:ack-acr-acceleration-p2p-sa" ] } }, "Effect": "Allow", "Principal": { "Federated": [ "<oidc_provider_arn>" ] } } ], "Version": "1" }若ACR企業版執行個體與ACK叢集屬於不同的阿里雲帳號。
例如A使用者為ACK叢集所有者,B使用者為ACR企業版執行個體所有者,現在需要授權A使用者的ACK叢集具備訪問B使用者的Container RegistryACR資源的許可權。
在A使用者中建立RAM角色。具體操作,請參見建立可信實體為阿里雲帳號的RAM角色。添加AliyunSTSAssumeRoleAccess權限原則,授予這個角色具有角色扮演的許可權。並修改其信任策略。
說明將樣本<oidc_issuer_url>替換為當前叢集中OIDC供應商的URL。該URL可以在Container Service管理主控台叢集資訊頁面的基本資料頁簽中擷取。
將樣本中的<oidc_provider_arn>替換為當前叢集OIDC供應商的ARN。該ARN可以在Container Service管理主控台叢集資訊頁面的基本資料頁簽中擷取。
{ "Statement": [ { "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "oidc:aud": [ "sts.aliyuncs.com" ], "oidc:iss": "<oidc_issuer_url>", "oidc:sub": [ "system:serviceaccount:aliyun-acr-acceleration:ack-acr-acceleration-p2p-job-sa", "system:serviceaccount:aliyun-acr-acceleration:ack-acr-acceleration-p2p-sa" ] } }, "Effect": "Allow", "Principal": { "Federated": [ "<oidc_provider_arn>" ] } } ], "Version": "1" }在B使用者中建立一個使用者ACR相關許可權的角色,選擇信任策略,添加A使用者角色ARN。對B使用者的角色添加如下權限原則,授予這個角色如下許可權。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "cr:GetInstanceVpcEndpoint", "cr:ListInstanceEndpoint" ], "Resource": "*" } ] }說明該RAM角色可以設定角色最大會話時間,可設定時間範圍為3600秒到43200秒,而角色會話時間在下文的配置項中的expireDuration也需要設定。推薦此處取值的設定和配置項的expireDuration的值一致。允許expireDuration小於等於角色最大會話時間。
登入Container Service管理主控台,在左側導覽列選擇。
在應用目錄頁面下方搜尋方塊內輸入ack-acr-acceleration-p2p,找到該組件,單擊該組件卡片。
在組件詳情頁面,單擊右上方的一鍵部署。
在建立面板中,選擇叢集和命名空間,設定發布名稱,單擊下一步。
在參數配置面板,選擇Chart版本為最新版本,設定registryInstances參數為上文擷取的容器鏡像執行個體ID。如果有多個容器鏡像執行個體,在設定registryInstances參數時,執行個體之間使用英文半形逗號(,)隔開。按照如下表格填入RRSA相關配置項。
參數
說明
值
rrsa.enable
是否開啟RRSA。
true
rrsa.rrsaRoleARN
上文中A使用者建立的角色的ARN。
acs:ram::aaa
rrsa.rrsaOIDCProviderRoleARN
上文中A使用者ACK控制台叢集基本資料中的供應商ARN。
acs:ram::bbb
rrsa.assumeRoleARN
上文中B使用者建立的角色的ARN。同帳號情境不需要填寫
acs:ram::ccc
rrsa.expireDuration
上文中B使用者建立的角色的會話時間,等同於免密組件產生的臨時憑證的有效期間。同帳號情境不填。
重要expireDuration的值不應大於B使用者建立角色的最大會話時間。
預設為3600。取值區間為3600~43200,單位為秒。
同時需要將B使用者建立角色的最大會話時間調整為43200。
其他部分參數說明請參見附錄。
說明預設佔用節點上的65001連接埠,如果有衝突,請根據實際情況修改。
當ACK叢集與ACR企業版執行個體處於同一地區時,參數Region和VPC ID可以留空;若ACK叢集與ACR企業版執行個體處於不同地區時,Region需要設定為ACR企業版執行個體所在的地區,VPC ID需要設定為ACR企業版執行個體所綁定的VPC ID。
如果您的業務容器鏡像是大模型等超大鏡像,您需要結合節點情況調整P2P資料緩衝模式:
資料盤緩衝模式(預設):確保節點上的資料盤類型為AutoPL類型。將
p2p.v2.cache.mode的值設定為disk。記憶體緩衝模式:確保節點上有至少8GB的空閑記憶體,然後將
p2p.v2.cache.mode的值設定為memory。
# ID of ACR EE instances, support multi, e.g. "cri-xxx,cri-yyy" acrInstances: "" rrsa: enable: true rrsaRoleARN: "" rrsaOIDCProviderRoleARN: "" assumeRoleARN: "" expireDuration: 3600 # Region of ACR EE instance, default is the region of the cluster on the cloud. # Need to be set if cross-regional access on the cloud cluster, or access on your IDC cluster. region: "" # VPC which is connected to the VPC network of the ACR EE instance, default is the VPC of the cluster on the cloud. # Need to be set if cross-regional access on the cloud cluster, or access on your IDC cluster through VPC network. vpcId: "" p2p: # Port of P2P Agent in host network port: 65001
附錄
以下是有關ack-acr-acceleration-p2p組件的部分參數說明。
filecache相關 | 預設值(disk模式) | 預設值(memory模式) | 參數說明 |
blocksize | 256 | 256 | 單次向資料來源OSS請求的分區大小。 |
capacity | 4294967296 | 0 | 磁碟緩衝大小。 |
optionBlockSize | 67108864 | 8589934592 | 記憶體緩衝大小:
|
memoryCacheCapacityGB | 1 | 8 |
|
aio | 0 | 0 | 是否啟用libaio,該值在memory模式下無效。
|
DeployConfig | |||
proxyFsParallels | 128 | p2pagent能同時處理的請求數。 | |
AgentConfig | |||
connectTimeout (s) | 5 | p2pagent向上遊建立串連的逾時時間。 | |
transferTimeout (s) | 15 | 資料轉送的逾時時間:15秒內如果接收不到任何資料則判定逾時。 | |