Container Service for Kubernetes (ACK) クラスターのP2Pアクセラレーション機能を使用して、イメージプルを高速化し、アプリケーションのデプロイに必要な時間を短縮できます。 このトピックでは、ACKクラスターにP2Pアクセラレーションエージェントをインストールする方法について説明します。
前提条件
Container Registry Enterprise EditionのStandardまたはAdvanced Editionインスタンスが作成されます。 詳細については、「Container Registry Enterprise Editionインスタンスの作成」をご参照ください。
ACK管理クラスター、ACK専用クラスター、またはACK Serverless Proクラスターが作成されます。 詳細については、「ACKマネージドクラスターの作成」または「ACKサーバーレスクラスターの作成」をご参照ください。
ACKクラスターが属する仮想プライベートクラウド (VPC) は、Container Registry Enterprise Editionインスタンスのアクセス制御リスト (ACL) で設定されます。 詳細については、「VPC ACLの設定」をご参照ください。
画像使用の制限
ビジネスコンテナイメージがラージモデルなどの超ラージイメージの場合は、ノードのデータディスクが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ロール (RRSA) 機能を使用します。
制限: クラスターは、Kubernetes 1.22以降を実行するACKマネージドクラスターである必要があります。
ワーカーRAMロールを使用して、P2PエージェントにContainer Registry Enterprise Editionインスタンスへのアクセスを許可し、エージェントをインストールします
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[クラスター情報] をクリックします。
[クラスター情報] ページで、[基本情報] タブをクリックします。 [クラスターリソース] セクションで、[ワーカーRAMロール] の横にあるURLをクリックします。
ワーカーRAMロールの基本情報ページで、[権限] タブをクリックし、[ポリシー] 列の権限ポリシー名をクリックします。 ポリシーに次の内容が含まれているかどうかを確認します。 そうでない場合は、[ポリシードキュメントの変更] をクリックします。 [ポリシードキュメント] セクションで、次のコンテンツを追加し、[OK] をクリックします。
{ "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をコンマ (,) で区切ります。
# 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.mo de
の値がdisk
であることを確認します。メモリベースのキャッシングモード: ノードに8 GB以上の空きメモリがあり、
p2p.v2.cache.mo de
の値が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.mo de
の値がdisk
であることを確認します。メモリベースのキャッシングモード: ノードに8 GB以上の空きメモリがあり、
p2p.v2.cache.mo de
の値が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": "*" } ] }
{ "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の信頼ポリシーを変更します。
{ "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.mo de
の値がdisk
であることを確認します。メモリベースのキャッシングモード: ノードに8 GB以上の空きメモリがあり、
p2p.v2.cache.mo de
の値が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) への1回のリクエスト内のシャードのサイズ。 |
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に設定します。 |