p2p-如何拯救k8s镜像分发的阿喀琉斯之踵?
K8s的出現為PaaS行業的發展打了一針興奮劑,Docker+k8s的技術路線已經成為了容器云的主流。尤其針對大流量,大彈性的應用場景來說,k8s將其從繁雜的運維、部署工作中徹底拯救出來。然而事情往往沒有那么簡單而美好,當我們使用k8s去管理一些大規模集群的時候,我們會發現有很多問題等待我們解決。比如,當集群中的所有節點同時去鏡像倉庫拉取鏡像的時候,這種大規模并發很有可能阻塞倉庫的出口,導致大家的下載速度都慢得難以忍受,這就是k8s鏡像分發的阿喀琉斯之踵。雖然可以采取鏡像倉庫集群化的方法來緩解這個瓶頸,然而這種做法始終是治標不治本,此外還會造成維護成本升高,以及鏡像同步時效性差等問題。
那么如何解決這個讓人困擾的問題呢?
p2p看起來是一個好辦法,去中心化的做法,不但可以降低對倉庫節點的依賴,同時也可以為用戶節省寶貴的外網流量。但是在k8s集群中拉取鏡像的場景內使用p2p技術要面對一系列困難,包括節點間數據安全性的問題、無預熱前提下的大規模并發拉取、非侵入式將集群改造成p2p網絡等。
最近發現華為云容器鏡像服務,可以提供一套在k8s集群中完美整合p2p下載的方案。該方案可以有效的解決了上述問題,提高鏡像下載速度,并為用戶節省大量帶寬資源。
p2p改造后的集群下載測試結果
如上圖所示,在限制了鏡像倉庫的下載帶寬,并測試了200節點與500節點情況下,不同下載方式的狀況。隨著節點數量的增大,并發量觸及到鏡像倉庫下載瓶頸的可能性也隨之增大,然而使用了p2p下載方式改造的k8s集群并沒有受到該瓶頸的制約,表現遠強于傳統下載方式。尤其是對于較大的鏡像,差距更為明顯。
如何把p2p下載整合到k8s集群內呢?
在華為云容器鏡像服務中,改變了所有集群節點去鏡像倉庫拉取鏡像的傳統做法。在用戶節點中注入peer客戶端,使用peer客戶端截取docker
client的拉取鏡像請求,并將請求重定向。經過修改后只有部分節點(約10%)真正到達鏡像倉庫去獲取鏡像數據,剩余節點轉為自集群內的其它節點獲取鏡像。要實現這個方案,主要的開發點有三處:對鏡像倉庫進行改造,部署并改造新的tracker服務器,以及在用戶節點注入peer客戶端。
對鏡像倉庫的改造
要想實現集群的p2p下載功能,所下載的文件必須包含有種子,因此要對已有的鏡像倉庫進行改造。當用戶push鏡像到鏡像倉庫時,倉庫自動計算鏡像所有layer的SHA值,并為每一個layer生成一個種子文件。
為了保證集群的安全性驗證,倉庫為每個接入的peer下發由倉庫私鑰簽名的jwt token,這個token將會進入集群網絡,并保證集群節點的認證安全。
部署改良后的tracker服務器
傳統的Tracker服務器的主要功能是為所有peer客戶端提供peer列表。針對k8s集群場景搭建的Tracker服務器除了負責分發peer列表外,還增加了許多其它特性。
1. 判斷peer節點的集群歸屬,因為tracker服務器可能對多個集群進行服務,而每個集群中的節點網絡相對獨立,因此tracker負責記錄peer節點的集群歸屬信息很有必要,這樣可以避免分發出網絡不互通的peer列表。
2.Tracker服務器負責監控每個peer的狀態,自動將部分下載完成的peer節點資源釋放,因為集群節點屬于客戶資源,一旦完成任務應該盡快將資源釋放出去。當Tracker判斷當前集群中完成節點比例已足夠支撐下載時,會指示部分已完結節點終結任務釋放資源,并將其移除出任務列表。當所有peer節點均已完成下載,而且一段時間內沒有新的下載請求進入,那么Tracker會指示將全部集群節點資源釋放。
3. Tracker按比例(約10%)指定部分peer節點到鏡像倉庫下載,以此將數據帶入整個集群網絡。
4. Tracker提供peer節點的安全性驗證,保證同屬于一個集群并下載同一個資源的peer節點有獲取peer列表的權限。
容器化的peer客戶端
這個解決方案,創造性的將peer客戶端容器化,并通過華為云容器引擎(CCE)的插件功能,將peer容器分發給整個集群。peer容器可以通過修改docker客戶端代理的方式,攔截下載鏡像請求的相關接口,將從鏡像倉庫下載操作轉化為p2p網絡下載操作,并把獲取到的鏡像數據歸還給docker客戶端,以此快速的把鏡像數據分發到整個集群網絡。該peer客戶端還具有以下特性:
· 根據tracker的分配,修改下載地址,小部分從鏡像倉庫下載,大部分從集群網絡中下載。
· 在peer客戶端的tcp握手協議中注入jwt token安全校驗,保證節點數據安全,防止假冒節點盜取數據。
· Peer客戶端采用優先級下載方式,能夠保證在下載過程中就可以將數據傳輸給docker客戶端,而不是當數據全部下載完全后再傳輸給docker,以此最大限度的節省下載實際。
轉載于:https://www.cnblogs.com/chengxuyuanbrother/p/9388886.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的p2p-如何拯救k8s镜像分发的阿喀琉斯之踵?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 续集---网络管理常用命令
- 下一篇: svnsync备份