我们使用k8s搭建集群的时,总有一道坎挡在前面:谷歌容器镜像 (gcr.io)。作为google亲儿子的k8s,没有理由不使用google镜像库,集群配置文件中yaml默认容器都是需要从gcr.io中拉取。但是呢?在天朝,我们必须硬面刚google,所幸我们还能使用docker hub。 为了能够顺利搭建k8s集群,我们必须解决眼前的问题,我提供两种思路,仅供参考:
1. 代理。代理的问题不多提了,代理完成之后直接安装。网上很多blog都有写,我的也有。但是需要注意一个问题:千万不要代理了自己的集群网段,pod网段。 2. 将gcr.io中镜像转换为docker hub中的镜像,可以下载到本地之后打tag变成yaml要求中的容器;或者直接将yaml中的镜像更改成docker hub镜像。 - 在docker hub上搜索相关的镜像,肯定有人制作转换的,注意确保tag一致。 - 自动化构建docker images, 参考使用github自动化构建docker - 直接下载别人制作好的镜像代理。感谢安家,安家博客 ,安家github 作者主要是通过用github + travis ci + docker hub成功将gcr.io的全部镜像同步到docker hub了。使用方法也参考他的blog。
虽然安家在官方博客已经说明了使用方法,但是他后来稍微进行了修改,只在github上提到,而他没有博客上补充说明,请大家注意。
具体变化如下:
k8s.gcr.io/{image}/{tag} <==> gcr.io/google-containers/{image}/{tag} <==> anjia0532/google-containers.{image}/{tag}
举例说明:
docker pull k8s.gcr.io/federation-controller-manager-arm64:v1.3.1-beta.1
eq(等同于)
docker pull anjia0532/google-containers.federation-controller-manager-arm64:v1.3.1-beta.1