最近开始学习K8S的部署与安装,决定把K8S攻克下来。在安装部署K8S的过程中,遇到了第一个难点(由于某种特殊力量)——下载镜像。
网上看了很多方法,大概分为三种:
- 代理
- 去别人下载好的镜像仓库拉取
- 通过阿里云容器镜像服务去构建
前两种方法尝试都以失败告终,最后决定使用第三种去拉取镜像。网上也有类似的解决方案,但是过程都有点含糊不清,写下这篇文章,仅供大家参考,如果有疑问,欢迎在评论区留言。
1、整体架构
2、GitHub上创建Dockerfile文件
将鼠标悬浮在登陆账号上,然后点击“Your repositories"。
点击"New"新创建建一个仓库。
填写仓库的名字和描述,选择Public,然后点击下方的”Create Repository“创建仓库。再次点击右上方的“Your Repositories”,就可以看到创建的仓库了。
点击刚创建的仓库,进入仓库。
点击"Create new file",为每一个镜像创建一个目录,如上图所示。
只要在文件后面加上一个"/"就可以指定创建在某个目录下,编写一个Dockerfile文件,通过阿里云容器镜像服务拉取这个文件,然后在海外通过这个Dockerfile构建出镜像,再回传到阿里云。各个镜像的Dockerfile文件如下:
FROM gcr.io/google_containers/kube-proxy-amd64:v1.11.1
FROM gcr.io/google_containers/kube-scheduler-amd64:v1.11.1
FROM gcr.io/google_containers/kube-apiserver-amd64:v1.11.1
FROM gcr.io/google_containers/kube-controller-manager-amd64:v1.11.1
FROM gcr.io/google_containers/coredns:1.1.3
FROM gcr.io/google_containers/etcd-amd64:3.2.18
FROM gcr.io/google_containers/pause:3.1
3、在阿里云容器镜像服务上构建镜像
首先进入阿里云容器镜像服务创建一个命名空间
然后创建一个仓库,这里选择为每一个镜像都创建了一个仓库,命名空间可以选择同一个。然后点击“下一步”。
绑定git账号,选择git中的仓库。“海外机器构建”必须勾选上,因为镜像在国内无法下载。
选择管理按钮,进入仓库。
点击添加规则
选择在Git上创建的Dockerfile,目录路径一定要填对,而且在同一个仓库中,版本不能一样。这里的版本和镜像的版本不是必须要一样,你可以把所有的镜像都在一个仓库内构建,但这里的版本每个镜像需要填写不同的,点击“确认”。
点击“立即构建”,在下方会生成一个任务队列,还可以点击“日志”查看构建的过程或者中间出现的报错。
构建成功,就可以在“镜像版本”这里看到构建好的镜像。现在只需要将镜像pull到本地,然后通过docker tag改一下标签就可以使用了。
在"基本信息“中,有在本地拉取镜像的方法,需要先登录阿里云镜像仓库,然后再拉取。关于拉取不再做详细的描述了,下面有一个拉取镜像的脚本,大家可以参考一下。
#cat images_name
kube-proxy-amd64:v1.11.1
kube-scheduler-amd64:v1.11.1
kube-apiserver-amd64:v1.11.1
kube-controller-manager-amd64:v1.11.1
coredns:1.1.3
etcd-amd64:3.2.18
pause:3.1
#!/bin/bash
for i in `cat images_name`
do
docker pull registry.cn-shanghai.aliyuncs.com/xxxxxx/$i
docker tag registry.cn-shanghai.aliyuncs.com/xxxxxx/$i k8s.gcr.io/$i
done
4、总结
这就是本人在部署和安装k8s集群中遇到国内无法拉取镜像时使用的方法。如果有疑问,欢迎在评论区留言,谢谢!!!