企业运维实践-使用Aliyun容器镜像服务对海外gcr、quay仓库中的镜像进行拉取构建
欢迎关注[「WeiyiGeek」] 每天带你玩转网络安全运维、应用开发、物联网IOT学习!
希望各位看友【关注、点赞、评论、收藏、投币】,助力每一个梦想。
文章目录:
0x00 前言简述
0x01 操作实践
0x00 前言简述
描述: 在国内搭建k8s集群及其依赖组件间时, 常常会遇到无法下载k8s.gcr.io、quay.io的镜像, 那我们如何解决呢?
例如, 在K8S集群中部署nfs-subdir-external-provisioner
资源清单时报如下错误, 这是由于国内无法访问k8s.gcr.io
, 所以无法拉取下载k8s.gcr.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2
镜像
Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
那如何畅快的下载:
常用的方式是使用k8s.gcr.io的镜像源, 例如["https://gcr.mirrors.ustc.edu.cn/google-containers/","https://registry.cn-hangzhou.aliyuncs.com/google_containers/"]
, 但是对于某一些镜像它是没有进行同步的此时我们将无法通过其下载,可能你还会采用一台海外的机器进行git pull、git tag、git push
一系列的操作将k8s.gcr.io、quay.io
仓库中的镜像传到国内, 但是对于没有海外机器的朋友来说是不是没有办法了。
答案: 当然是否定的,我们可以采用Github仓库中Dockerfile文件与阿里云提供的容器镜像服务(https://www.aliyun.com/product/acr?spm=5176.21213303.1362911.1.3d9153c9zZkQnr&scm=20140722.S_card)进行海外镜像构建,从而拉取构建后公共或者私有镜像。
0x01 操作实践
步骤 01.登录 github.com 创建一个公共仓库(如果没有请注册), 此处我创建了一个 imagesbuild 仓库,专门用于构建 k8s.gcr.io、quay.io 仓库中无法下载的镜像,此处以 nfs-subdir-external-provisioner 镜像为例,在 /sig-storage/nfs-subdir-external-provisioner
目录下创建一个 Dockerfile 文件,其内容如 tee 命令写入所示。
git clone git@github.com:WeiyiGeek/imagesbuild.git
mkdir -vp imagesbuild/sig-storage/nfs-subdir-external-provisioner
tee imagesbuild/sig-storage/nfs-subdir-external-provisioner/Dockerfile <<'EOF'
FROM k8s.gcr.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2
LABEL MAINTAINER=master@weiyigeeek.top BUILDTYPE=Aliyun
EOF
git add . && git commit -m "nfs-subdir-external-provisioner" && git push
步骤 02.登陆阿里云[https://aliyun.com]控制台并搜索容器镜像服务
或者直接访问(https://www.aliyun.com/product/acr?spm=5176.21213303.1362911.1.3d9153c9zZkQnr&scm=20140722.S_card),进入其控制台如下所示:
步骤 03.进入后我们需要先创建名称空间[WeiyiGeek]、之后再进行镜像仓库。
步骤 04.创建镜像仓库,填写的内容如下所示, 名称空间为weiyigeek
, 仓库名称为nfs-subdir-external-provisioner
, 仓库类型此处选择公开(方便拉取,注意如果是私有包含敏感信息的镜像一定要私有), 在摘要中注明该仓库主要用途。
步骤 05.点击下一步后,选择github代码源,然后选择 WeiyiGeek 再选择 imagesbuild 我们创建的仓库,并勾选[v]海外机器构建。
步骤 06.创建完后将会显示如下界面, 该页面显示创建的镜像仓库的相关信息。
- 仓库名称 :nfs-subdir-external-provisioner
- 仓库地域 :华东1(杭州)
- 仓库类型 :公开
- 代码仓库 :https://github.com/WeiyiGeek/imagesbuild
- 公网地址 :registry.cn-hangzhou.aliyuncs.com/weiyigeek/nfs-subdir-external-provisioner
- 专有网络 : registry-vpc.cn-hangzhou.aliyuncs.com/weiyigeek/nfs-subdir-external-provisioner
- 经典网络 : registry-internal.cn-hangzhou.aliyuncs.com/weiyigeek/nfs-subdir-external-provisioner
- 摘要 : mirror k8s.gcr.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2
步骤 07.然后点击左侧【构建】进行添加构建规则,类型选择【Branch】- main, 然后构建上下文目录收设置为【Dockerfile】存放的目录,此处以imagesbuild仓库名称下的目录为根/sig-storage/nfs-subdir-external-provisioner
, Dockerfile 就在当前路径之下, 其镜像版本为V4.0.2。
步骤 08.点击【确定】后保存,然后点击进行【立即构建】,构建完成后将会如下图所示:
步骤 09.然后可以从构建日志中发现构建出镜像的下载地址registry.cn-hangzhou.aliyuncs.com/weiyigeek/nfs-subdir-external-provisioner:v4.0.2
步骤 10.最后在k8s节点集群上进行构建的nfs-subdir-external-provisioner
镜像拉取测试,。
$ crictl pull registry.cn-hangzhou.aliyuncs.com/weiyigeek/nfs-subdir-external-provisioner:v4.0.2
# Image is up to date for sha256:7ef6786db2b2bacc683b76e05f99ee26c135d975b91dabca83029b62e510be39
$ crictl images | grep "nfs-subdir-external-provisioner"
# registry.cn-hangzhou.aliyuncs.com/weiyigeek/nfs-subdir-external-provisioner v4.0.2 7ef6786db2b2b 17.9MB
支持, 完美解决国内无法顺畅下载k8s.gcr.io
的镜像问题,希望能帮助到大家,谢谢大家支持。
本文至此完毕,更多技术文章,尽情期待下一章节!
欢迎各位志同道合的朋友一起学习交流,如文章有误请在下方留下您宝贵的经验知识!
作者主页: 【 https://weiyigeek.top】
博客地址: 【 https://blog.weiyigeek.top 】
专栏书写不易,如果您觉得这个专栏还不错的,请给这篇专栏 【点个赞、投个币、收个藏、关个注,转个发,留个言】(人间六大情),这将对我的肯定,谢谢!。
-
echo "【点个赞】,动动你那粗壮的拇指或者芊芊玉手,亲!"
-
printf("%s", “【投个币】,万水千山总是情,投个硬币行不行,亲!”)
-
fmt.Printf("【收个藏】,阅后即焚不吃灰,亲!")
-
console.info("【转个发】,让更多的志同道合的朋友一起学习交流,亲!")
-
System.out.println("【关个注】,后续浏览查看不迷路哟,亲!")
-
cout << "【留个言】,文章写得好不好、有没有错误,一定要留言哟,亲! " << endl;
更多网络安全、系统运维、应用开发、物联网开发、网络工程、全栈文章,尽在博客 https://blog.weiyigeek.top 之中,谢谢各位看友支持!
共同学习,写下你的评论
评论加载中...
作者其他优质文章