Container Service for Kubernetes(ACK)クラスタの P2P アクセラレーション機能を使用して、イメージプルを高速化し、アプリケーションのデプロイに必要な時間を短縮できます。このトピックでは、ACK クラスタに P2P アクセラレーションエージェントをインストールする方法について説明します。
前提条件
標準またはアドバンスト Container Registry Enterprise インスタンス が作成されている。
ACK マネージドクラスター、ACK 専用クラスター、または ACK Serverless Pro クラスターが作成されている。詳細については、「ACK マネージドクラスターを作成する」または「ACK Serverless クラスターを作成する」をご参照ください。
ACK クラスタが属する仮想プライベートクラウド(VPC)が、Container Registry Enterprise Edition インスタンスのアクセス制御リスト(ACL)で設定されている。詳細については、「VPC のネットワークアクセス制御を設定する」をご参照ください。
イメージ使用量の制限
ビジネスコンテナイメージが、大規模モデルなどの超大型イメージである場合、ノードのデータディスクが AutoPL タイプであるか、ノードに P2P データキャッシング用に 8 GB 以上の空きメモリがあることを確認して、P2P データプルの効率を向上させてください。
ステップ 1:Container Registry Enterprise Edition インスタンスの ID を取得し、P2P アクセラレーション機能を有効にする
[Container Registry コンソール] にログインします。
上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーションウィンドウで、[インスタンス] をクリックします。
[インスタンス] ページで、管理する Enterprise Edition インスタンスをクリックします。
[概要] ページで、Container Registry Enterprise Edition インスタンスの [インスタンス ID] を記録し、[コンポーネント設定] セクションで [P2P アクセラレーション] をオンにします。表示されるメッセージで、[OK] をクリックします。
警告P2P アクセラレーションエージェントを無効にする前に、P2P 機能の使用を停止し、P2P エージェントがインストールされているすべてのクラスターから P2P エージェントをアンインストールする必要があります。機能を再度有効にする場合は、P2P エージェントを再インストールする必要があります。

ステップ 2:P2P エージェントをインストールし、P2P エージェントに対応する権限を付与する
次のいずれかの方法を使用して、P2P エージェントに Container Registry Enterprise Edition インスタンスへのアクセス権を付与できます。
ワーカー RAM ロールを使用する。
制限:Container Registry Enterprise Edition インスタンスと ACK クラスタは、同じ Alibaba Cloud アカウントに属している必要があります。
RAM ユーザーの AccessKey ペアを使用する。
RAM Roles for Service Accounts(RRSA)機能を使用する。
制限:クラスターは、Kubernetes 1.22 以降を実行する ACK マネージドクラスターである必要があります。
ワーカー RAM ロールを使用して、P2P エージェントに Container Registry Enterprise Edition インスタンスへのアクセス権を付与し、エージェントをインストールする
[ACK コンソール] にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、ターゲットクラスターを見つけ、その名前をクリックします。左側のナビゲーションウィンドウで、[クラスター情報] をクリックします。
[クラスター情報] ページで、[基本情報] タブをクリックします。[クラスターリソース] セクションで、[ワーカー RAM ロール] の右側の名前をコピーし、リンクをクリックして [RAM] コンソールに入り、ワーカー RAM ロールに権限を付与します。
次のカスタム権限ポリシーを作成します。カスタムポリシーの作成 を参照してください。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "cr:GetInstanceVpcEndpoint", "cr:ListInstanceEndpoint" ], "Resource": "*" } ] }[RAM ロール] ページで、ワーカー RAM ロールを検索し、上記で作成したカスタム権限ポリシーを付与します。詳細な手順については、「RAM ロールに権限を付与する」をご参照ください。
[ACK コンソール] にログインします。左側のナビゲーションウィンドウで、 を選択します。
[アプリカタログ] ページで、検索ボックスに [ack-acr-acceleration-p2p] と入力し、対応するエージェントを見つけ、エージェントのカードをクリックします。
エージェントの詳細ページで、右上隅にある [デプロイ] をクリックします。
[作成] パネルで、[クラスター] と [名前空間] を設定し、リリース名を設定して、[次へ] をクリックします。
[パラメーター] パネルで、チャートバージョンを最新バージョンに設定し、acrInstances をステップ 1 で取得した Container Registry Enterprise Edition インスタンスの ID に設定します。複数の Container Registry Enterprise Edition インスタンスがある場合は、acrInstances を設定するときに ID をカンマ(,)で区切ります。
# 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説明デフォルトでは、P2P エージェントはノードのポート 65001 を使用します。ポート 65001 が別のエージェントによって占有されている場合は、P2P エージェントのポートを変更します。
ACK クラスタと Container Registry Enterprise Edition インスタンスが同じリージョンにある場合は、region パラメーターと vpcId パラメーターを空のままにすることができます。ACK クラスタと Container Registry Enterprise Edition インスタンスが異なるリージョンにある場合は、region パラメーターを Container Registry Enterprise Edition インスタンスが存在するリージョンに設定し、vpcId パラメーターを Container Registry Enterprise Edition インスタンスに関連付けられている VPC の ID に設定する必要があります。
ビジネスコンテナイメージが、大規模モデルなどの超大型イメージである場合、ノードの状態に基づいて P2P データのキャッシュモードを調整する必要があります。
データディスクベースのキャッシュモード:これは P2P データのデフォルトのキャッシュモードです。ノードのデータディスクが AutoPL タイプであり、
p2p.v2.cache.modeの値がdiskであることを確認してください。メモリベースのキャッシュモード:ノードに 8 GB 以上の空きメモリがあり、
p2p.v2.cache.modeの値がmemoryであることを確認してください。
RAM ユーザーの AccessKey ペアを使用して、P2P エージェントに Container Registry Enterprise Edition インスタンスへのアクセス権を付与し、エージェントをインストールする
RAM ユーザーを作成します。詳細については、「RAM ユーザーを作成する」をご参照ください。
次の権限を RAM ユーザーに追加し、RAM ユーザーの AccessKey ペアを取得します。詳細については、「RAM ユーザーの AccessKey ペアに関する情報を表示する」をご参照ください。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "cr:GetInstanceVpcEndpoint", "cr:ListInstanceEndpoint" ], "Resource": "*" } ] }[ACK コンソール] にログインします。左側のナビゲーションウィンドウで、 を選択します。
[アプリカタログ] ページで、検索ボックスに [ack-acr-acceleration-p2p] と入力し、対応するエージェントを見つけ、エージェントのカードをクリックします。
エージェントの詳細ページで、右上隅にある [デプロイ] をクリックします。
[作成] パネルで、[クラスター] と [名前空間] を設定し、リリース名を設定して、[次へ] をクリックします。
[パラメーター] パネルで、チャートバージョンを最新バージョンに設定し、acrInstances をステップ 1 で取得した Container Registry Enterprise Edition インスタンスの ID に設定します。複数の Container Registry Enterprise Edition インスタンスがある場合は、acrInstances を設定するときに ID をカンマ(,)で区切ります。取得した AccessKey ID と AccessKey シークレットを入力します。
# 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説明デフォルトでは、P2P エージェントはノードのポート 65001 を使用します。ポート 65001 が別のエージェントによって占有されている場合は、P2P エージェントのポートを変更します。
ACK クラスタと Container Registry Enterprise Edition インスタンスが同じリージョンにある場合は、region パラメーターと vpcId パラメーターを空のままにすることができます。ACK クラスタと Container Registry Enterprise Edition インスタンスが異なるリージョンにある場合は、region パラメーターを Container Registry Enterprise Edition インスタンスが存在するリージョンに設定し、vpcId パラメーターを Container Registry Enterprise Edition インスタンスに関連付けられている VPC の ID に設定する必要があります。
ビジネスコンテナイメージが、大規模モデルなどの超大型イメージである場合、ノードの状態に基づいて P2P データのキャッシュモードを調整する必要があります。
データディスクベースのキャッシュモード:これは P2P データのデフォルトのキャッシュモードです。ノードのデータディスクが AutoPL タイプであり、
p2p.v2.cache.modeの値がdiskであることを確認してください。メモリベースのキャッシュモード:ノードに 8 GB 以上の空きメモリがあり、
p2p.v2.cache.modeの値がmemoryであることを確認してください。
RRSA 機能を使用して、P2P エージェントに Container Registry Enterprise Edition インスタンスへのアクセス権を付与し、エージェントをインストールする
RRSA 機能を使用して、クラスター内のポッドに対してアクセス制御を実行できます。
RRSA 機能は、バージョン 1.22 以降の Kubernetes クラスターでのみ使用できます。
RRSA 機能を有効にするには、P2P エージェントを v0.3.6 以降にアップグレードする必要があります。
P2P エージェントの RRSA 機能を有効にするには、ACK コンソールの [クラスター情報] ページの [基本情報] タブで RRSA を有効にしてから、P2P エージェントの RRSA を設定する必要があります。操作シーケンスを逆にして、P2P エージェントの RRSA を設定してから、ACK コンソールの [クラスター情報] ページの [基本情報] タブで RRSA を有効にした場合は、RRSA を設定した後に P2P エージェントをアンインストールして再インストールする必要があります。これにより、RRSA 機能が有効になります。
クラスターの RRSA 機能を有効にします。詳細については、「RRSA を使用して、異なるポッドに異なるクラウドサービスへのアクセスを許可する」をご参照ください。
Container Registry Enterprise Edition インスタンスにアクセスするように RRSA ロールを設定します。
Container Registry Enterprise Edition インスタンスと ACK クラスタが同じ Alibaba Cloud アカウントに属している。
たとえば、アカウント A が Container Registry Enterprise Edition インスタンスと ACK クラスタの所有者である場合、アカウント A の RAM ロールを作成します。詳細については、「信頼できる Alibaba Cloud アカウントの RAM ロールを作成する」をご参照ください。次の権限ポリシーを RAM ロールにアタッチします。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "cr:GetInstanceVpcEndpoint", "cr:ListInstanceEndpoint" ], "Resource": "*" } ] }説明サンプルコードの <oidc_issuer_url> を、ACK クラスタの OpenID Connect(OIDC)ID プロバイダー(IdP)の URL に置き換えます。URL は、[ACK コンソール] の [クラスター情報] ページの [基本情報] タブで取得できます。
サンプルコード内の <oidc_provider_arn> を、ACK クラスターの OIDC IdP ARN (Alibaba Cloud リソースネーム) に置き換えます。 ARN は、ACK コンソールの [クラスター情報] ページの [基本情報] タブで取得できます。
{ "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" }Container Registry Enterprise Edition インスタンスと ACK クラスタが異なる Alibaba Cloud アカウントに属している。
たとえば、アカウント A が ACK クラスタの所有者で、アカウント B が Container Registry Enterprise Edition インスタンスの所有者である場合、アカウント A の ACK クラスタがアカウント B の Container Registry Enterprise Edition インスタンスにアクセスできるように承認する必要があります。
アカウント A の RAM ロールを作成します。詳細については、「信頼できる Alibaba Cloud アカウントの RAM ロールを作成する」をご参照ください。AliyunSTSAssumeRoleAccess ポリシーをアカウント A の RAM ロールにアタッチします。このポリシーは、アカウント A の RAM ロールにアカウント B の RAM ロールをアシュームする権限を付与します。アカウント A の信頼ポリシーを変更します。
説明サンプルコードの <oidc_issuer_url> を、ACK クラスタの OIDC IdP の URL に置き換えます。URL は、[ACK コンソール] の [クラスター情報] ページの [基本情報] タブで取得できます。
サンプルコード内の <oidc_provider_arn> を、ACK クラスターの OIDC IdP ARN に置き換えます。 ARN は、ACK コンソールの [クラスター情報] ページの [基本情報] タブで取得できます。
{ "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" }Container Registry Enterprise Edition インスタンスへのアクセス権を持つアカウント B の RAM ロールを作成し、[信頼ポリシー] をクリックして、アカウント A の RAM ロールの ARN を追加します。次のポリシーをアカウント B の RAM ロールにアタッチして、次の権限をアカウント B の RAM ロールに付与します。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "cr:GetInstanceVpcEndpoint", "cr:ListInstanceEndpoint" ], "Resource": "*" } ] }説明アカウント B の RAM ロールの MaxSessionDuration パラメーターを設定できます。MaxSessionDuration パラメーターの有効値の範囲は 3600 ~ 43200 秒です。次のステップ 7 で RRSA 機能を設定するときに、expireDuration パラメーターを設定する必要があります。MaxSessionDuration と expireDuration に同じ値を指定することをお勧めします。expireDuration の値は、MaxSessionDuration の値以下にすることができます。
[ACK コンソール] にログインします。左側のナビゲーションウィンドウで、 を選択します。
[アプリカタログ] ページで、検索ボックスに [ack-acr-acceleration-p2p] と入力し、対応するエージェントを見つけ、エージェントのカードをクリックします。
エージェントの詳細ページで、右上隅にある [デプロイ] をクリックします。
[作成] パネルで、[クラスター] と [名前空間] を設定し、リリース名を設定して、[次へ] をクリックします。
[パラメーター] パネルで、チャートバージョンを最新バージョンに設定し、registryInstances をステップ 1 で取得した Container Registry Enterprise Edition インスタンスの ID に設定します。複数の Container Registry Enterprise Edition インスタンスがある場合は、registryInstances を設定するときに ID をカンマ(,)で区切ります。次の表に、RRSA 機能を設定するときに設定する必要のあるパラメーターを示します。
パラメーター
説明
値
rrsa.enable
RRSA 機能を有効にするかどうかを指定します。
true
rrsa.rrsaRoleARN
アカウント A に作成した RAM ロールの ARN。
acs:ram::aaa
rrsa.rrsaOIDCProviderRoleARN
ACK コンソールのクラスター情報ページの基本情報タブで取得した OIDC IdP の ARN。
acs:ram::bbb
rrsa.assumeRoleARN
アカウント B に作成した RAM ロールの ARN。Container Registry Enterprise Edition インスタンスと ACK クラスタが同じ Alibaba Cloud アカウントに属している場合は、このパラメーターを空のままにします。
acs:ram::ccc
rrsa.expireDuration
アカウント B に作成した RAM ロールのセッション期間。セッション期間は、aliyun-acr-credential-helper によって生成されるシークレットの有効期間と同じです。Container Registry Enterprise Edition インスタンスと ACK クラスタが同じ Alibaba Cloud アカウントに属している場合は、このパラメーターを空のままにします。
重要expireDuration の値は、アカウント B の RAM ロールの MaxSessionDuration の値より大きくすることはできません。
デフォルト値:3600。有効値:3600 ~ 43200。単位:秒。
アカウント B の RAM ロールの MaxSessionDuration パラメーターを 43200 に設定します。
その他のパラメーターについては、「付録」をご参照ください。
説明デフォルトでは、P2P エージェントはノードのポート 65001 を使用します。ポート 65001 が別のエージェントによって占有されている場合は、P2P エージェントのポートを変更します。
ACK クラスタと Container Registry Enterprise Edition インスタンスが同じリージョンにある場合は、region パラメーターと vpcId パラメーターを空のままにすることができます。ACK クラスタと Container Registry Enterprise Edition インスタンスが異なるリージョンにある場合は、region パラメーターを Container Registry Enterprise Edition インスタンスが存在するリージョンに設定し、vpcId パラメーターを Container Registry Enterprise Edition インスタンスに関連付けられている VPC の ID に設定する必要があります。
ビジネスコンテナイメージが、大規模モデルなどの超大型イメージである場合、ノードの状態に基づいて P2P データのキャッシュモードを調整する必要があります。
データディスクベースのキャッシュモード:これは P2P データのデフォルトのキャッシュモードです。ノードのデータディスクが AutoPL タイプであり、
p2p.v2.cache.modeの値がdiskであることを確認してください。メモリベースのキャッシュモード:ノードに 8 GB 以上の空きメモリがあり、
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 エージェントのその他のパラメーターを示します。
データキャッシング関連のパラメーター | データディスクベースのキャッシュモードのデフォルト値 | メモリベースのキャッシュモードのデフォルト値 | 説明 |
blocksize | 256 | 256 | データソース Object Storage Service(OSS)への単一のリクエストにおけるシャードのサイズ。 |
capacity | 4294967296 | 0 | ディスクキャッシュのサイズ。 |
optionBlockSize | 67108864 | 8589934592 | メモリキャッシュのサイズ。単位:GB。
|
memoryCacheCapacityGB | 1 | 8 |
|
aio | 0 | 0 | このパラメーターは、libaio(Linux ネイティブ非同期 I/O)ライブラリを有効にするために使用されます。このパラメーターは、メモリベースのキャッシュモードでは無効です。
|
DeployConfig | |||
proxyFsParallels | 128 | P2P エージェントが並行して処理できるリクエストの最大数。 | |
AgentConfig | |||
connectTimeout (s) | 5 | P2P エージェントがアップストリームノードとの接続を確立するためのタイムアウト期間。単位:秒。 | |
transferTimeout (s) | 15 | P2P エージェントがアップストリームノードからデータ転送を受信するためのタイムアウト期間。単位:秒。値を 15 に設定します。 | |