丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能開(kāi)發(fā)者 正文
發(fā)私信給楊鯉萍
發(fā)送

0

阿里云開(kāi)源 image-syncer 工具,容器鏡像大批量遷移同步利器

本文作者: 楊鯉萍 2019-11-21 18:10
導(dǎo)語(yǔ):最大鏡像倉(cāng)庫(kù)的總量可以達(dá)到 3T 以上

雷鋒網(wǎng) AI 開(kāi)發(fā)者按:怎么把已有的容器鏡像平滑的遷移到阿里云鏡像服務(wù) ACR 上?最近阿里云給出了很好的方案,他們開(kāi)源了 image-syncer 工具,能夠使得成百上千個(gè)鏡像實(shí)現(xiàn)平滑的批量遷移,其中最大鏡像倉(cāng)庫(kù)的總量可以達(dá)到 3T 以上。而這一工具,也被稱為容器鏡像遷移/同步利器,雷鋒網(wǎng) AI 開(kāi)發(fā)者將其重點(diǎn)內(nèi)容及開(kāi)源地址整理編輯如下。

阿里云開(kāi)源 image-syncer 工具,容器鏡像大批量遷移同步利器

什么是 image-syncer?

顧名思義,image-syncer 本質(zhì)上就是圖像同步器。它是一個(gè) docker 鏡像同步工具,能夠?qū)⒍鄬?duì)多的鏡像倉(cāng)庫(kù)同步,并支持目前絕大多數(shù)主流的 docker 鏡像倉(cāng)庫(kù)服務(wù),例如:ACR、DockerHub、Quay、自建 Harbor 等。

通常情況下,在 k8s 集群遷移場(chǎng)景中,鏡像倉(cāng)庫(kù)之間進(jìn)行鏡像遷移/同步是基本需求,而使用 docker pull/push 結(jié)合腳本的傳統(tǒng)方式進(jìn)行鏡像同步,有如下幾個(gè)局限性

  • 依賴磁盤(pán)存儲(chǔ),需要及時(shí)進(jìn)行本地鏡像的清理,并且落盤(pán)造成多余的時(shí)間開(kāi)銷(xiāo),難以勝任生產(chǎn)場(chǎng)景中大量鏡像的遷移

  • 依賴 docker 程序,docker daemon 對(duì) pull/push 的并發(fā)數(shù)進(jìn)行了嚴(yán)格的限制,無(wú)法進(jìn)行高并發(fā)同步

  • 一些功能只能通過(guò) HTTP api 進(jìn)行操作,單純使用 docker cli 無(wú)法做到,使腳本變得復(fù)雜

阿里云開(kāi)源 image-syncer 工具,容器鏡像大批量遷移同步利器

圖 1 阿里云遷移框架

而 image-syncer 開(kāi)發(fā)之初的定位就是一個(gè)簡(jiǎn)單、易用的批量鏡像遷移/同步工具;因此,它的特性如下:

  • 支持多對(duì)多鏡像倉(cāng)庫(kù)同步

  • 支持基于 Docker Registry V2 搭建的 docker 鏡像倉(cāng)庫(kù)服務(wù) (如 Docker Hub、 Quay、 阿里云鏡像服務(wù) ACR、 Harbor 等)

  • 同步只經(jīng)過(guò)內(nèi)存和網(wǎng)絡(luò),不依賴磁盤(pán)存儲(chǔ),同步速度快

  • 增量同步, 通過(guò)對(duì)同步過(guò)的鏡像 blob 信息落盤(pán),不重復(fù)同步已同步的鏡像

  • 并發(fā)同步,可以通過(guò)配置文件調(diào)整并發(fā)數(shù)

  • 自動(dòng)重試失敗的同步任務(wù),可以解決大部分鏡像同步中的網(wǎng)絡(luò)抖動(dòng)問(wèn)題

  • 不依賴 docker 以及其他程序

只需要保證 image-syncer 的運(yùn)行環(huán)境與需要同步的 registry 網(wǎng)絡(luò)連通,使用者就可以快速地完成從鏡像倉(cāng)庫(kù)的遷移、拷貝以及增量同步,并且該工具對(duì)硬件資源幾乎沒(méi)有要求(因?yàn)?image-syncer 嚴(yán)格控制網(wǎng)絡(luò)連接數(shù)目=并發(fā)數(shù),所以只有在當(dāng)單個(gè)鏡像層過(guò)大的情況下,并發(fā)數(shù)目過(guò)大可能會(huì)打滿內(nèi)存,內(nèi)存占用 <= 并發(fā)數(shù) x 最大鏡像層大?。?。

阿里云開(kāi)源 image-syncer 工具,容器鏡像大批量遷移同步利器

如何使用 image-syncer?

運(yùn)行 image-syncer,只需要提供一個(gè)配置文件,內(nèi)容如下:

{

 "auth": { // 認(rèn)證字段,其中每個(gè)對(duì)象為一個(gè) registry 的一個(gè)賬號(hào)和

 // 密碼;通常,同步源需要具有 pull 以及訪問(wèn) tags 權(quán)限,

 // 同步目標(biāo)需要擁有 push 以及創(chuàng)建倉(cāng)庫(kù)權(quán)限,如果沒(méi)有提供,則默認(rèn)匿名訪問(wèn)

 

 "quay.io": { // registry 的 url,需要和下面 images 中對(duì)應(yīng) registry 的 url 相同

 "username": "xxx", // 用戶名,可選

 "password": "xxxxxxxxx", // 密碼,可選

 "insecure": true // registry 是否是 http 服務(wù),如果是,insecure 字段需要為 true,默認(rèn)是 false,可選,支持這個(gè)選項(xiàng)需要 image-syncer 版本 > v1.0.1

 },

 "registry.cn-beijing.aliyuncs.com": {

 "username": "xxx",

 "password": "xxxxxxxxx"

 },

 "registry.hub.docker.com": {

 "username": "xxx",

 "password": "xxxxxxxxxx"

 }

 },

 "images": {

 // 同步鏡像規(guī)則字段,其中條規(guī)則包括一個(gè)源倉(cāng)庫(kù)(鍵)和一個(gè)目標(biāo)倉(cāng)庫(kù)(值)

 // 同步的最大單位是倉(cāng)庫(kù)(repo),不支持通過(guò)一條規(guī)則同步整個(gè) namespace 以及 registry

 // 源倉(cāng)庫(kù)和目標(biāo)倉(cāng)庫(kù)的格式與 docker pull/push 命令使用的鏡像 url 類(lèi)似(registry/namespace/repository:tag)

 // 源倉(cāng)庫(kù)和目標(biāo)倉(cāng)庫(kù)(如果目標(biāo)倉(cāng)庫(kù)不為空字符串)都至少包含 registry/namespace/repository

 // 源倉(cāng)庫(kù)字段不能為空,如果需要將一個(gè)源倉(cāng)庫(kù)同步到多個(gè)目標(biāo)倉(cāng)庫(kù)需要配置多條規(guī)則

 // 目標(biāo)倉(cāng)庫(kù)名可以和源倉(cāng)庫(kù)名不同(tag 也可以不同),此時(shí)同步功能類(lèi)似于:docker pull + docker tag + docker push

 "quay.io/coreos/kube-rbac-proxy": "quay.io/ruohe/kube-rbac-proxy",

 "xxxx":"xxxxx",

 "xxx/xxx/xx:tag1,tag2,tag3":"xxx/xxx/xx"

 // 當(dāng)源倉(cāng)庫(kù)字段中不包含 tag 時(shí),表示將該倉(cāng)庫(kù)所有 tag 同步到目標(biāo)倉(cāng)庫(kù),此時(shí)目標(biāo)倉(cāng)庫(kù)不能包含 tag

 // 當(dāng)源倉(cāng)庫(kù)字段中包含 tag 時(shí),表示只同步源倉(cāng)庫(kù)中的一個(gè) tag 到目標(biāo)倉(cāng)庫(kù),如果目標(biāo)倉(cāng)庫(kù)中不包含 tag,則默認(rèn)使用源 tag

 // 源倉(cāng)庫(kù)字段中的 tag 可以同時(shí)包含多個(gè)(比如"a/b/c:1,2,3"),tag 之間通過(guò)","隔開(kāi),此時(shí)目標(biāo)倉(cāng)庫(kù)不能包含 tag,并且默認(rèn)使用原來(lái)的 tag

 // 當(dāng)目標(biāo)倉(cāng)庫(kù)為空字符串時(shí),會(huì)將源鏡像同步到默認(rèn) registry 的默認(rèn) namespace 下,并且 repo 以及 tag 與源倉(cāng)庫(kù)相同,默認(rèn) registry 和默認(rèn) namespace 可以通過(guò)命令行參數(shù)以及環(huán)境變量配置,參考下面的描述

 } 

}

用戶可以根據(jù)配置不同的鏡像同步規(guī)則組合,以匹配不同的遷移/同步需求,如將單個(gè)鏡像 repo 同步到多個(gè)不同的鏡像 repo、將多個(gè)源鏡像同步到單個(gè)鏡像 repo 中(以 tag 區(qū)分)、在同一個(gè) registry 中以不同的名字拷貝一個(gè)鏡像 repo 等等。

需要注意的是,如果匿名訪問(wèn)作為同步源的 registry 地址,可能存在權(quán)限問(wèn)題無(wú)法 pull 鏡像以及無(wú)法獲取 tags,這種情況下需要在" auth "中加入有對(duì)應(yīng)權(quán)限的賬號(hào)密碼;而如果匿名訪問(wèn)作為同步目標(biāo)的 registry 地址,可能存在權(quán)限問(wèn)題無(wú)法 push 鏡像,同樣也可能需要用戶提供有對(duì)應(yīng)權(quán)限的賬號(hào)密碼。

通常從自建 harbor 同步鏡像到 ACR 需要 5 個(gè)步驟,包括:

  • 創(chuàng)建 ACR 實(shí)例

  • 創(chuàng)建命名空間

  • 創(chuàng)建訪問(wèn)憑證

  • 進(jìn)行權(quán)限管理,完成配置

阿里云開(kāi)源 image-syncer 工具,容器鏡像大批量遷移同步利器

圖 2 最小權(quán)限設(shè)置示例

  • 下載 image-syncer 可執(zhí)行文件(目前只支持 linux amd64 版本,可以自行編譯)并解壓,然后運(yùn)行工具

最新版源碼以及二進(jìn)制文件:

https://github.com/AliyunContainerService/image-syncer/releases/tag/v1.0.3 

常見(jiàn)問(wèn)題

一次同步會(huì)經(jīng)歷三個(gè)階段:生成同步任務(wù)、執(zhí)行同步任務(wù)以及重試失敗任務(wù);其中,每個(gè)同步任務(wù)都代表了一個(gè)需要同步的 tag(鏡像),如果配置文件中某條規(guī)則沒(méi)有指定 tag,在「生成同步任務(wù)」階段會(huì)自動(dòng) list 源倉(cāng)庫(kù)所有 tag,并生成對(duì)應(yīng)的同步任務(wù),如果生成同步任務(wù)失敗,也會(huì)在重試階段進(jìn)行重試。(故意配錯(cuò)賬號(hào)密碼時(shí))執(zhí)行輸出如下:

阿里云開(kāi)源 image-syncer 工具,容器鏡像大批量遷移同步利器

圖 3 配錯(cuò)賬號(hào)密碼時(shí)執(zhí)行輸出

正常運(yùn)行的輸出:

阿里云開(kāi)源 image-syncer 工具,容器鏡像大批量遷移同步利器

圖 4 正常操作時(shí)執(zhí)行輸出

在運(yùn)行時(shí),image-syncer 會(huì)打印出如下的日志信息:

阿里云開(kāi)源 image-syncer 工具,容器鏡像大批量遷移同步利器

圖 5 輸出結(jié)果日志

而在同步結(jié)束之后,image-syncer 也會(huì)統(tǒng)計(jì)成功和失敗的同步任務(wù)數(shù)目(每個(gè)同步任務(wù)代表一個(gè)鏡像),并在標(biāo)準(zhǔn)輸出和日志中打印 "Finished, FAILED TASKS> sync tasks failed, TASKS> tasks generate failed" 的字樣,從而可以獲得同步的結(jié)果。

阿里云開(kāi)源 image-syncer 工具,容器鏡像大批量遷移同步利器

圖 6 部分其它參數(shù)示例

原文鏈接:

https://yq.aliyun.com/articles/727565?utm_content=g_1000088598 

Github 開(kāi)源地址:

https://github.com/AliyunContainerService/image-syncer 

更多 FAQ 參見(jiàn):

https://github.com/AliyunContainerService/image-syncer/blob/master/FAQs.md    

雷鋒網(wǎng) AI 開(kāi)發(fā)者


雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。

阿里云開(kāi)源 image-syncer 工具,容器鏡像大批量遷移同步利器

分享:
當(dāng)月熱門(mén)文章
最新文章
請(qǐng)?zhí)顚?xiě)申請(qǐng)人資料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說(shuō)