關注「WeiyiGeek」公眾號
設為「特別關注」每天帶你玩轉網路安全運維、應用開發、物聯網IOT學習!
希望各位B友【關注、點贊、評論、收藏、投幣】,助力每一個夢想,

原文地址: https://blog.weiyigeek.top/2022/6-1-663.html
文章目錄:
0x00 前言簡述
0x01 操作實踐
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 [email protected]: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 [email protected] 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://blog.weiyigeek.top/2022/6-1-663.html
本文至此完畢,更多技術文章,盡情期待下一章節!
【WeiyiGeek Blog 個人博客 - 為了能到遠方,腳下的每一步都不能少 】
歡迎各位志同道合的朋友一起學習交流,如文章有誤請在下方留下您寶貴的經驗知識!
作者主頁: 【 https://weiyigeek.top】
博客地址: 【 https://blog.weiyigeek.top 】
專欄書寫不易,如果您覺得這個專欄還不錯的,請給這篇專欄 【點個贊、投個幣、收個藏、關個注,轉個發,留個言】(人間六大情),這將對我的肯定,謝謝!,
-
echo "【點個贊】,動動你那粗壯的拇指或者芊芊玉手,親!"
-
printf("%s", "【投個幣】,萬水千山總是情,投個硬幣行不行,親!")
-
fmt.Printf("【收個藏】,閱后即焚不吃灰,親!")
-
console.info("【轉個發】,讓更多的志同道合的朋友一起學習交流,親!")
-
System.out.println("【關個注】,后續瀏覽查看不迷路喲,親!")
-
cout << "【留個言】,文章寫得好不好、有沒有錯誤,一定要留言喲,親! " << endl;

更多網路安全、系統運維、應用開發、物聯網開發、網路工程、全堆疊文章,盡在博客 https://blog.weiyigeek.top 之中,謝謝各位看又支持!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/500437.html
標籤:其他
上一篇:On Java 8讀書筆記
