すべてのプロダクト
Search
ドキュメントセンター

Container Registry:オンプレミスのクラスターとサードパーティのクラウドのクラスターでP2Pアクセラレーション機能を使用する

最終更新日:Jun 27, 2024

オンプレミスのクラスターとサードパーティのクラウドのクラスターでP2Pアクセラレーション機能を使用すると、イメージプルを高速化し、アプリケーションのデプロイに使用する時間を短縮できます。 このトピックでは、オンプレミスクラスターおよびサードパーティクラウドのクラスターでP2Pアクセラレーション機能を使用する方法について説明します。

前提条件

  • Container Registry Enterprise Editionインスタンスが作成されました。 Container Registry Enterprise Editionインスタンスは、標準または高度なエディションである必要があります。 詳細については、「Container Registry Enterprise Editionインスタンスの作成」をご参照ください。

  • Container Registry Enterprise Editionインスタンスは、インターネット経由のオンプレミスクラスターまたはサードパーティクラウドのクラスターからのアクセスを許可するように設定されており、インスタンスのホワイトリストが設定されています。 詳細については、「インターネット経由のアクセスの設定」をご参照ください。

  • コマンドを実行する環境では、次の操作が実行されます。

    • Helmをインストールします。 詳細については、「Helm」をご参照ください。

    • kubectlクライアントをインストールし、kubectlを使用してクラスターにアクセスします。

手順

  1. 次のコマンドを実行して、Helmを使用してP2Pコンポーネントをインストールします。

    export ACR_INSTANCE_REGION="<region of acr instance >"
    export ACR_INSTANCE_ID="<id of acr instance >"
    export ALIYUN_AK="<aliyun access key>"
    export ALIYUN_SK="<aliyun access key secret >"
    export P2P_CHART="https://aliacs-k8s-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/app/charts-incubator/ack-acr-acceleration-p2p-0.2.3.tgz"
    
    helm install ack-acr-acceleration-p2p $P2P_CHART -n aliyun-acr-acceleration --create-namespace \
      --set region=$ACR_INSTANCE_REGION \
      --set accessKey=$ALIYUN_AK \
      --set accessKeySecret=$ALIYUN_SK \
      --set p2p.registryInstances=$ACR_INSTANCE_ID \
      --set pullImageInternet=true \
      --set p2p.plusMode.enable=true

    インストール中に、要件に基づいて次のパラメーター設定を追加できます。

    # The retention period of the data cached by the registry-mirror component. The default retention period is 24 hours. You can change the value based on the disk capacity of nodes. 
    --set p2p.plusMode.cacheTTL=<custom time>
    
    # The path to which the data is cached by the registry-mirror component on the host. 
    # If this parameter is not specified, the cache will be lost when the registry-mirror container restarts. 
    --set p2p.plusMode.cacheHostPath=<host path>
    
    # The transfer acceleration feature of Object Storage Service (OSS) is enabled during the pull from origin over the Internet. This feature is applicable to scenarios where the Internet is unstable. For example, you can enable this feature when images are pulled across regions over the Internet. 
    # Before the configuration, make sure that the transfer acceleration feature is enabled in the OSS console. 
    --set p2p.plusMode.ossInternetAccelerate=true
    
    # A value of source indicates that images are downloaded from the registry-mirror component or a registry in the cloud. In this case, the scheduler component is not deployed to your cluster. 
    --set p2p.plusMode.downloadPattern=source
    
    # The scheduler and registry-mirror components are deployed on a specified node.
    # Before the configuration, you must add the following label to the node: k8s.aliyun.com/p2p-plus-node=true.
    --set p2p.plusMode.nodeSelectorEnable=true
  2. P2Pアクセラレーションを有効にします。

    ポッドやデプロイメントなどのワークロードにP2Pアクセラレーションラベルを追加して、これらのワークロードのP2Pアクセラレーションを有効にすることができます。 P2Pアクセラレーションラベルをクラスターの名前空間に追加することもできます。 このように、P2Pアクセラレーションは、この名前空間のアクセラレーション条件を満たすすべてのワークロードに対して有効になります。 これにより、P2Pアクセラレーションを有効にするために特定のワークロードのYAMLファイルを変更する必要がなくなります。 ビジネス要件に基づいてP2Pアクセラレーションラベルを追加する方法を選択します。

    説明

    P2Pアクセラレーションラベルの名前はk8s.aliyun.com/image-accelerate-modeで、値はp2pです。

    • ワークロードにP2Pアクセラレーションラベルを追加する

      この例では、展開にP2Pアクセラレーションラベルを追加します。 次のコマンドを実行して、デプロイのYAMLファイルを編集します。

      kubectl edit deploy <Deployment name>

      デプロイのYAMLファイルにラベルを追加します。k8s.aliyun.com/image-accelerate-mode: p2p.

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: test
        labels:
          app: nginx
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: nginx
        template:
          metadata:
            labels:
              # enable P2P
              k8s.aliyun.com/image-accelerate-mode: p2p
              app: nginx
          spec:
            # your ACR instacne image pull secret
            imagePullSecrets:
            - name: test-registry
            containers:
            # your ACR instacne image
            - image: test-registry-vpc.cn-hangzhou.cr.aliyuncs.com/docker-builder/nginx:latest
              name: test
              command: ["sleep", "3600"]
    • P2Pアクセラレーションラベルを名前空間に追加する

      次のコマンドを実行して、P2Pアクセラレーションラベルを名前空間に追加します。

      kubectl label namespaces <your-namespace> k8s.aliyun.com/image-accelerate-mode=p2p
  3. P2Pアクセラレーションを検証します。

    ポッドに対してP2Pアクセラレーションを有効にすると、P2Pコンポーネントは自動的にP2P-related情報をポッドのYAMLファイルに追加します。 情報は、P2P-related注釈、P2P-accelerated画像のアドレス、およびP2P-accelerated画像をプルするための秘密を含む。

    重要
    • Container Registry Enterprise Editionインスタンスのイメージがポッドの元のYAMLファイルで指定されていない場合、P2Pコンポーネントは前述の情報をファイルに追加しません。 Container Registry Enterprise Editionインスタンスから通常モードでイメージをプルするためのSecreteが設定されていない場合、P2Pコンポーネントは上記の情報も追加しません。

    • P2P-acceleratedイメージをプルするためのSecretと元のイメージをプルするためのSecretは、イメージリポジトリのドメイン名が異なるだけです。 2つの秘密の他の構成は同じである。 元の画像をプルするためのシークレットでユーザー情報が無効である場合、P2P-accelerated画像もプルされません。

    次のコマンドを実行して、ポッドのYAMLファイルを表示します。

    kubectl get po <Pod name> -oyaml

    期待される出力:

    apiVersion: v1
    kind: Pod
    metadata:
      annotations:
        # inject p2p-annotations automatically
        k8s.aliyun.com/image-accelerate-mode: p2p
        k8s.aliyun.com/p2p-config: '...'
    spec:
      containers:
       # inject image to p2p endpoint
       - image: test-registry-vpc.distributed.cn-hangzhou.cr.aliyuncs.com:65001/docker-builder/nginx:latest
      imagePullSecrets:
      - name: test-registry
      # inject image pull secret for p2p endpoint
      - name: acr-credential-test-registry-p2p

    P2P-relatedのアノテーション、P2P-acceleratedイメージのアドレス、およびP2P-acceleratedイメージをプルするためのシークレットがYAMLファイルに存在する場合、P2Pアクセラレーションが有効になります。

  4. オプション: 次のコマンドを実行して、要件に基づいてP2Pコンポーネントのパラメーターを変更します。

    helm upgrade ack-acr-acceleration-p2p $P2P_CHART -n aliyun-acr-acceleration \
      --set p2p.plusMode.cacheTTL=72h
  5. オプション: 次のコマンドを実行して、P2Pコンポーネントをアンインストールします。

    helm uninstall ack-acr-acceleration-p2p -n aliyun-acr-acceleration