日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实战:借助ucloud镜像加速功能下载镜像(亲测成功)-2022.1.1

發布時間:2024/3/13 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实战:借助ucloud镜像加速功能下载镜像(亲测成功)-2022.1.1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實戰:借助ucloud鏡像加速功能下載鏡像(親測成功)-2022.1.1

目錄

文章目錄

    • 實戰:借助ucloud鏡像加速功能下載鏡像(親測成功)-2022.1.1
    • 目錄
    • 實驗環境
    • 實驗軟件
    • 1、背景
    • 2、技術實現
    • 3、批量下載鏡像并上傳到私有倉庫
      • 3.1 獲取當前最新的鏡像
      • 3.2 獲取指定tag的鏡像
    • 4.Ucloud
    • 注意事項
      • 📍 當時使用kubeadm安裝k8s集群時使用的是阿里云的鏡像倉庫
      • 📍 其它方式
    • 關于我
    • 最后

實驗環境

docker環境

實驗軟件

1、背景

由于眾所周知的原因,k8s安裝期間無法直接從k8s.gcr.io獲取鏡像,需要經過額外的技術手段才能獲取到鏡像文件,很不便于k8s的安裝部署。為了解決國際互聯網下載鏡像的各種痛點,需要將鏡像拉取到國內的鏡像倉庫中。

2、技術實現

ucloud的 容器鏡像庫-UHub服務提供了鏡像加速功能,可以很方便地將國外鏡像拉取到國內,供國內用戶使用。
目前,該鏡像服務是免費的,但鏡像加速需要手動配置。 未查詢到相關的官方APl,工單咨詢客服得到的答復是未提供創建鏡像加速任務的 APl。
具體的操作都是web瀏覽器中完成的,比較簡單。這里僅截圖示意。

  • 打開ucloud官網,并注冊:

https://www.ucloud.cn/

  • 在全部產品里搜索Uhub,找到容器鏡像庫Uhub:

  • 首先需要創建鏡像加速任務:

  • 鏡像加速下載后,我們可以到用戶鏡像這里看到已經下載好的鏡像了:

  • 驗證:
docker pull uhub.service.ucloud.cn/k8s_dns_node_cache/k8s-dns-node-cache:1.21.1

  • 此時,我們可以將這里的鏡像推送到我們的私有倉庫就可以方便使用了(或者使用原有進項地址也是可以的)

完美,實驗到此結束。

3、批量下載鏡像并上傳到私有倉庫

由于涉及多個鏡像,每個鏡像又涉及到pull、tag、push操作,這里采用shell腳本實現批量操作。

3.1 獲取當前最新的鏡像

腳本名稱get_k8s_images.sh,腳本內容如下:

#!/bin/bash # 說明:本腳本用于從互聯網上獲取k8s部署時所需的鏡像并保存到私有倉庫 # 用法: sudo sh get_k8s_images.sh # 依賴: 1、本腳本依賴ucloud的鏡像加速功能,該功能目前為免費功能。但當前不能通過API等方式自動創建鏡像加速任務,需要手動創建。 2、上傳到本地鏡像倉庫一般需要登錄,請注意本地未保存harbor倉庫登錄信息時的影響 # 指定互聯網地址 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")# 循環安裝不同版本的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 done

3.2 獲取指定tag的鏡像

腳本名稱get_k8s_images.sh,腳本內容如下:

#!/bin/bash # 說明:本腳本用于從互聯網上獲取k8s部署時所需的鏡像并保存到私有倉庫 # 用法: sudo sh get_k8s_images.sh 鏡像版本 # 用法示例: sudo sh get_k8s_images.sh 1.21.1 # 依賴: 1、本腳本依賴ucloud的鏡像加速功能,該功能目前為免費功能。但當前不能通過API等方式自動創建鏡像加速任務,需要手動創建。 2、上傳到本地鏡像倉庫一般需要登錄,請注意本地未保存harbor倉庫登錄信息時的影響 # 指定互聯網地址 ucloud_url="uhub.service.ucloud.cn/kube_apiserver " # 指定私有倉庫地址 harbor_url="harbor.xxxx.xx/k8s"# 指定kubeadm版本。根據傳入的鏡像版本自動匹配 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 done

4.Ucloud

https://www.ucloud.cn/

注意事項

📍 當時使用kubeadm安裝k8s集群時使用的是阿里云的鏡像倉庫

?? 下面這個需求自己當時安裝并沒有用到,先記錄下來,我記得是使用阿里云的那個倉庫地址就可以來著,感覺不需要再寫一個sehll腳本這么麻煩來著的。

registry.aliyuncs.com/google_containers

💥 還需要注意的是:這個registry.aliyuncs.com/google_containers倉庫地址,是配置在k8s image位置的,但是我在docker里想單獨配置,該如何配置呢?只不是只能使用ucloud來做鏡像中轉了。

(把這個配置在/etc/docker/daemon.json里是有問題的;)

📍 其它方式

  • cloudshell

https://console.cloud.google.com/cloudshell,可以用這個,你搜搜使用方法把,就是通過這個下載鏡像,然后推送到docker hub后,國內就可以下載了。

關于我

我的博客主旨:我希望每一個人拿著我的博客都可以做出實驗現象,先把實驗做出來,然后再結合理論知識更深層次去理解技術點,這樣學習起來才有樂趣和動力。并且,我的博客內容步驟是很完整的,也分享源碼和實驗用到的軟件,希望能和大家一起共同進步!

各位小伙伴在實際操作過程中如有什么疑問,可隨時聯系本人免費幫您解決問題:

  • 個人微信二維碼:x2675263825 (舍得), qq:2675263825。

  • 個人博客地址:www.onlyonexl.cn

  • 個人微信公眾號:云原生架構師實戰

  • 個人csdn

    https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

  • 最后

    ? 好了,關于借助ucloud鏡像加速功能下載鏡像實驗就到這里了,感謝大家閱讀,最后貼上我女神的photo,祝大家生活快樂,每天都過的有意義哦,我們下期見!

    總結

    以上是生活随笔為你收集整理的实战:借助ucloud镜像加速功能下载镜像(亲测成功)-2022.1.1的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。