k8s.gcr.io 中国镜像

解决k8s.gcr.io国内无法访问的问题,可借助阿里云的容器镜像服务,使用源代码构建docker镜像,解决镜像无法访问的问题。

dockerhub和kubeimage镜像仓库

mirrorgooglecontainers,kubeimage

docker pull mirrorgooglecontainers/kube-proxy-amd64
docker pull kubeimage/kube-proxy-amd64

说明:这两个仓库对于gcr.io最新镜像更新不及时,如果有指定的版本,首选此镜像仓库,如果国内访问dockerhub速度不佳,尝试将docker仓库替换成国内镜像:

docker.mirrors.ustc.edu.cn

如果是Microsoft Azure用户,可使用如下仓库:

gcr.azk8s.cn

单独下载镜像

如果是安装k8s过程中使用kubeadm安装集群时出现gcr.io无法访问,先使用命令查看kubeadm所需的镜像:

sudo kubeadm config images list

然后使用国内镜像源,下载镜像列表。

gcr.io项目对应的阿里镜像:

http://registry.aliyuncs.com/google_containers

如:

docker pull k8s.gcr.io/coredns:1.7.2 

对应

docker pull registry.aliyuncs.com/google_containers/coredns:1.7.2

gcr.io项目docker对应的镜像源:

docker pull mirrorgooglecontainers/coredns:1.7.2

不管使用哪家的镜像源,下载成功后通过docker tag命令修改镜像的标签:

docker tag docker.io/mirrorgooglecontainers/coredns:1.7.2 k8s.gcr.io/coredns:1.7.2
docker tag docker.io/google_containers/coredns:1.7.2 k8s.gcr.io/coredns:1.7.2

如果需要从源代码构建镜像,参考如下操作。

阿里云容器镜像服务,默认使用国内机器构建镜像,此处构建时注意勾选[海外机器构建]选项。

前提条件

Aliyun账号、Github账号

基本思路

从github上找到对应镜像的源代码,将源代码fork到自己的git仓库。

在aliyun的容器镜像服务中按提示,将github账号授权给aliyun,通常aliyun容器镜像服务,对仓库中的源代码进行构建,生成一个可访问的docker镜像。

操作步骤

以k8s.gcr.io/echoserver为例,演示操作过程。

获取源码

从github中搜索到相应源代码:

将镜像fork到自己git仓库。

授权github账号

首次使用aliyun容器镜像服务,需执行授权操作:

创建镜像仓库

填写镜像仓库基本信息,选择源代码。

注:仓库名称尽量与源码项目名保持一致,示例中是一个错误的示范。

Aliyun容器镜像服务会自动同步gitbub仓库中的项目,示例中选择echoserver,此时将[海外机器构建]一项勾选上,也可在构建页面选择。

添加构建规则

选择类型和分支,添加镜像版本号,无特殊需求其他项保持默认。

执行构建

选择一个构建规则,执行构建:

使用镜像

docker镜像构建完成,回到镜像仓库基本信息页,页面有使用镜像的详细命令,尤其是私有镜像的使用。