久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

image

共計(jì) 5710 個(gè)字符,預(yù)計(jì)需要花費(fèi) 15 分鐘才能閱讀完成。

這篇文章主要介紹了 image-transfer 怎么用的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇 image-transfer 怎么用文章都會(huì)有所收獲,下面我們一起來看看吧。

業(yè)務(wù)上云,鏡像怎么遷移?

業(yè)務(wù)上云主要有幾種場(chǎng)景,一是自建 idc 上云,二是第三方云遷移,三是異地災(zāi)備,即混合云。這些場(chǎng)景中,無論是上云還是云遷移,遷移流程主要有如下幾步。

網(wǎng)絡(luò)規(guī)劃。vpc 配置,子網(wǎng)劃分等。

數(shù)據(jù)遷移。對(duì)象存儲(chǔ),文件存儲(chǔ)等。

應(yīng)用遷移。業(yè)務(wù),配置等。

在數(shù)據(jù)遷移過程中,如果業(yè)務(wù)大量使用容器化部署,則需要批量鏡像遷移。而目前大部分云廠商的鏡像倉庫服務(wù)沒有提供鏡像倉庫批量遷移的能力。業(yè)務(wù)想要遷移,只能先在本地下載原鏡像,修改 tag 后,再上傳至目的鏡像倉庫。這個(gè)過程存在以下幾個(gè)缺點(diǎn):

耗時(shí)耗力。僅僅對(duì)于單個(gè)鏡像遷移,就需要三步操作,并且需要時(shí)刻盯著,若出現(xiàn)失敗情況,需進(jìn)一步處理。

完全人肉操作,易出現(xiàn)差錯(cuò)。在對(duì)原鏡像修改 tag 時(shí),由于是人為修改,極易操作失誤,tag 修改錯(cuò)了等。

鏡像量大時(shí),成本增加,上云進(jìn)度緩慢。如果有幾百上千個(gè)鏡像,這樣人肉操作,遷移進(jìn)度會(huì)十分緩慢,且遷移成本會(huì)大大增加。

image-transfer 的原理設(shè)計(jì)目標(biāo)

針對(duì)鏡像遷移的痛點(diǎn)。我們希望開發(fā)一種鏡像批量遷移工具。它對(duì)使用者而言,只需要簡(jiǎn)單的配置,就可以實(shí)現(xiàn)鏡像批量遷移,無需人工干預(yù),提高業(yè)務(wù)上云 / 遷移的進(jìn)度,降低成本。具體而言,該工具有以下設(shè)計(jì)目標(biāo)。

配置簡(jiǎn)單,無需復(fù)雜輸入。我們希望對(duì)使用者而言這個(gè)工具是簡(jiǎn)單易用的,僅需配置源、目的鏡像地址和鑒權(quán),即可完成批量遷移。

快速高效遷移海量鏡像,降低遷移成本。針對(duì)大量的鏡像遷移需求,我們希望工具可以高效完成,借助高并發(fā)的一些技術(shù),實(shí)現(xiàn)快速遷移。

一定的容錯(cuò)能力,減少人工干預(yù)維護(hù)。在遷移過程中,我們希望工具可以進(jìn)行一些錯(cuò)誤的識(shí)別和自動(dòng)修復(fù),盡量減少人工維護(hù),提高運(yùn)維效率。

對(duì)運(yùn)行環(huán)境沒有依賴,提高工具普適性。我們希望工具是可以在任何 linux,mac os,windows 操作系統(tǒng)中運(yùn)行,而不用依賴 docker 及其他程序。

支持騰訊云 CCR 一鍵全量遷移模式。目前,騰訊云容器鏡像服務(wù) TCR 企業(yè)版正式上線,騰訊云 TCR 個(gè)人版 (CCR) 將在未來逐步減少維護(hù),直到下線。因此工具需要支持 CCR 倉庫一鍵全量遷移至 TCR 企業(yè)版。

支持自定義 qps 限速。批量遷移鏡像,頻繁的調(diào)用鏡像倉庫接口有可能導(dǎo)致鏡像倉庫崩潰,因此需要對(duì) qps 進(jìn)行限制。

架構(gòu)

image-transfer 由多個(gè)模塊構(gòu)成,下圖給出了 image-transfer 架構(gòu)圖。

通用模式輸入(默認(rèn)):用于接受用戶下發(fā)的鏡像遷移任務(wù)。包括鏡像遷移配置文件和鑒權(quán)配置文件。該模式用于實(shí)現(xiàn)云廠商之間的鏡像遷移。

CCR 一鍵遷移模式輸入:需要在工具輸入?yún)?shù)添加 –ccrToTcr=true,該模式用于 CCR 倉庫一鍵全量遷移至 TCR 企業(yè)版。除了添加 –ccrToTcr=true 參數(shù),還需鑒權(quán)配置文件和騰訊云 secret 配置文件。

pipeline:該模塊是工具處理鏡像遷移的核心。負(fù)責(zé)處理用戶下發(fā)的鏡像遷移任務(wù),包括根據(jù)遷移配置文件處理鏡像倉庫的同步規(guī)則,以及進(jìn)行鏡像的分層拉取和傳輸任務(wù)。模塊采用了高并發(fā)的 pipeline 模型,提高遷移速度。

重試 task:這個(gè)階段會(huì)重試 pipeline 中傳輸失敗的任務(wù)。重試次數(shù)可根據(jù)用戶輸入?yún)?shù)而定,默認(rèn)為 2 次。

Pipeline

由于工具采用 golang 語言編寫,因此核心處理模塊采用了 go 的 pipeline 高并發(fā)模型。整個(gè) pipeline 模塊分為三個(gè)小模塊。

多協(xié)程處理鏡像倉庫同步規(guī)則

這里是對(duì)用戶輸入的鏡像遷移配置文件進(jìn)行處理解析,獲取每一個(gè)需要傳輸?shù)脑寸R像地址(包括 repo 和 tag),以及對(duì)應(yīng)的目的鏡像地址。然后針對(duì)每個(gè)源鏡像地址和目的鏡像地址組成一個(gè) job。如果鏡像配置文件中沒有指定源鏡像的 tag,則會(huì)拉取該 repo 下的所有 tag,再針對(duì)每個(gè) tag,組成一個(gè) job。這個(gè)過程采用 golang 的多協(xié)程方式處理,增加處理速度。協(xié)程數(shù)量可由用戶在輸入?yún)?shù)指定 –proc,默認(rèn)是 5 個(gè)。每個(gè) job 組成后,會(huì)被放入 task channel 中,等待被消費(fèi)。

Task 傳輸通道

task 通道可看作一個(gè)簡(jiǎn)易中間件,由 golang 的 channel 實(shí)現(xiàn),每個(gè) job 被生產(chǎn)后,會(huì)被放入該 channel 中,等待被消費(fèi)。該設(shè)計(jì)可以保證生產(chǎn)者生產(chǎn)出 job 就會(huì)立即被放入消費(fèi)線,一旦消費(fèi)端有空閑,即可進(jìn)行消費(fèi)處理。提高 job 處理效率。

多協(xié)程處理 task

這些協(xié)程就是 job 的消費(fèi)端。拿到 job 后,會(huì)首先拉去 job 中源地址的 manifest,判斷是否為多 manifest 鏡像,接著對(duì)每個(gè) blob 進(jìn)行拉取,再將 blob 傳輸?shù)侥康牡刂罚詈笤賹?manifest 傳輸?shù)侥康牡刂罚麄€(gè)過程都是利用緩存,數(shù)據(jù)不落盤,提高效率。這個(gè)過程采用 golang 的多協(xié)程方式處理,增加處理速度。協(xié)程數(shù)量可由用戶在輸入?yún)?shù)指定 –routines,默認(rèn)是 5 個(gè)。

鏡像遷移最佳實(shí)踐

本節(jié)將介紹如何利用 image-transfer 工具,實(shí)現(xiàn)不同場(chǎng)景下的批量鏡像遷移。包含場(chǎng)景如下:

不同云廠商之間的鏡像遷移。例,從阿里云鏡像倉庫 ACR 遷移到騰訊云鏡像倉庫 TCR。

開源 / 自建鏡像倉庫遷移上云。例,從 harbor 鏡像倉庫遷移到騰訊云鏡像倉庫 TCR。

騰訊云 TCR 個(gè)人版 (CCR) 一鍵遷移至騰訊云鏡像倉庫企業(yè)版 TCR。

工具安裝:

首先對(duì)工具進(jìn)行下載編譯,有兩種方式,一種是直接獲取二進(jìn)制文件,第二種是下載源碼編譯。

二進(jìn)制 release 包下載地址:

https://github.com/tkestack/image-transfer/releases

示例采用下載源碼編譯進(jìn)行演示:

編譯過程也非常簡(jiǎn)單,進(jìn)入源碼目錄,直接 make。

git clone https://github.com/tkestack/image-transfer.git
cd ./image-transfer
make

編譯完成后,會(huì)在當(dāng)前目錄生成 image-transfer 二進(jìn)制文件。即可使用。接下來進(jìn)行最佳實(shí)踐演示。

最佳實(shí)踐之場(chǎng)景一:不同云廠商之間的鏡像遷移

以從阿里云鏡像倉庫 ACR 遷移到騰訊云鏡像倉庫 TCR 為例。

1. 準(zhǔn)備騰訊云鏡像倉庫 TCR 以及阿里云鏡像倉庫 ACR 的訪問憑證信息文件:auth.json

 grant-test.tencentcloudcr.com:
 username: xxx
 password: xxx
 grant-test2.tencentcloudcr.com:
 username: xxx
 password: xxx
 registry.cn-hangzhou.aliyuncs.com:
 username: xxx
 password: xxx
 ccr.ccs.tencentyun.com:
 username: xxx
 password: xxx
 registry.hub.docker.com:
 username: xxx
 password: xxx

配置很簡(jiǎn)單,輸入需要訪問源鏡像倉庫地址,和目的鏡像倉庫地址。并輸入對(duì)應(yīng)鏡像倉庫的用戶名和密碼即可。

其中 insecure 表示,registry 是否是 http 服務(wù),如果是,insecure 字段需要為 true,默認(rèn)是 false,可選。

而目的鏡像倉庫的用戶需要擁有 push 以及創(chuàng)建倉庫權(quán)限,如果沒有提供,則默認(rèn)匿名訪問。

其中騰訊云 TCR 訪問憑證如下方法獲取:阿里云鏡像倉庫 ACR 的訪問憑證如下獲取:

2. 準(zhǔn)備好需要遷移的鏡像規(guī)則文件:rule.yaml

registry.cn-hangzhou.aliyuncs.com/grantzhao/sichenzhao:xx :  grant-test.tencentcloudcr.com/grantzhao/sichenzhao

該文件是配置需要傳輸?shù)脑寸R像和目的鏡像。文件規(guī)則是:源鏡像地址: 目的鏡像地址 其中源鏡像地址,可以指定 tag,也可以不指定 tag,也可以指定多個(gè) tag。指定單個(gè) tag 時(shí):目的地址可以包含 tag,也可以不包含。不包含 tag 時(shí)則使用源鏡像的 tag。不指定 tag 時(shí):目的地址必須包含 tag。指定多個(gè) tag 時(shí):多 tag 之間用英文逗號(hào)隔開,比如 grant-test.tencentcloudcr.com/grantzhao/sichenzhao:1.0,2.0,3.0。此時(shí)目的地址不能包含 tag,默認(rèn)使用源地址的 tag。

3. 運(yùn)行工具

 ./image-transfer --routines=5 --securityFile=./security.yaml --ruleFile=./rule.yaml --ns=default \
 --registry=grant-test.tencentcloudcr.com --retry=2 --qps=100

參數(shù)解釋:

–ns 指定了一個(gè)默認(rèn)的 ns,若目的倉庫的 ns 為空,則由該默認(rèn)的 ns 代替。

–registry 指定了一個(gè)默認(rèn)的 registry,若目的倉庫的 registry 為空,則由該默認(rèn)的 registry 代替。

–routines=5,表示設(shè)置并發(fā)數(shù)為 5。默認(rèn)為 5。

–retry=2,表示失敗后的重試次數(shù)為 2,默認(rèn)為 2。

–securityFile,指定鑒權(quán)文件。

–ruleFile,指定鏡像倉庫配置文件。

–qps,限制請(qǐng)求的 qps 不高于 100/s。

4. 運(yùn)行結(jié)果

最后一行

################# Finished, 0 transfer jobs failed, 0 jobs generate failed #################

表示運(yùn)行成功。

最佳實(shí)踐之場(chǎng)景二:開源 / 自建鏡像倉庫遷移上云

以從開源鏡像倉庫 docker hub 遷移到騰訊云鏡像倉庫 TCR 為例。

1. 準(zhǔn)備 docker hub 以及騰訊云鏡像倉庫 TCR 的訪問憑證信息文件:security.yaml

 grant-test2.tencentcloudcr.com:
 username: xxx
 password: xxx
 registry.hub.docker.com:
 username: xxx
 password: xxx

2. 準(zhǔn)備好需要遷移的鏡像規(guī)則文件:image.json

 sichenzhao/private-test:xxx :  grant-test2.tencentcloudcr.com/grantzhao/sichenzhao

3. 運(yùn)行工具

 ./image-transfer --routines=5 --securityFile=./security.yaml --ruleFile=./rule.yaml --ns=default \
 --registry=grant-test.tencentcloudcr.com --retry=2

4. 運(yùn)行結(jié)果

最后一行

################# Finished, 0 transfer jobs failed, 0 jobs generate failed #################

表示運(yùn)行成功。

最佳實(shí)踐之場(chǎng)景三:騰訊云 TCR 個(gè)人版 (CCR) 一鍵遷移至騰訊云鏡像倉庫企業(yè)版 TCR

該場(chǎng)景下的使用方式和上面兩種場(chǎng)景稍有不同。主要表現(xiàn)為輸入?yún)?shù)的變化。

1. 準(zhǔn)備鏡像鑒權(quán)配置文件 security.yaml

 grant-test.tencentcloudcr.com:
 username: xxx
 password: xxx
 grant-test2.tencentcloudcr.com:
 username: xxx
 password: xxx
 ccr.ccs.tencentyun.com:
 username: xxx
 password: xxx

2. 準(zhǔn)備騰訊云 secret 配置文件 secret.yaml

對(duì)于 TCR 的一鍵遷移模式,不需倉庫的用戶名和密碼作為訪問鑒權(quán),而是通過騰訊云的 secret 信息。

 ccr:
 secretId: xxx
 secretKey: xxx
 tcr:
 secretId: xxx
 secretKey: xxx

注意:文件格式如上所示,只允許修改 secretId 和 secretKey 項(xiàng)。

如果沒有 ccr 的 secret 信息,則會(huì)用 tcr 的代替。相反如果沒有 tcr 的 secret 信息,也會(huì)用 ccr 的代替。

其中 secret 信息按如下方式獲取:包含 secretid 和 secretkey 兩個(gè)信息

3. 運(yùn)行工具

這里的參數(shù)輸入與上面兩種場(chǎng)景略有區(qū)別。

 ./image-transfer --ccrToTcr=true --routines=5 --securityFile=./security.yaml --secretFile=./secret.yaml --tcrName=tcr-test \
 --retry=3 --tcrRegion=ap-guangzhou --ccrRegion=ap-guangzhou --qps=3000

參數(shù)解釋:

–ccrToTcr=true,表示開啟 TCR 一鍵全量遷移模式。

–secretFile,提供 secret.yaml 配置文件。

–tcrName=tcr-test,指定目的 tcr 倉庫的名字。

–tcrRegion,指定目的 tcr 倉庫所在的地域。

–ccrRegion,指定源 ccr 倉庫所在的地域。

4. 運(yùn)行結(jié)果

一鍵批量遷移時(shí)間會(huì)很久,因?yàn)樾枰?ccr 的全部鏡像傳輸?shù)?tcr。

最后可以看到,有 16 個(gè) job 失敗了。工具最后會(huì)列出失敗的 job 的源鏡像地址和目的鏡像地址。對(duì)于這些失敗的 job,去倉庫檢查后發(fā)現(xiàn),這些 job 的 tag 是失效的。因此傳輸失敗。

關(guān)于“image-transfer 怎么用”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“image-transfer 怎么用”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-04發(fā)表,共計(jì)5710字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒有評(píng)論)
主站蜘蛛池模板: 高尔夫| 大英县| 彰武县| 阜城县| 习水县| 那曲县| 林西县| 霍邱县| 永安市| 临湘市| 江西省| 通榆县| 噶尔县| 武穴市| 阿鲁科尔沁旗| 呼和浩特市| 来安县| 敦煌市| 远安县| 西青区| 蓬莱市| 枣强县| 卓资县| 苍山县| 甘孜| 汾西县| 淮滨县| 什邡市| 弥勒县| 六枝特区| 海安县| 商丘市| 互助| 宕昌县| 凌海市| 六枝特区| 东宁县| 黔东| 芷江| 门源| 买车|