處理 Docker Hub 速率限制

如何確保您的叢集不受 Docker Hub 速率限制的影響。

2020 年 12 月 7 日 | 作者:John Howard - Google

自 2020 年 11 月 20 日起,Docker Hub 對映像檔拉取引入了速率限制

由於 Istio 使用 Docker Hub 作為預設的登錄檔,大型叢集上的使用可能會因超出速率限制而導致 Pod 無法啟動。這對 Istio 來說尤其成問題,因為通常叢集中大多數 Pod 旁邊都有 Istio Sidecar 映像檔。

緩解措施

Istio 允許您指定自訂的 Docker 登錄檔,您可以使用它從您的私有登錄檔獲取容器映像檔。這可以透過在安裝時傳遞 --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
分享這篇文章