如何使用Aliyun容器镜像服务对海外gcr、quay仓库镜像进行镜像拉取构建?

关注「WeiyiGeek」公众号

设为「特别关注」每天带你玩转网络安全运维、应用开发、物联网IOT学习!

3049bdf45bf86b82bd90eff4d63e9853.jpeg


本章目录:

  • 0x00 前言简述

  • 0x01 操作实践


原文地址: 如何使用Aliyun容器镜像服务对海外gcr、quay仓库镜像进行镜像拉取构建?关注「WeiyiGeek」公众号设为「特别关注」每天带你玩转网络安全运维、应用开发、物联网IOT学习!本章目,在国内(GFW)搭建k8s集群及其依赖组件间时, 常常会遇到无法下载k8s.gcr.io、quay.io的镜像, 那我们如何解决呢https://mp.weixin.qq.com/s/oQ82YWYRnSIUp-RXLdNS8A


0x00 前言简述

描述: 在国内(GFW)搭建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.gitmkdir -vp imagesbuild/sig-storage/nfs-subdir-external-provisionertee 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
EOFgit add . && git commit -m "nfs-subdir-external-provisioner" && git push

0ddb18eb8d25c0ac48067b0faef0b4fe.png

步骤 02.登陆阿里云[https://aliyun.com]控制台并搜索容器镜像服务或者直接访问(https://www.aliyun.com/product/acr?spm=5176.21213303.1362911.1.3d9153c9zZkQnr&scm=20140722.S_card),进入其控制台如下所示:

52fe66a2b383d47e79e8482c5c06a9f7.png

步骤 03.进入后我们需要先创建名称空间[WeiyiGeek]、之后再进行镜像仓库。

a0ad6140b98e924829f07da73875ed1b.png

步骤 04.创建镜像仓库,填写的内容如下所示, 名称空间为weiyigeek, 仓库名称为nfs-subdir-external-provisioner, 仓库类型此处选择公开(方便拉取,注意如果是私有包含敏感信息的镜像一定要私有), 在摘要中注明该仓库主要用途。

e0074d6b633b3579e5a843f3d3c27693.png

步骤 05.点击下一步后,选择github代码源,然后选择 WeiyiGeek 再选择 imagesbuild 我们创建的仓库,并勾选[v]海外机器构建。

0f7dbfde476dc758ae2d2025185861f1.png

步骤 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

fdfafe01367ece45b0ba0c673e8e30a5.png

步骤 07.然后点击左侧【构建】进行添加构建规则,类型选择【Branch】- main, 然后构建上下文目录收设置为【Dockerfile】存放的目录,此处以imagesbuild仓库名称下的目录为根/sig-storage/nfs-subdir-external-provisioner, Dockerfile 就在当前路径之下, 其镜像版本为V4.0.2。

19d7ec5c71ad450bdb80fdc4258b4045.png

步骤 08.点击【确定】后保存,然后点击进行【立即构建】,构建完成后将会如下图所示:

10456068bafd0111ef8b3211678ec974.png

步骤 09.然后可以从构建日志中发现构建出镜像的下载地址registry.cn-hangzhou.aliyuncs.com/weiyigeek/nfs-subdir-external-provisioner:v4.0.2

602112afad050d35642c7e14c93ee2c4.png

步骤 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://blog.weiyigeek.top/2022/6-1-663.html


613791e91f654a9f43d1cf32e4cf7952.png 往期相关文章86044ffd15ef93b77027529b95602c0f.png

还不会部署高可用的kubernetes集群?企业DevOps实践之使用kubeadm方式安装高可用k8s集群v1.23.7

实践使用Python编写对行程码图片内容批量识别的API接口

1.还不会部署高可用的kubernetes集群?看我手把手教你使用二进制部署v1.23.6的K8S集群实践(上)

2.还不会部署高可用的kubernetes集群?看我手把手教你使用二进制部署v1.23.6的K8S集群实践(下)

fbe3286a2ca700fcf063541a6a126a58.png


欢迎各位志同道合的朋友一起学习交流,如文章有误请在下方留下您宝贵的经验知识,个人邮箱地址【master#weiyigeek.top】或者个人公众号【WeiyiGeek】联系我。

更多文章来源于【WeiyiGeek Blog 个人博客 - 为了能到远方,脚下的每一步都不能少 】

个人主页: 【 https://weiyigeek.top】

博客地址: 【 https://blog.weiyigeek.top 】

13a16dfbae46b2971023d1e1eb88e562.png

专栏书写不易,如果您觉得这个专栏还不错的,请给这篇专栏 【点个赞、投个币、收个藏、关个注,转个发,留个言】(人间六大情),这将对我的肯定,谢谢!。

  • echo  "【点个赞】,动动你那粗壮的拇指或者芊芊玉手,亲!"

  • printf("%s", "【投个币】,万水千山总是情,投个硬币行不行,亲!")

  • fmt.Printf("【收个藏】,阅后即焚不吃灰,亲!")  

  • console.info("【转个发】,让更多的志同道合的朋友一起学习交流,亲!")

  • System.out.println("【关个注】,后续浏览查看不迷路哟,亲!")

  • cout << "【留个言】,文章写得好不好、有没有错误,一定要留言哟,亲! " << endl;

ebb473e5fe6df4440ece2af273d2d68b.gif

更多网络安全、系统运维、应用开发、全栈文章,尽在【个人博客 - https://blog.weiyigeek.top】站点,谢谢支持!

    帅哥、美女、大佬们点个【赞+在看】吧! 👇

↓👇↓ 点击【"阅读原文"】,即可获取更多知识!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈工程师修炼指南

原创不易,赞赏鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值