自己管理型イメージリポジトリからイメージをプルする際に、イメージのプルに失敗することがあります。一般的な原因には、プロトコルの不一致、証明書認証のエラー、またはカスタム DNS サーバの使用が含まれます。このトピックでは、リポジトリが HTTP プロトコル、自己署名証明書、またはカスタム DNS サーバを使用している場合に、自己管理型イメージリポジトリからイメージをプルして ACS ワークロードを作成する方法について説明します。
背景情報
自己管理型イメージリポジトリからイメージをプルする際に、ErrImagePull イベントが発生し、イメージのプルが失敗したことを示す場合があります。ご利用の ACS クラスターがネットワーク経由でイメージリポジトリに接続できると仮定した場合、一般的な原因とソリューションを次の表に示します。
|
シナリオ |
原因 |
ソリューション |
|
自己管理型イメージリポジトリが HTTP プロトコルを使用している。 |
ACS はデフォルトで HTTPS 経由でイメージをプルします。プロトコルの不一致により、イメージのプルが失敗します。 |
ACS が HTTP プロトコルを使用してイメージリポジトリと通信するように設定します。 |
|
自己管理型イメージリポジトリが HTTPS プロトコルを使用しているが、自己署名証明書を使用している。 |
ACS が自己署名証明書を認証できないため、イメージのプルが失敗します。 |
ACS が証明書認証をスキップするように設定します。 |
|
自己管理型イメージリポジトリのドメインがカスタム DNS サーバを使用している。 |
デフォルトでは、ACS は Alibaba Cloud DNS (100.100.2.136 および 100.100.2.138) を使用してイメージリポジトリのドメインを解決します。イメージリポジトリのドメインレコードがカスタム DNS サーバにのみ存在する場合、イメージのプルは失敗します。 |
「アノテーションを使用したカスタム DNS の設定」をご参照ください。 |
設定
HTTP プロトコルまたは自己署名証明書を使用する自己管理型イメージリポジトリからイメージをプルする必要がある場合は、イメージのプル失敗を防ぐために、Pod に次のアノテーションを設定する必要があります。
|
パラメーター |
タイプ |
値 |
説明 |
|
|
String |
|
指定されたリポジトリから ACS が HTTP 経由でイメージをプルできるようにします。これにより、プロトコルの不一致による失敗を防ぎます。 |
|
|
String |
|
自己署名証明書を使用するリポジトリに対して、ACS が証明書認証をスキップできるようにします。これにより、認証エラーによるプル失敗を防ぎます。 |
複数のコンテナのイメージを異なるイメージリポジトリからプルする必要がある場合は、複数のリポジトリアドレスを指定できます。アドレスはコンマ (,) で区切ります。例: harbor***.pre.com,192.168.XX.XX。
以下に、ステートレスアプリケーションの例を示します。
-
ACS コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
-
クラスターリスト ページで、対象クラスターの名前をクリックします。左側のナビゲーションウィンドウで、Workloads > Deployments を選択します。
-
Deployments ページで、[イメージから作成] をクリックします。
-
基本情報 ページで、必須情報を入力し、[次へ] をクリックします。
-
コンテナー ページで、コンテナを設定し、[次へ] をクリックします。
-
[詳細設定] ページの Pod Annotations セクションで、必須のアノテーションを追加します。たとえば、
registry.alibabacloud.com/plain-http-registryとregistry.alibabacloud.com/insecure-registryを追加し、[作成] をクリックします。