处理 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
分享此帖子