ドッカーハブのレート制限の処理
クラスターがドッカーハブのレート制限の影響を受けないようにする方法。
2020 年 11 月 20 日以来、Docker Hub はイメージプルに レート制限 を導入しました。
Istio は既定のレジストリとして Docker Hub を使用するため、大規模なクラスターでの使用ではレート制限を超過して pod の起動に失敗することがあります。クラスター内のほとんどの pod に Istio サイドカーイメージが併せて存在するため、とりわけ Istio ではこれが問題になる可能性があります。
軽減策
Istio ではカスタムドッカーレジストリを指定できます。これにより、プライベートレジストリからコンテナイメージを取得できます。インストール時に --set hub=<some-custom-registry>
を渡すことで構成できます。
Istio は Google Container Registry への公式ミラーを提供しています。--set hub=gcr.io/istio-release
で構成できます。これは Istio 1.5 以降で利用できます。
あるいは、公式 Istio イメージを独自のレジストリにコピーすることもできます。これは、使用事例に合わせて調整されたレジストリでクラスターが実行される場合(たとえば、AWS ではイメージを Amazon ECR にミラーリングする必要がある場合)や、パブリックレジストリへのアクセスが制限されるエアギャップセキュリティ要件がある場合に特に役立ちます。これは次のスクリプトで行うことができます。
$ SOURCE_HUB=istio
$ DEST_HUB=my-registry # Replace this with the destination hub
$ IMAGES=( install-cni operator pilot proxyv2 ) # Images to mirror.
$ VERSIONS=( 1.7.5 1.8.0 ) # Versions to copy
$ VARIANTS=( "" "-distroless" ) # Variants to copy
$ for image in $IMAGES; do
$ for version in $VERSIONS; do
$ for variant in $VARIANTS; do
$ name=$image:$version$variant
$ docker pull $SOURCE_HUB/$name
$ docker tag $SOURCE_HUB/$name $DEST_HUB/$name
$ docker push $DEST_HUB/$name
$ docker rmi $SOURCE_HUB/$name
$ docker rmi $DEST_HUB/$name
$ done
$ done
$ done