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

:自己管理イメージリポジトリからイメージをプルする

最終更新日:Dec 14, 2024

自己管理イメージリポジトリからイメージをプルすると、異なるプロトコルや証明書認証の失敗により、イメージがプルされないことがあります。 このトピックでは、自己管理イメージリポジトリがHTTPプロトコルと自己署名証明書を使用する場合に、自己管理イメージリポジトリからイメージをプルしてポッドまたはImageCacheを作成する方法について説明します。

説明

自己管理イメージリポジトリからイメージをプルすると、ErrImagePullという名前のアラートイベントがトリガーされ、イメージをプルできない場合があります。 次の表は、Elastic Container Instanceとイメージリポジトリ間のネットワークが接続されていることを前提とした問題の原因と解決策を示しています。

シナリオ

原因

解決策

自己管理イメージリポジトリはHTTPプロトコルを使用します。

デフォルトでは、Elastic Container InstanceはHTTPS経由で画像をプルします。 異なるプロトコルを使用すると、イメージプル障害が発生します。

HTTPプロトコルを使用してイメージリポジトリと対話するようにElastic Container Instanceを設定します。

自己管理イメージリポジトリはHTTPSプロトコルを使用しますが、自己署名証明書を使用します。

自己管理イメージリポジトリは、自己署名証明書を使用します。 これにより、リポジトリからイメージをプルするときに証明書の認証が失敗します。 その結果、画像を引っ張ることができない。

証明書認証をスキップするように設定します。

設定

イメージリポジトリからイメージをプルするときに自己管理イメージリポジトリがHTTPプロトコルまたは自己署名証明書を使用する場合、イメージプルの失敗を防ぐためにアノテーションを設定する必要があります。 次の表に、アノテーションを示します。

注釈

値の例

説明

k8s.aliyun.com/plain-http-registry

「harbor *** .pre.com、192.168。XX。XX:5000、reg *** .test.com:80」

自己管理イメージリポジトリのアドレス。

HTTPプロトコルを使用する自己管理イメージリポジトリからイメージをプルする場合は、このアノテーションを指定する必要があります。 このように、Elastic Container InstanceはHTTPプロトコルを使用してイメージをプルします。 これは、異なるプロトコルによるイメージプル失敗を防止する。

k8s.aliyun.com/insecure-registry

「harbor *** .pre.com、192.168。XX。XX:5000、reg *** .test.com:80」

自己管理イメージリポジトリのアドレス。

自己署名証明書を使用する自己管理イメージリポジトリからイメージをプルする場合、証明書認証をスキップするためにこの注釈を指定する必要があります。 これにより、証明書認証の失敗から生じるイメージプルの失敗を防ぎます。

説明
  • 異なるイメージリポジトリから複数のコンテナコンテナをプルする場合は、イメージリポジトリの複数のアドレスを指定できます。 複数の IP アドレスはカンマ (,) で区切ります。 例: harbor *** .pre.com,192.168.XX.XX

  • イメージリポジトリのアドレスにポート番号が含まれている場合は、そのポート番号でアドレスを指定する必要があります。 たとえば、イメージリポジトリのアドレスが192.168.XX.XX:5000/nginx:latestの場合、パラメーターを192.168.XX.XX:5000に設定します。

設定例

自己管理イメージリポジトリからイメージを引き出してポッドを作成する

重要
  • ポッドの構成ファイルのメタデータに注釈を追加する必要があります。 たとえば、配置を作成するときは、spec.template.metadataセクションに注釈を追加する必要があります。

  • Elastic Container Instanceの機能を使用するには、Elastic Container Instanceベースのポッドを作成する場合にのみアノテーションを追加できます。 ポッドを更新するときにアノテーションを追加または変更しても、これらのアノテーションは有効になりません。

  • 例1: 自己管理イメージリポジトリはHTTPプロトコルを使用します。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      replicas: 4
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          name: nginx-test
          annotations:
            k8s.aliyun.com/plain-http-registry: "192.168.XX.XX:5000" # Specifies the address of the self-managed image repository to pull an image over the HTTP protocol.
          labels:
            app: nginx
            alibabacloud.com/eci: "true" 
        spec:
          containers:
          - name: nginx
            image: 192.168.XX.XX:5000/test/nginx:latest
  • 例2: 自己管理イメージリポジトリは、自己署名証明書を使用します。

    apiVersion: apps/v1
    kind: 配置
    メタデータ:
      name: nginx
      ラベル:
        アプリ: nginx
    spec:
      レプリカ: 4
      セレクタ:
        matchLabels:
          アプリ:nginx
      template:
        metadata:
          名前: nginx-test
          アノテーション:
            k8s.aliyun.com/insecure-registry: "harbor *** .pre.com"# システムが自己管理イメージリポジトリからイメージを取得するときに証明書認証をスキップする自己管理イメージリポジトリのアドレスを指定します。
          ラベル:
            アプリ:nginx
            alibabacloud.com/eci: "true" 
        仕様:
          containers:
          - name: nginx
            画像: 港 *** .pre.com/test/nginx:latest 

自己管理イメージリポジトリからイメージをプルしてImageCacheを作成する

  • 例1: 自己管理イメージリポジトリはHTTPプロトコルを使用します。

    apiVersion: eci.alibabacloud.com/v1
    kind: ImageCache
    metadata:
      name: imagecache-sample
      annotations:
        k8s.aliyun.com/plain-http-registry: "192.168.XX.XX:5000"  # Specifies the address of the self-managed image repository to pull an image over the HTTP protocol.
    spec:
      images:
      - 192.168.XX.XX:5000/test/nginx:latest
      imagePullSecrets:
      - default:secret1
      - default:secret2
      - kube-system:secret3
      imageCacheSize:
       25
      retentionDays:
       7
  • 例2: 自己管理イメージリポジトリは、自己署名証明書を使用します。

    apiVersion: eci.alibabacloud.com/v1
    kind: ImageCache
    metadata:
      name: imagecache-sample
      annotations:
        k8s.aliyun.com/insecure-registry: "harbor***.pre.com"  # Specifies the address of the self-managed image repository to skip certificate authentication when the system pulls images from the self-managed image repository.
    spec:
      images:
      - harbor***.pre.com/test/nginx:latest
      imagePullSecrets:
      - default:secret1
      - default:secret2
      - kube-system:secret3
      imageCacheSize:
       25
      retentionDays:
       7