容器技術(shù)的前生今世(插圖片已經(jīng)畫完)

容器技術(shù)概述

應(yīng)用虛擬化的歷史

  1. 1979描孟,Unix v7 支持為應(yīng)用構(gòu)建一個(gè)獨(dú)立的虛擬文件系統(tǒng)
  2. 2004-2008, Google 內(nèi)部大規(guī)模使用 Cgroups 虛擬化技術(shù)
  3. 2008, Cgroups 進(jìn)入了 Linux 內(nèi)核主線
  4. 2008, LXC(Linux Container)項(xiàng)目發(fā)布,具備了 Linux 容器的雛型
  5. 2013, Docker 項(xiàng)目正式發(fā)布
  6. 2014, Kubernetes 項(xiàng)目正式發(fā)布
  7. 2016, 容器生態(tài)開始模塊化梢夯、規(guī)范化,容器服務(wù)商業(yè)化

容器是什么

一句話總結(jié)就是:容器是應(yīng)用虛擬化侦镇,虛擬機(jī)是操作系統(tǒng)虛擬化


容器與虛擬化

kubernetes

容器的價(jià)值

  1. 容器實(shí)例更輕量,更彈性,更容易流動(dòng)
  2. 容器技術(shù)是面向應(yīng)用快压,比操作系統(tǒng)虛擬化效率更高
  3. 容器可以更好的和微服務(wù)融合,更容易與DevOPS理念結(jié)合
  4. 容器技術(shù)做到了運(yùn)行環(huán)境與操作系統(tǒng)解耦垃瞧,一處構(gòu)建的標(biāo)準(zhǔn)鏡像蔫劣,無需修改的處處運(yùn)行

容器的形態(tài)

從計(jì)算提供的方式演進(jìn)方向來看,先后經(jīng)歷了

  1. 機(jī)房IDC托管
  2. 軟件定義計(jì)算个从,網(wǎng)絡(luò)脉幢,存儲(chǔ)(IaaS)
  3. 平臺(tái)即服務(wù)(PaaS), 后端即服務(wù) (BaaS)
  4. 函數(shù)即服務(wù)(FaaS), 和Serverless架構(gòu)

容器的形態(tài)

  1. 面向應(yīng)用歪沃,融合在了PaaS, BaaS, FaaS,Serverless之中
  2. 面向操作系統(tǒng),具備資源強(qiáng)隔離的MicroVM和高效嫌松,彈性的Container互相結(jié)合
  3. 面向基礎(chǔ)設(shè)施沪曙,統(tǒng)一容器編排的Kubernetes正在下沉,成為分布式OS的組成部分

云原生的世界

容器應(yīng)用部署架構(gòu)的演進(jìn)

傳統(tǒng)應(yīng)用完成容器化方式運(yùn)行演進(jìn)過程如下:

第一階段, 應(yīng)用容器化

非容器應(yīng)用 → 編寫 DockerFile萎羔,構(gòu)建成鏡像 液走,以容器方式運(yùn)行


應(yīng)用容器化

第二階段, 單一集群模式:

開發(fā),測(cè)試贾陷,生產(chǎn)環(huán)境育灸,集群內(nèi)命名空間隔離

使用k8s調(diào)度

第三階段,多集群模式

開發(fā),測(cè)試昵宇,生產(chǎn)集群,公共基礎(chǔ)服務(wù)(日志儿子,監(jiān)控瓦哎,CICD服務(wù))獨(dú)立部署


多集群模式
  • 集群的管理模式,需要更強(qiáng)的DevOPS能力
  • 微服務(wù)可用性柔逼,性能觀測(cè)
  • 引入APM分布式應(yīng)用鏈路追蹤

第四階段, 超大規(guī)模模式

超大規(guī)模容器服務(wù)面臨的問題蒋譬,數(shù)以千計(jì)的微服務(wù),數(shù)萬量級(jí)的POD,以及不可預(yù)估的業(yè)務(wù)流量愉适。犯助。。维咸,這個(gè)使用 ServiceMesh,ClusterMesh 模式就是會(huì)提上日程了

  1. 需要更快的發(fā)布剂买,更強(qiáng)的微服務(wù)治理能力
  2. 需要更強(qiáng)可觀測(cè)性能,容器網(wǎng)絡(luò)流量分析
  3. 需要更低延遲癌蓖,更大帶寬的容器網(wǎng)絡(luò)
ServiceMesh,ClusterMesh 模式

典型的容器應(yīng)用部署方式

集群視角

單集群/多命名空間

單集群部署模式

多集群

開發(fā)瞬哼,測(cè)試,生產(chǎn)環(huán)境使用獨(dú)立集群租副,數(shù)據(jù)坐慰,基礎(chǔ)服務(wù)(日志,監(jiān)控用僧,注冊(cè)中心结胀,CICD等)拆分獨(dú)立集群

多集群拆分

集群Mesh模式

將多個(gè)集群組建成一個(gè)邏輯集群,提升跨集群間服務(wù)互通能力责循,可以實(shí)現(xiàn)業(yè)務(wù)容災(zāi)糟港,多活等

cillium multicluster mesh
cillium multicluster arch
cmulticluster service connect

應(yīng)用視角

通用容器應(yīng)用

ingress+容器服務(wù)

ingress與容器服務(wù)

微服務(wù)

ingress+注冊(cè)中心+微服務(wù)+分布式應(yīng)用調(diào)用鏈

微服務(wù)部署模式

常見的微服務(wù)框架,比如 SpringCloud / SpringBoot沼死,Dubbo着逐,Go-Micro

以一個(gè)典型的微服務(wù)框架具備如下功能:

Spring Boot 是 Spring 的腳手架,快速開發(fā)單個(gè)微服務(wù); SpringCloud 是基于Spring Boot的分布式系統(tǒng)基礎(chǔ)設(shè)施,提供如服務(wù)發(fā)現(xiàn)注冊(cè)耸别、配置中心健芭、消息總線、負(fù)載均衡秀姐、流量控制(斷路慈迈,熔斷,重試等)省有、數(shù)據(jù)監(jiān)控的微服務(wù)治理功能

第一代微服務(wù)局限性如下:

服務(wù)治理 SDK 化痒留,需要入侵業(yè)務(wù)代碼

語言綁定,特定的微服務(wù)框架僅支持特定的語言

服務(wù)網(wǎng)格

服務(wù)網(wǎng)格部署模式

ingress+服務(wù)網(wǎng)格控制層面+微服務(wù)應(yīng)用+分布式應(yīng)用調(diào)用鏈+ServiceMesh

Service Mesh解決了如下問題:

  • 屏蔽分布式系統(tǒng)通信的復(fù)雜性(負(fù)載均衡伸头、服務(wù)發(fā)現(xiàn)扫步、認(rèn)證授權(quán)游岳、監(jiān)控追蹤擂橘、流量控制等等)哭懈,服務(wù)只用關(guān)注業(yè)務(wù)邏輯容达;
  • 語言無關(guān),服務(wù)可以用任何語言編寫氏涩,只需和Service Mesh通信即可;
  • 對(duì)應(yīng)用透明弦疮,Service Mesh組件可以單獨(dú)升級(jí)压语;

Service Mesh 局限性如下:

  • 復(fù)雜性增加啸罢,Service Mesh 通過 Sidecar 侵入到業(yè)務(wù)數(shù)據(jù)流
  • Service Mesh,更多的解決的是服務(wù)間通信胎食,對(duì)于分布式系統(tǒng)的狀態(tài)管理扰才,綁定外部數(shù)據(jù)存儲(chǔ)、事件驅(qū)動(dòng)

UCloud 容器服務(wù)

容器平臺(tái)能力矩陣

支撐程度/類別 Cube實(shí)例 Uk8s集群 監(jiān)控 日志 鏈路追蹤 服務(wù)網(wǎng)格 微服務(wù) 應(yīng)用網(wǎng)關(guān) DevOPS
產(chǎn)品支持 --
方案支持 --

容器產(chǎn)品能力矩陣

功能 ucloud cube 備注
集群網(wǎng)絡(luò) vpc cni (underlay)
負(fù)載均衡 支持
Ingress 需要部署開源軟件
塊存儲(chǔ)卷(storage-class) 支持
NFS 動(dòng)態(tài)存儲(chǔ)卷(storage-class) 支持
對(duì)象存儲(chǔ)(storage-class) 支持
彈性伸縮CA HPA VPA 支持
GPU節(jié)點(diǎn) 支持
高性能計(jì)算節(jié)點(diǎn) 支持
混合云/托管區(qū)節(jié)點(diǎn) 支持
需要打通托管區(qū)網(wǎng)絡(luò)厕怜,只能添加托管區(qū)節(jié)點(diǎn)作為node節(jié)點(diǎn)
制品庫 uhub,支持外部registry
多集群管理 僅限創(chuàng)建衩匣,刪除

產(chǎn)品與解決方案架構(gòu)圖

image.png

面向銷售

目前已經(jīng)大量的客戶在容器化管理應(yīng)用蕾总,并且客戶是需要花更多類型的容器產(chǎn)品和服務(wù),容器可以帶來大量云資源消費(fèi)的

  1. 什么值得買琅捏,UC最大的容器服務(wù)消費(fèi)客戶生百,雙十一期間,峰值可達(dá)近千臺(tái)節(jié)點(diǎn)午绳,萬核量級(jí)的計(jì)算資源
  2. 核桃編程 平臺(tái)百臺(tái)兩集的計(jì)算資源置侍,十余個(gè)高配節(jié)點(diǎn)K8S集群
  3. 百望客戶 云主機(jī)運(yùn)行容器化應(yīng)用,部分業(yè)務(wù) rancher+uk8s
  4. 天天用車拦焚,混合云容器集群蜡坊,深度學(xué)習(xí)模型訓(xùn)練
  5. 蓋婭客戶,探探客戶 赎败,嘗試測(cè)試cube的使用
  6. 快準(zhǔn)車服 容器多活方案
  7. 風(fēng)電客戶秕衙,uk8s 集群擴(kuò)展高性能計(jì)算節(jié)點(diǎn)

容器技術(shù)賣點(diǎn)

  1. 擴(kuò)展容器服務(wù)客戶的能力,除了常規(guī)的云主機(jī)資源的的消費(fèi)僵刮,可以帶來更多的消費(fèi)
  2. 容器技術(shù)方案:鏡像倉庫据忘,CICD,日志搞糕,監(jiān)控系統(tǒng)勇吊,告警能帶來US3,短信的消費(fèi)窍仰,
  3. 彈性計(jì)算資源容器化汉规,job+ uk8s+高性能node
  4. AI訓(xùn)練計(jì)算資源容器化+ GPU主機(jī)

面向架構(gòu)師

基礎(chǔ)的產(chǎn)品,ULB驹吮,Uhost 针史,UDisk,UFS碟狞,US3啄枕,Uk8s, Cube

DevOPS

Gitlab,jenkins族沃,jenkinX


截屏2021-09-08 下午2.17.22.png

鏡像倉庫

image.png

為什么需要鏡像同步

image.png

由于對(duì)鏡像的訪問是一個(gè)核心的容器概念频祝,在實(shí)際使用過程中,一個(gè)鏡像庫可能是不夠用的脆淹,下例情況下智润,我們可能會(huì)需要部署多個(gè)鏡像倉庫:

  • 國外的公有鏡像下載過慢,需要一個(gè)中轉(zhuǎn)倉庫進(jìn)行加速

  • 容器規(guī)模較大未辆,一個(gè)鏡像倉庫不堪重負(fù)

  • 對(duì)系統(tǒng)穩(wěn)定性要求高窟绷,需要多個(gè)倉庫保證高可用性

  • 鏡像倉庫有多級(jí)規(guī)劃,下級(jí)倉庫依賴上級(jí)倉庫

更常用的場(chǎng)景是咐柜,在企業(yè)級(jí)軟件環(huán)境中兼蜈,會(huì)在軟件開發(fā)的不同階段存在不同的鏡像倉庫攘残,

  • 在開發(fā)環(huán)境庫,開發(fā)人員頻繁修改鏡像为狸,一旦代碼完成歼郭,生成穩(wěn)定的鏡像即需要同步到測(cè)試環(huán)境。

  • 在測(cè)試環(huán)境庫辐棒,測(cè)試人員對(duì)鏡像是只讀操作病曾,測(cè)試完成后,將鏡像同步到預(yù)上線環(huán)境庫漾根。

  • 在預(yù)上線環(huán)境庫泰涂,運(yùn)維人員對(duì)鏡像也是只讀操作,一旦運(yùn)行正常辐怕,即將鏡像同步到生產(chǎn)環(huán)境庫逼蒙。

  • 在這個(gè)流程中,各環(huán)境的鏡像庫之間都需要鏡像的同步和復(fù)制寄疏。

Harbor的鏡像同步機(jī)制

有了多個(gè)鏡像倉庫是牢,在多個(gè)倉庫之間進(jìn)行鏡像同步馬上就成為了一個(gè)普遍的需求。比較傳統(tǒng)的鏡像同步方式陕截,有兩種:

  • 第一種方案驳棱,使用Linux提供的RSYNC服務(wù)來定義兩個(gè)倉庫之間的鏡像數(shù)據(jù)同步。

  • 第二種方案农曲,對(duì)于使用IaaS服務(wù)進(jìn)行鏡像存儲(chǔ)的場(chǎng)景蹈胡,利用IaaS的配置工具來對(duì)鏡像的同步進(jìn)行配置。

image.png

這兩種方案都依賴于倉庫所在的存儲(chǔ)環(huán)境朋蔫,而需要采用不同的工具策略。Harbor則提供了更加靈活的方案來處理鏡像的同步却汉,其核心是三個(gè)概念:

  • 用Harbor自己的API來進(jìn)行鏡像下載和傳輸驯妄,作到與底層存儲(chǔ)環(huán)境解耦。

  • 利用任務(wù)調(diào)度和監(jiān)控機(jī)制進(jìn)行復(fù)制任務(wù)的管理合砂,保障復(fù)制任務(wù)的健壯性青扔。在同步過程中,如果源鏡像已刪除翩伪,Harbor會(huì)自動(dòng)同步刪除遠(yuǎn)端的鏡像微猖。在鏡像同步復(fù)制的過程中,Harbor會(huì)監(jiān)控整個(gè)復(fù)制過程缘屹,遇到網(wǎng)絡(luò)等錯(cuò)誤凛剥,會(huì)自動(dòng)重試。

  • 提供復(fù)制策略機(jī)制保證項(xiàng)目級(jí)的復(fù)制需求轻姿。在Harbor中犁珠,可以在項(xiàng)目中創(chuàng)建復(fù)制策略逻炊,來實(shí)現(xiàn)對(duì)鏡像的同步。與Docker Registry的不同之處在于犁享,Harbor的復(fù)制是推(PUSH)的策略余素,由源端發(fā)起,而Docker Registry的復(fù)制是拉(PULL)的策略炊昆,由目標(biāo)端發(fā)起桨吊。

日志方案

傳統(tǒng)的filebeat +ELK

image.png

新興的Vector+Loki+ Grafana

image.png

監(jiān)控方案

promethus+cortex++Grafana

image.png

https://cortexmetrics.io/docs/architecture/

鏈路追蹤

jaeger+Tempo+Grafana

image.png

服務(wù)網(wǎng)格

linkerd2

image.png
image.png

流量調(diào)度

  1. linkerd2 流量調(diào)度
使用linkerd2實(shí)現(xiàn)灰度發(fā)布
使用linkerd2實(shí)現(xiàn)多集群流量調(diào)度
image.png
  1. DNS權(quán)重+Ingress
DNS負(fù)載均衡實(shí)現(xiàn)流量調(diào)度

跨集群服務(wù)調(diào)用

  1. Ingress+LB
使用Ingress+LB實(shí)現(xiàn)跨集群服務(wù)調(diào)用
  1. Cilium Mesh
Cilium Mesh實(shí)現(xiàn)跨集群服務(wù)調(diào)用
Cilium multi-cluster 原理示意圖

多集群應(yīng)用管理

98181ad8-0675-41e8-b24e-32ddc1b5bc7b.png
image.png

高性能容器網(wǎng)絡(luò)

開源的 Cilium (ebpf/Ipvlan)

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市凤巨,隨后出現(xiàn)的幾起案子视乐,更是在濱河造成了極大的恐慌,老刑警劉巖磅甩,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件炊林,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡卷要,警方通過查閱死者的電腦和手機(jī)渣聚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來僧叉,“玉大人奕枝,你說我怎么就攤上這事∑慷椋” “怎么了隘道?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長郎笆。 經(jīng)常有香客問我谭梗,道長,這世上最難降的妖魔是什么宛蚓? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任激捏,我火速辦了婚禮,結(jié)果婚禮上凄吏,老公的妹妹穿的比我還像新娘远舅。我一直安慰自己,他們只是感情好痕钢,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布图柏。 她就那樣靜靜地躺著,像睡著了一般任连。 火紅的嫁衣襯著肌膚如雪蚤吹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天随抠,我揣著相機(jī)與錄音距辆,去河邊找鬼余佃。 笑死,一個(gè)胖子當(dāng)著我的面吹牛跨算,可吹牛的內(nèi)容都是我干的爆土。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼诸蚕,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼步势!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起背犯,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤坏瘩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后漠魏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體倔矾,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年柱锹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了哪自。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡禁熏,死狀恐怖壤巷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瞧毙,我是刑警寧澤胧华,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站宙彪,受9級(jí)特大地震影響矩动,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜释漆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一悲没、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧灵汪,春花似錦、人聲如沸柑潦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽渗鬼。三九已至览露,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間譬胎,已是汗流浹背差牛。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國打工命锄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人偏化。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓脐恩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親侦讨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子驶冒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容