2022-10-08 分類: 網(wǎng)站建設(shè)
隨著云計(jì)算、DevOps和微服務(wù)應(yīng)用架構(gòu)的發(fā)展,容器云成為IT的主要基礎(chǔ)設(shè)施平臺(tái)之一。以Docker為代表的容器技術(shù),是目前有效的應(yīng)用交付模式之一;以Kubernetes為代表的容器編排技術(shù),是目前流行的應(yīng)用部署方案。云平臺(tái)的基礎(chǔ)設(shè)施、DevOps的工程體系和微服務(wù)應(yīng)用架構(gòu)是IT技術(shù)轉(zhuǎn)型的底座。而容器云又是這個(gè)底座下的一塊基石。
下面幾個(gè)問題是在Docker+K8S容器云建設(shè)過程中,最常被問起和需要解決的難點(diǎn)問題。來自社區(qū)交流活動(dòng),多位社區(qū)會(huì)員分享解答,整理者:gavin_zhang
1、企業(yè)是應(yīng)該選擇原生的Docker還是定制化的Docker,比如胖容器/富容器?
【問題描述】Docker是當(dāng)前企業(yè)在進(jìn)行容器化時(shí)選的容器技術(shù),但是原生的Docker在實(shí)際使用的過程中,特別是在傳統(tǒng)虛機(jī)運(yùn)維到容器化運(yùn)維的過渡中,會(huì)碰到以下類似問題:
1、如何ssh登錄到容器,像登錄虛機(jī)那樣,可以通過ssh進(jìn)行管理
2、對(duì)于普通用戶來說,如何從容器中拷貝文件到外部
3、虛機(jī)中一般會(huì)配置定時(shí)任務(wù),在容器中如何實(shí)現(xiàn)
4、虛機(jī)中一般會(huì)安裝各種agent,容器中怎么去安裝
若企業(yè)直接采用原生的Docker,那么以上問題是比較棘手的。因此企業(yè)在容器技術(shù)選型上,是否應(yīng)該為了大程度兼容虛機(jī)運(yùn)維模式,對(duì)Docker進(jìn)行定制化改造,滿足實(shí)際需求呢?
@某銀行 技術(shù)經(jīng)理:
是使用原生還是定制就要看企業(yè)實(shí)力了。一般的企業(yè)不會(huì)去動(dòng)原生的東西,不愿意將人力花在這個(gè)方面。很多企業(yè)是通過應(yīng)用的改造來適配容器化的方案,包括運(yùn)維上的問題。
4個(gè)問題:
1、docker exec可以進(jìn)入容器,如果是k8s或者ocp,還有有相應(yīng)的api
2、方便拷貝的方式第一個(gè)容器中應(yīng)用產(chǎn)生的文件目錄掛載到本地;第二個(gè)使用相應(yīng)的命令如docker cp;也許你說的不僅限一些簡(jiǎn)單場(chǎng)景,其實(shí)都是有方法的,不僅以上兩種
3、容器中也是可以使用crontab定時(shí)任務(wù)操作的
4、agent的功能要先說清楚,如果上k8s或者ocp,一個(gè)pod可以完成你要說的內(nèi)容。如果僅僅是用docker,根據(jù)功能需要應(yīng)該也是有方法的。
@gavin_zhang 某股份制銀行 系統(tǒng)架構(gòu)師:
1、docker exec可以滿足要求
2、最直接就是掛在本地磁盤存儲(chǔ)到容器上
3、可以考慮一下,定時(shí)調(diào)度起一個(gè)Docker執(zhí)行任務(wù)
4、主要是這些Agent是用來干什么的?Docker實(shí)例本來就是作為一種一次性的,不可變的運(yùn)行實(shí)例,傳統(tǒng)虛擬機(jī)的那個(gè)操作Agent,不符合容器的設(shè)計(jì)理念
定制化大的問題在于,目前技術(shù)升級(jí)比較快,一旦定制,就鎖定在幾個(gè)版本了,后續(xù)升級(jí)維護(hù)工作量會(huì)很大。
2、容器云平臺(tái)主流技術(shù)和成熟產(chǎn)品選型及如何制定相關(guān)的標(biāo)準(zhǔn)和規(guī)范探討?
【問題描述】在引入容器平臺(tái)時(shí),需先了解當(dāng)前主流的容器平臺(tái)技術(shù)和成熟產(chǎn)品,然后制定相關(guān)的標(biāo)準(zhǔn)和規(guī)范。具體如下:
想了解當(dāng)前主流容器平臺(tái)openshift3、openshift4、Rancher、博云等國(guó)產(chǎn)容器產(chǎn)商的有哪些區(qū)別?容器平臺(tái)如何選型?這些產(chǎn)品的功能、性能比較。
除了資金成本,容器平臺(tái)后期的使用和運(yùn)維需要如何考慮,目前公司自己對(duì)容器平臺(tái)的開發(fā)能力不在,運(yùn)維人員需要具體具備哪些能力,運(yùn)維與開發(fā)如何協(xié)作,投入運(yùn)維人員的規(guī)模如何估算?
容器平臺(tái)早期實(shí)施的過程中需要做哪些規(guī)劃,避免哪些坑?
此問題有多位同行進(jìn)行詳細(xì)的解答分享,我們已經(jīng)專門整理成一篇文章,并在不久前向讀者們推送過,點(diǎn)擊下面的標(biāo)題即可回顧閱讀:
3、Kubenetes在金融多安全域的環(huán)境中,架構(gòu)規(guī)劃問題?
【問題描述】金融行業(yè)網(wǎng)絡(luò)架構(gòu)中存在多安全域的設(shè)計(jì),kubenetes在多安全域網(wǎng)絡(luò)隔離的情況下,每個(gè)安全域都部署一套k8s集群?jiǎn)?生產(chǎn)環(huán)境k8s集群中calico有哪些網(wǎng)絡(luò)控制策略好實(shí)踐?
@nameless 某云計(jì)算廠商 技術(shù)總監(jiān) :
理論上來說各個(gè)安全域的網(wǎng)絡(luò)時(shí)隔離的,如果部署一套k8s集群,所有的node節(jié)點(diǎn)和master節(jié)點(diǎn)是聯(lián)通的,node直接默認(rèn)也是聯(lián)通的??梢悦總€(gè)安全域部署一套k8s集群,使用同一的容器管理平臺(tái),這是k8s多集群管理。
calico是k8s其中一個(gè)網(wǎng)絡(luò)插件,其他還有flannel、ovs等不同的網(wǎng)絡(luò)插件,生產(chǎn)使用哪一種網(wǎng)絡(luò)插件需根據(jù)自身業(yè)務(wù)需求選擇。
@某銀行 技術(shù)經(jīng)理:
其實(shí)不需要這么復(fù)雜,比如分了互聯(lián)網(wǎng)區(qū)、中間業(yè)務(wù)區(qū)、核心業(yè)務(wù)區(qū),k8s集群有6個(gè)node節(jié)點(diǎn),可以兩個(gè)放互聯(lián)網(wǎng)、兩個(gè)放中間業(yè)務(wù),兩個(gè)放核心業(yè)務(wù),比如master節(jié)點(diǎn)都在OA區(qū),只要將master跟著6個(gè)node網(wǎng)絡(luò)上能通即可,不需要node間都能互相訪問,一個(gè)集群也是可以的。
calico是可以解決集群內(nèi)外訪問的問題,但是隨著需要訪問集群的外部節(jié)點(diǎn)的增加,那運(yùn)維成本就很高了??梢允褂胕ngress類似的解決方案。
4、容器云平臺(tái)建設(shè)難點(diǎn)之網(wǎng)絡(luò)如何選擇?如果選SDN網(wǎng)絡(luò),那么SDN網(wǎng)絡(luò)實(shí)現(xiàn)方案又應(yīng)該如何選擇?
【問題描述】容器網(wǎng)絡(luò)如何選擇?容器云平臺(tái)的網(wǎng)絡(luò)一直是一個(gè)技術(shù)難題,是采用SDN網(wǎng)絡(luò)還是橋接到Underlay網(wǎng)絡(luò);如果使用SDN網(wǎng)絡(luò),那么多的SDN網(wǎng)絡(luò)實(shí)現(xiàn)方案,如何選擇?
@liufengyi 某互聯(lián)網(wǎng)銀行 軟件架構(gòu)設(shè)計(jì)師:
優(yōu)先考慮公司整個(gè)網(wǎng)絡(luò)扁平化,互聯(lián)互通,這樣對(duì)應(yīng)用改造成本要小很多,即基于公司原來的網(wǎng)絡(luò)打通來進(jìn)行。如果容器的應(yīng)用是一個(gè)相對(duì)獨(dú)立的服務(wù),可以考慮overlay。規(guī)模不大的情況下一些開源網(wǎng)絡(luò)組件可以考慮采用。
@某金融企業(yè) 系統(tǒng)工程師:
calico、bgp、ingress、nginx等都是可以的
1、calico將集群內(nèi)與集群外網(wǎng)絡(luò)打通,但是隨著集群外訪問集群內(nèi)的節(jié)點(diǎn)越來越多,運(yùn)維難度會(huì)加大
2、bgp需配置內(nèi)部路由協(xié)議,性能上有損耗
3、ingress、nginx道理類似,將需要被外部訪問的應(yīng)用使用這兩個(gè)組件外部負(fù)載進(jìn)到集群內(nèi)部
4、hostnetwork方式
5、nodeport方式
……
如何選擇要根據(jù)自身IT架構(gòu)及監(jiān)管要求定了
@zhuqibs 軟件開發(fā)工程師:
關(guān)于SDN還是underlay,如果你是自建的,一定不會(huì)選用SDN, 成本啊,兄弟們!Cisco去年要給我們搭建個(gè)ACI, 一個(gè)交換機(jī)就是1萬多,如果是銀行錢多沒有關(guān)系,中小企業(yè)資金緊張加上疫情,哪會(huì)選擇。
VMware的NST-G我們也用過,有bug,這個(gè)PKS每個(gè)月都會(huì)有一次“月經(jīng)”,每次網(wǎng)絡(luò)存儲(chǔ)全堵死,IO基本龜速,廠商派人解決了大半年,連交換機(jī)都換了都沒有解決,結(jié)果賠了3臺(tái)服務(wù)器,幫我們?nèi)珦Q成普通的vcentor。
SDN聽上去美好,現(xiàn)實(shí)很骨感,當(dāng)然如果你有錢并愿意試錯(cuò),又追求新技術(shù),當(dāng)然也是沒問題的。比如阿里云、騰訊云這些公有云,基本必然是SDN,人家有錢有人,來填坑。
所以,一般公司Underlay就可以了,加上Kubernetes自己的calico,fannel,或cattle,一般都沒問題,就是網(wǎng)絡(luò)上沒有硬隔離,沒有客戶化的東東,但我們可以用公有云的啊,自己去建,多費(fèi)錢。
@xiaoping378 某行科技公司 系統(tǒng)架構(gòu)師:
1. 既然是說容器云平臺(tái)建設(shè),肯定已經(jīng)有了網(wǎng)絡(luò)基礎(chǔ)設(shè)施,那不考慮數(shù)據(jù)中心級(jí)別的SDN方案。只考慮在已有的網(wǎng)絡(luò)建設(shè)成果上建設(shè)。
2. 不用迷信商業(yè)方案,無論是開源還是商業(yè)方案,大家都得遵守k8s的cni接口。不建議在容器網(wǎng)絡(luò)方案中寄托太多的功能,如網(wǎng)絡(luò)限速、安群策略等等。
3. 考慮目前主機(jī)層面大都可以保障二層是通的。最簡(jiǎn)單方案方案可以選flannel。目前flannel發(fā)展到現(xiàn)在,已經(jīng)支持vxlan模式下啟用DR網(wǎng)絡(luò)了,通俗講,就是同一子網(wǎng)下,走h(yuǎn)ostgw,宿主機(jī)充當(dāng)軟路由,性能接近裸網(wǎng),垮子網(wǎng)的情況走vxlan。即兼顧了性能,又考慮了可擴(kuò)展性。另外flannel目前也重點(diǎn)優(yōu)化了大規(guī)模容器云的路由表或arp占用過多問題,做到了:每擴(kuò)展一個(gè)主機(jī)只增加一個(gè)路由項(xiàng)、一個(gè)fdb項(xiàng)、一個(gè)arp項(xiàng)。
4. 如果考慮容器網(wǎng)絡(luò)隔離和安全策略的話(其實(shí)沒必要,網(wǎng)絡(luò)隔離,可以從項(xiàng)目級(jí)別來設(shè)置調(diào)度策略做到物理隔離),可以考慮Canal網(wǎng)絡(luò)方案,他是calico和flannel的結(jié)合體。
@Garyy 某保險(xiǎn) 系統(tǒng)工程師:
關(guān)于容器網(wǎng)絡(luò)的建設(shè)思路:
容器網(wǎng)絡(luò)發(fā)展到現(xiàn)在,已經(jīng)是雙雄會(huì)的格局。雙雄會(huì)其實(shí)指的就是Docker的CNM和Google、CoreOS、Kuberenetes主導(dǎo)的CNI。首先明確一點(diǎn),CNM和CNI并不是網(wǎng)絡(luò)實(shí)現(xiàn),他們是網(wǎng)絡(luò)規(guī)范和網(wǎng)絡(luò)體系,從研發(fā)的角度他們就是一堆接口,你底層是用Flannel也好、用Calico也好,他們并不關(guān)心,CNM和CNI關(guān)心的是網(wǎng)絡(luò)管理的問題。
網(wǎng)絡(luò)需求調(diào)研發(fā)現(xiàn),業(yè)務(wù)部門主要關(guān)注以下幾點(diǎn):1、容器網(wǎng)絡(luò)與物理網(wǎng)絡(luò)打通;2、速度越快越好;3、改動(dòng)越少越好;4、盡可能少的風(fēng)險(xiǎn)點(diǎn)。
容器的網(wǎng)絡(luò)方案大體可分為協(xié)議棧層級(jí)、穿越形態(tài)、隔離方式這三種形式
協(xié)議棧層級(jí):二層比較好理解,在以前傳統(tǒng)的機(jī)房或虛擬化場(chǎng)景中比較常見,就是基于橋接的 ARP+MAC 學(xué)習(xí),它大的缺陷是廣播。因?yàn)槎拥膹V播,會(huì)限制節(jié)點(diǎn)的量級(jí);三層(純路由轉(zhuǎn)發(fā)),協(xié)議棧三層一般基于 BGP,自主學(xué)習(xí)整個(gè)機(jī)房的路由狀態(tài)。它大的優(yōu)點(diǎn)是它的 IP 穿透性,也就是說只要是基于這個(gè) IP 的網(wǎng)絡(luò),那此網(wǎng)絡(luò)就可以去穿越。顯而易見,它的規(guī)模是非常有優(yōu)勢(shì),且具有良好的量級(jí)擴(kuò)展性。但在實(shí)際部署過程中,因?yàn)槠髽I(yè)的網(wǎng)絡(luò)大多受控。比如,有的企業(yè)網(wǎng)絡(luò)的 BGP 是基于安全考慮不給開發(fā)者用或者說企業(yè)網(wǎng)絡(luò)本身不是 BGP,那這種情況下你就受限了;協(xié)議棧二層加三層,它的優(yōu)點(diǎn)是能夠解決純二層的規(guī)模性擴(kuò)展問題,又能解決純?nèi)龑拥母鞣N限制問題,特別是在云化 VPC 場(chǎng)景下,可以利用 VPC 的跨節(jié)點(diǎn)三層轉(zhuǎn)發(fā)能力。
穿越形態(tài):這個(gè)與實(shí)際部署環(huán)境十分相關(guān)。穿越形態(tài)分為兩種:Underlay、Overlay。
Underlay:在一個(gè)較好的可控的網(wǎng)絡(luò)場(chǎng)景下,我們一般利用 Underlay??梢赃@樣通俗的理解,無論下面是裸機(jī)還是虛擬機(jī),只要整個(gè)網(wǎng)絡(luò)可控,容器的網(wǎng)絡(luò)便可直接穿過去 ,這就是 Underlay。
Overlay:Overlay 在云化場(chǎng)景比較常見。Overlay 下面是受控的 VPC 網(wǎng)絡(luò),當(dāng)出現(xiàn)不屬于 VPC 管轄范圍中的 IP 或者 MAC,VPC 將不允許此 IP/MAC 穿越。出現(xiàn)這種情況時(shí),我們可利用 Overlay 方式來做。
Overlay網(wǎng)絡(luò)使物理網(wǎng)絡(luò)虛擬化、資源池化,是實(shí)現(xiàn)云網(wǎng)融合的關(guān)鍵。把Overlay網(wǎng)絡(luò)和SDN技術(shù)結(jié)合使用,把SDN控制器作為Overlay網(wǎng)絡(luò)控制平面的控制器,這種方式更容易使網(wǎng)絡(luò)與計(jì)算組件整合,是網(wǎng)絡(luò)向云平臺(tái)服務(wù)轉(zhuǎn)變的理想選擇。
隔離方式:隔離方式通常分為VLAN和VXLAN 兩種。
VLAN:VLAN 機(jī)房中使用偏多,但實(shí)際上存在一個(gè)問題。就是它總的租戶數(shù)量受限。眾所周知,VLAN 具有數(shù)量限制。
VXLAN:VXLAN 是現(xiàn)今較為主流的一種隔離方式。因?yàn)樗囊?guī)模性較好較大,且它基于 IP 穿越方式較好。
@Steven99 軟件架構(gòu)設(shè)計(jì)師:
容器網(wǎng)絡(luò)選擇我個(gè)人覺得不是重點(diǎn),其實(shí)不管哪種網(wǎng)絡(luò),都應(yīng)該對(duì)終端用戶透明,所以不應(yīng)該糾結(jié)于網(wǎng)絡(luò)模型。
需要考慮的重點(diǎn)可能是安全性,穩(wěn)定性,易用性等,我們使用calico網(wǎng)絡(luò),發(fā)現(xiàn)也是很多問題,在考慮替換。開源產(chǎn)品總是需要很多額外的工作,測(cè)試驗(yàn)證,逐步優(yōu)化,不實(shí)際使用,很難說哪種更合適,在使用過程中可能會(huì)逐步清晰自己的需求。
容器安全,容器網(wǎng)絡(luò)安全可能是重點(diǎn),特別上生產(chǎn)業(yè)務(wù),服務(wù)數(shù)量達(dá)到一定量后,會(huì)有很多想不到的問題,當(dāng)然,不實(shí)際做過,也很難選擇,所以可以嘗試先用起來,經(jīng)常使用會(huì)逐步清晰明白自己要什么。
5、容器東西向網(wǎng)絡(luò)安全是怎么考慮的?
@zhuqibs Mcd 軟件開發(fā)工程師:
東西向流量的控制,是服務(wù)網(wǎng)格的控制范疇,istio可以實(shí)現(xiàn),但目前istio不完善,所有很不好用。建議使用kong、traefik為代表的api gateway,其中Kong基于nginx,可以在容器中部署到每個(gè)pod中去,控制pod和pod之間的流量。
@nameless 某云計(jì)算廠商 技術(shù)總監(jiān) :
東西向流量指同一宿主機(jī)上與其他容器相互訪問,同一主機(jī)上pod默認(rèn)是互通的。
我認(rèn)為可以從上層邏輯控制上減少安全隱患,即根據(jù)業(yè)務(wù)劃分不同的邏輯集群,盡量讓有血緣關(guān)系的業(yè)務(wù)放在同一邏輯集群。
6、容器中的應(yīng)用問題排查方法探討?
【問題描述】如何獲取容器里面的堆棧信息,如何抓包分析,當(dāng)有容器外應(yīng)用訪問容器內(nèi)應(yīng)用或容器內(nèi)應(yīng)用訪問容器外應(yīng)用,如何根據(jù)ip追蹤訪問鏈路?
@zhuqibs Mcd 軟件開發(fā)工程師:
從監(jiān)控組件考慮,可以使用skywalking進(jìn)行鏈路上api調(diào)用中端口信息的跟蹤,如果用商業(yè)化apm組件,cisco、聽云都有不錯(cuò)的產(chǎn)品。
在微服務(wù)架構(gòu)中,每個(gè)pod就是一個(gè)服務(wù),在每個(gè)應(yīng)用pod中加入kong組件,每個(gè)kong組件都可以輸入流量監(jiān)控?cái)?shù)據(jù)到prometheus,這樣,也能不方便取代鏈路監(jiān)控軟件的功能,當(dāng)然只是“部分”,skywalking和apm還能取到其他類型的數(shù)據(jù)。
@liufengyi 某互聯(lián)網(wǎng)銀行 軟件架構(gòu)設(shè)計(jì)師:
我們集成了apm來做故障發(fā)現(xiàn)和排查,可以通過查詢?nèi)萜髟谀呐_(tái)宿主機(jī)上,然后抓指定虛擬網(wǎng)卡上容器的網(wǎng)絡(luò)包。
@gavin_zhang 某股份制銀行 系統(tǒng)架構(gòu)師:
堆棧信息可以在應(yīng)用框架加入dump功能,以日志的方式輸出到日志系統(tǒng)。
實(shí)現(xiàn)應(yīng)用的全鏈路最終,解決方案有Spring cloud sleuth等
7、容器云平臺(tái)的整體規(guī)劃:包括計(jì)算資源、存儲(chǔ)、網(wǎng)絡(luò)的選型?
【問題描述】我想了解一下容器云平臺(tái)的一個(gè)整體規(guī)劃,包括計(jì)算資源、存儲(chǔ)、網(wǎng)絡(luò)的選型,我們打算將微服務(wù)遷移到容器云平臺(tái)。
@nameless 某云計(jì)算廠商 技術(shù)總監(jiān) :
個(gè)人意見:
1、首先確定目標(biāo),建設(shè)容器云平臺(tái)的目標(biāo),規(guī)劃哪些業(yè)務(wù)上容器,大概的資源需求是多少,集群規(guī)模多大等等;
2、容器平臺(tái)選型,基本是k8s,這個(gè)應(yīng)該沒問題;
3、計(jì)算資源:基本是采用裸機(jī)還是虛擬機(jī)作為計(jì)算資源,兩種方案各有優(yōu)劣,如果已有IaaS平臺(tái),可以采用虛擬機(jī),如果沒有IaaS平臺(tái),也可以直接使用裸機(jī);
4、網(wǎng)絡(luò)資源:需要考慮業(yè)務(wù)上容器是否需要對(duì)業(yè)務(wù)進(jìn)行改造,另外就是將來業(yè)務(wù)向容器平臺(tái)遷移過程,比如一個(gè)微服務(wù)業(yè)務(wù),遷移至容器平臺(tái)時(shí),先遷移部分微服務(wù),還是整體遷移?遷移部分微服務(wù)后,已上容器微服務(wù)和未上微服務(wù)網(wǎng)絡(luò)網(wǎng)絡(luò)通信等等;
5、存儲(chǔ)資源:考慮業(yè)務(wù)上容器是有狀態(tài)業(yè)務(wù)還是無狀態(tài)業(yè)務(wù),已經(jīng)業(yè)務(wù)對(duì)性能的影響,選擇合適的存儲(chǔ)資源;
綜上,還需要考慮運(yùn)維團(tuán)隊(duì)的運(yùn)維能力、以及和開發(fā)對(duì)接等等。
8、使用容器云平臺(tái),如何提升系統(tǒng)開發(fā)和測(cè)試的能力?
【問題描述】目前公司選擇springcloud微服務(wù)體系,在開發(fā)測(cè)試過程中,如何使用容器云平臺(tái)提升系統(tǒng)開發(fā)測(cè)試能力?能夠提升哪些能力?
有沒有較好的實(shí)踐路徑和應(yīng)注意的關(guān)鍵點(diǎn)?比如是否在開發(fā)測(cè)試云上先搭建通用的服務(wù)(注冊(cè)中心等,是否開發(fā)測(cè)試云通用一套服務(wù)?),maven私倉(cāng)管理、基礎(chǔ)鏡像管理等等?
@gavin_zhang 某股份制銀行 系統(tǒng)架構(gòu)師:
對(duì)于測(cè)試,可以使用容器平臺(tái)的持續(xù)交付的能力,縮短測(cè)試版本周期和環(huán)境準(zhǔn)備的時(shí)間;使用平臺(tái)靈活的路由功能,進(jìn)行多版本兼容性測(cè)試。
較好的實(shí)踐路徑和應(yīng)注意的關(guān)鍵點(diǎn) :
1.通用的服務(wù)建議統(tǒng)一建設(shè)成平臺(tái)服務(wù),但是不建議測(cè)試開發(fā)使用同一個(gè)運(yùn)行實(shí)例。
2.建立私有的鏡像倉(cāng)庫(kù),制定基礎(chǔ)鏡像白名單。
3.做好鏡像的版本管理,利用容器和git的tag,做到實(shí)例和鏡像,鏡像和源碼的對(duì)應(yīng)。
9、銀行重要的業(yè)務(wù)場(chǎng)景如何用k8s做滾動(dòng)更新?
@某銀行 技術(shù)經(jīng)理:
這個(gè)問題細(xì)說的話就多了,需要看業(yè)務(wù)場(chǎng)景。強(qiáng)一致性交易類業(yè)務(wù),像消費(fèi)之類的需要應(yīng)用本身來保證,事務(wù)失敗要能回滾。那版本升級(jí)回滾就要有優(yōu)雅停機(jī)的動(dòng)作,一些渠道類交易,只是做中間轉(zhuǎn)接,一般是可以直接做升級(jí)回滾的。
升級(jí)回滾的操作,主要是通過替換應(yīng)用依賴的鏡像版本。k8s的升級(jí)回滾是利用新版本鏡像或者舊版本鏡像拉起一個(gè)新pod,下線一個(gè)舊pod依次完成此操作的,保證業(yè)務(wù)正常運(yùn)行。
@gavin_zhang 某股份制銀行 系統(tǒng)架構(gòu)師:
平臺(tái)方面:結(jié)合K8s的流量分發(fā),實(shí)現(xiàn)金絲雀發(fā)布機(jī)制,通過精細(xì)的流量控制,來實(shí)現(xiàn)業(yè)務(wù)的滾動(dòng)更新。應(yīng)用方面:應(yīng)用需要有合理的設(shè)計(jì),在規(guī)劃時(shí)就需要有相關(guān)的設(shè)計(jì),對(duì)應(yīng)用有合理的低耦合的切分,盡量減少發(fā)布應(yīng)用的涉及面,這其中最重要的如何實(shí)現(xiàn)問題的回退,特別是影響到賬務(wù)數(shù)據(jù)的,采用數(shù)據(jù)染色或是零時(shí)表的方式,盡量做到應(yīng)用可回溯。
@rangeryu 螞蟻金服 產(chǎn)品經(jīng)理:
這個(gè)問題可以結(jié)合著螞蟻?zhàn)鞔笠?guī)模發(fā)布的時(shí)候所關(guān)注的變更管理來回答。
原生 deployment 做灰度或者金絲雀發(fā)布時(shí),默認(rèn)情況下在 Pod 變更和流量治理層面的管控還稍顯不足,無法完全做到無損發(fā)布或按需過程管控。因此,我們?cè)?PaaS 產(chǎn)品層面做了定制,在 Kubernetes 層面做了自定義資源的擴(kuò)展,目的是能夠在云原生的場(chǎng)景下,依然對(duì)整個(gè)發(fā)布過程實(shí)現(xiàn)精細(xì)化管控,使得大規(guī)模集群發(fā)布、灰度、回滾時(shí)更加優(yōu)雅,符合技術(shù)風(fēng)險(xiǎn)三板斧原則。
在實(shí)際的生產(chǎn)環(huán)境中,圍繞容器大規(guī)模變更會(huì)配合業(yè)務(wù)監(jiān)控及更多維度的觀察,確保每一步都是符合預(yù)期、驗(yàn)證通過的。這樣在應(yīng)用實(shí)例層面的精細(xì)化管控,為運(yùn)維提供了能夠及時(shí)剎車回滾的機(jī)會(huì),是線上應(yīng)用發(fā)布的一個(gè)重要的保險(xiǎn)繩。
簡(jiǎn)單來說,在螞蟻內(nèi)部所有的變更要滿足” 可灰度、可監(jiān)控、可應(yīng)急 “,當(dāng)基礎(chǔ)設(shè)施全面轉(zhuǎn)向云原生,就開始基于Kubernetes作了非常多擴(kuò)展和補(bǔ)充。對(duì)于金融業(yè)務(wù)場(chǎng)景,從實(shí)際產(chǎn)品層,需要做到:
1. 感知底層拓?fù)?/p>
2. 分組/beta/分批發(fā)布
3. 優(yōu)雅摘流
10、 容器云的高可用問題?為了實(shí)現(xiàn)高可用,容器云內(nèi)部需要多個(gè)獨(dú)立的Kubernetes集群,底層網(wǎng)絡(luò)和基礎(chǔ)設(shè)施應(yīng)該如何部署才能實(shí)現(xiàn)故障隔離?應(yīng)用如何在多個(gè)集群之間實(shí)現(xiàn)故障轉(zhuǎn)移?
@某銀行 技術(shù)經(jīng)理:
k8s應(yīng)用高可用的功能都是k8s本身完成的,如果需要做到集群間的單個(gè)應(yīng)用的高可用,應(yīng)該是要做高度定制,在容器云平臺(tái)上監(jiān)控應(yīng)用的狀態(tài),公用鏡像倉(cāng)庫(kù)。
@gavin_zhang 某股份制銀行 系統(tǒng)架構(gòu)師:
目前的一種實(shí)現(xiàn)方案是有應(yīng)用層來做跨集群的高可用方案,利用Euraka或是Zookeeper這種跨集群的管理中心,來實(shí)現(xiàn)應(yīng)用之間的跨集群調(diào)用。如果實(shí)現(xiàn)了服務(wù)網(wǎng)格(Service Mesh),可以考慮在Service Mesh層實(shí)現(xiàn)。
分享文章:Docker+k8s容器云建設(shè)中10個(gè)常見難點(diǎn)
分享網(wǎng)址:http://www.rwnh.cn/news37/203487.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、網(wǎng)站建設(shè)、建站公司、品牌網(wǎng)站制作、標(biāo)簽優(yōu)化、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容