实战:借助ucloud镜像加速功能下载镜像(亲测成功)-2022.1.1
實戰(zhàn):借助ucloud鏡像加速功能下載鏡像(親測成功)-2022.1.1
目錄
文章目錄
- 實戰(zhàn):借助ucloud鏡像加速功能下載鏡像(親測成功)-2022.1.1
- 目錄
- 實驗環(huán)境
- 實驗軟件
- 1、背景
- 2、技術(shù)實現(xiàn)
- 3、批量下載鏡像并上傳到私有倉庫
- 3.1 獲取當前最新的鏡像
- 3.2 獲取指定tag的鏡像
- 4.Ucloud
- 注意事項
- 📍 當時使用kubeadm安裝k8s集群時使用的是阿里云的鏡像倉庫
- 📍 其它方式
- 關(guān)于我
- 最后
實驗環(huán)境
docker環(huán)境實驗軟件
無
1、背景
由于眾所周知的原因,k8s安裝期間無法直接從k8s.gcr.io獲取鏡像,需要經(jīng)過額外的技術(shù)手段才能獲取到鏡像文件,很不便于k8s的安裝部署。為了解決國際互聯(lián)網(wǎng)下載鏡像的各種痛點,需要將鏡像拉取到國內(nèi)的鏡像倉庫中。
2、技術(shù)實現(xiàn)
ucloud的 容器鏡像庫-UHub服務(wù)提供了鏡像加速功能,可以很方便地將國外鏡像拉取到國內(nèi),供國內(nèi)用戶使用。
目前,該鏡像服務(wù)是免費的,但鏡像加速需要手動配置。 未查詢到相關(guān)的官方APl,工單咨詢客服得到的答復是未提供創(chuàng)建鏡像加速任務(wù)的 APl。
具體的操作都是web瀏覽器中完成的,比較簡單。這里僅截圖示意。
- 打開ucloud官網(wǎng),并注冊:
https://www.ucloud.cn/
- 在全部產(chǎn)品里搜索Uhub,找到容器鏡像庫Uhub:
- 首先需要創(chuàng)建鏡像加速任務(wù):
- 鏡像加速下載后,我們可以到用戶鏡像這里看到已經(jīng)下載好的鏡像了:
- 驗證:
- 此時,我們可以將這里的鏡像推送到我們的私有倉庫就可以方便使用了(或者使用原有進項地址也是可以的)
完美,實驗到此結(jié)束。
3、批量下載鏡像并上傳到私有倉庫
由于涉及多個鏡像,每個鏡像又涉及到pull、tag、push操作,這里采用shell腳本實現(xiàn)批量操作。
3.1 獲取當前最新的鏡像
腳本名稱get_k8s_images.sh,腳本內(nèi)容如下:
#!/bin/bash # 說明:本腳本用于從互聯(lián)網(wǎng)上獲取k8s部署時所需的鏡像并保存到私有倉庫 # 用法: sudo sh get_k8s_images.sh # 依賴: 1、本腳本依賴ucloud的鏡像加速功能,該功能目前為免費功能。但當前不能通過API等方式自動創(chuàng)建鏡像加速任務(wù),需要手動創(chuàng)建。 2、上傳到本地鏡像倉庫一般需要登錄,請注意本地未保存harbor倉庫登錄信息時的影響 # 指定互聯(lián)網(wǎng)地址 ucloud_url="uhub.service.ucloud.cn/kube_apiserver " # 指定私有倉庫地址 harbor_url="harbor.xxxx.xx/k8s"# 配置yum源。用于安裝kubeadm等軟件 cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF# 指定安裝的kubeadm等軟件的版本。小版本不影響該腳本的使用 k8s_version=("1.18.20" "1.19.12" "1.20.8" "1.21.2")# 循環(huán)安裝不同版本的kubeadm ,以便于獲取不同版本的k8s鏡像 for k8s in ${k8s_version[@]};do # 卸載kubeadm等軟件 yum remove -y kubelet kubeadm kubectl # 安裝指定版本的kubeadm等軟件 yum install -y kubelet-${k8s} kubeadm-${k8s} kubectl-${k8s} --disableexcludes=kubernetes # 獲取所有k8s安裝所需的鏡像名稱及版本等信息 images_list=`/usr/bin/kubeadm config images list|awk -F '/' '{print $NF}'` for image in ${images_list[@]};do # 從ucloud下載鏡像到本地 docker pull ${ucloud_url}/${image} if [ $? -eq 0 ];then echo "從ucloud容器鏡像庫成功拉取${image}鏡像" else echo "從ucloud容器鏡像庫成功拉取${image}鏡像失敗" exit 1 fi # 打標簽 docker tag ${ucloud_url}/${image} ${harbor_url}/${image} # 推送到本地私有的harbor倉庫 docker push ${harbor_url}/${image} if [ $? -eq 0 ];then echo "成功將${image}推送到harbor倉庫" else echo "推送${image}鏡像失敗" fi done done3.2 獲取指定tag的鏡像
腳本名稱get_k8s_images.sh,腳本內(nèi)容如下:
#!/bin/bash # 說明:本腳本用于從互聯(lián)網(wǎng)上獲取k8s部署時所需的鏡像并保存到私有倉庫 # 用法: sudo sh get_k8s_images.sh 鏡像版本 # 用法示例: sudo sh get_k8s_images.sh 1.21.1 # 依賴: 1、本腳本依賴ucloud的鏡像加速功能,該功能目前為免費功能。但當前不能通過API等方式自動創(chuàng)建鏡像加速任務(wù),需要手動創(chuàng)建。 2、上傳到本地鏡像倉庫一般需要登錄,請注意本地未保存harbor倉庫登錄信息時的影響 # 指定互聯(lián)網(wǎng)地址 ucloud_url="uhub.service.ucloud.cn/kube_apiserver " # 指定私有倉庫地址 harbor_url="harbor.xxxx.xx/k8s"# 指定kubeadm版本。根據(jù)傳入的鏡像版本自動匹配 TEMP_NUMBER=`echo $1|awk -F '.' '{print $2}'` case "$TEMP_NUMBER" in 18) VERSION="1.18.20" ;; 19) VERSION="1.19.12" ;; 20) VERSION="1.20.8" ;; 21) VERSION="1.21.2" ;; *) echo "請您核對輸入的鏡像版本! " exit 1 ;; esac# 配置yum源。用于安裝kubeadm等軟件 cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF# 卸載kubeadm等軟件。這里采用偷懶的做法,不管是否符合預期,都是先卸載在安裝 yum remove -y kubelet kubeadm kubectl# 指定安裝的kubeadm等軟件的版本。小版本不影響該腳本的使用 yum install -y kubelet-${VERSION} kubeadm-${VERSION} kubectl-${VERSION} --disableexcludes=kubernetes # 導出k8s配置文件 kubeadm config print init-defaults > /tmp/kubeadm.yaml # 獲取默認的鏡像版本 k8s_version=`egrep kubernetesVersion /tmp/kubeadm.yaml` # 將鏡像版本替換為指定版本 sed -i "s#${k8s_version}#kubernetesVersion: $1#g" /tmp/kubeadm.yaml # 獲取所有k8s安裝所需的鏡像名稱及版本等信息 images_list=`/usr/bin/kubeadm config images list --config /tmp/kubeadm.yaml|awk -F '/' '{print $NF}'` for image in ${images_list[@]};do # 從ucloud下載鏡像到本地 docker pull ${ucloud_url}/${image} if [ $? -eq 0 ];then echo "從ucloud容器鏡像庫成功拉取${image}鏡像" else echo "從ucloud容器鏡像庫成功拉取${image}鏡像失敗" exit 1 fi # 打標簽 docker tag ${ucloud_url}/${image} ${harbor_url}/${image} # 推送到本地私有的harbor倉庫 docker push ${harbor_url}/${image} if [ $? -eq 0 ];then echo "成功將${image}推送到harbor倉庫" else echo "推送${image}鏡像失敗" fi done4.Ucloud
https://www.ucloud.cn/
注意事項
📍 當時使用kubeadm安裝k8s集群時使用的是阿里云的鏡像倉庫
?? 下面這個需求自己當時安裝并沒有用到,先記錄下來,我記得是使用阿里云的那個倉庫地址就可以來著,感覺不需要再寫一個sehll腳本這么麻煩來著的。
registry.aliyuncs.com/google_containers
💥 還需要注意的是:這個registry.aliyuncs.com/google_containers倉庫地址,是配置在k8s image位置的,但是我在docker里想單獨配置,該如何配置呢?只不是只能使用ucloud來做鏡像中轉(zhuǎn)了。
(把這個配置在/etc/docker/daemon.json里是有問題的;)
📍 其它方式
- cloudshell
https://console.cloud.google.com/cloudshell,可以用這個,你搜搜使用方法把,就是通過這個下載鏡像,然后推送到docker hub后,國內(nèi)就可以下載了。
關(guān)于我
我的博客主旨:我希望每一個人拿著我的博客都可以做出實驗現(xiàn)象,先把實驗做出來,然后再結(jié)合理論知識更深層次去理解技術(shù)點,這樣學習起來才有樂趣和動力。并且,我的博客內(nèi)容步驟是很完整的,也分享源碼和實驗用到的軟件,希望能和大家一起共同進步!
各位小伙伴在實際操作過程中如有什么疑問,可隨時聯(lián)系本人免費幫您解決問題:
個人微信二維碼:x2675263825 (舍得), qq:2675263825。
個人博客地址:www.onlyonexl.cn
個人微信公眾號:云原生架構(gòu)師實戰(zhàn)
個人csdn
https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421
最后
? 好了,關(guān)于借助ucloud鏡像加速功能下載鏡像實驗就到這里了,感謝大家閱讀,最后貼上我女神的photo,祝大家生活快樂,每天都過的有意義哦,我們下期見!
總結(jié)
以上是生活随笔為你收集整理的实战:借助ucloud镜像加速功能下载镜像(亲测成功)-2022.1.1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 8583协议深入理解 1
- 下一篇: 前端传图片file给后端,后端接收为空,