一、背景说明
工作需要搭建kubernetes集群,需要用到官方镜像,但是官方镜像都在谷歌仓库,受限于GFW,无法直接pull镜像,这里可以利用Github与阿里云的容器镜像服务来免费获取gcr.io上的镜像
要实现这一目的,你需要具备以下几个条件
- github账号
- 阿里云账号
二、获取官方的kubernetes镜像
以获取kubernetes 1.14.1为例
2.1.创建镜像仓库
登录容器镜像服务页
https://cr.console.aliyun.com/cn-shanghai/instances/repositories
创建镜像仓库
接下来我们就会发现在镜像列表中多了一行,点击改行右侧的管理
添加规则之前需要进行github上对应仓库的设置
2.2.编写Dockerfile
需要在github上的仓库docker-library上的对应目录上创建Dockerfile
在仓库docker-library的目录/kube-controller-manager-amd64下创建目录v1.14.1
在该目录下创建Dockerfile
cat Dockerfile
FROM gcr.io/google_containers/kube-controller-manager:v1.14.1
然后点击立即构建
几分钟后就构建成功了,这样就成功的利用github和阿里云构建了需要某个版本的原生kubernetes镜像,用此方法构建其他kubernetes镜像
2.3.镜像使用
拉取新构建的镜像
docker login --username=阿里云账号 registry.cn-shanghai.aliyuncs.com
输入仓库密码,注意这里不是输入阿里云账号密码
docker pull registry.cn-shanghai.aliyuncs.com/linuxwt/kube-controller-manager:v1.14.1
然后将其打上tag
docker tag registry.cn-shanghai.aliyuncs.com/linuxwt/kube-controller-manager:v1.14.1 k8s.gcr.io/kube-controller-manager:v1.14.1
不过flannel这个组件的原生镜像tag应该像下面这样打
docker tag registry.cn-shanghai.aliyuncs.com/linuxwt/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64
当然也可以推送镜像到阿里云镜像仓库,前提是要先建立一个镜像仓库(这里建立的是绑定了github仓库docker-library的,方便后期我们通过构建规则来获取不同版本的k8s原生镜像)
拿kubernetes其中一个组件kube-scheduler为例,首先在阿里云镜像服务上建立一个名为kube-schedule的仓库,然后将服务器上已有的镜像打一个tag
docker tag k8s.gcr.io/kube-scheduler:v1.14.1 registry.cn-shanghai.aliyuncs.com/linuxwt/kube-scheduler:v1.14.1
接着推送
docker push registry.cn-shanghai.aliyuncs.com/linuxwt/kube-scheduler:v1.14.1
最后的说明
其实一般来讲我们很难直接获取k8s的官方原生镜像,但是我们可以通过以上这种方式间接获取,同时我们也可以基于已有的镜像推送到阿里云镜像仓库上