黃玉奇:華為CCE在混合云、大規(guī)模集群場景下的技術(shù)探索
杭州是一座極有包容性的城市,古韻清雅的街道景點(diǎn)隨處可見,現(xiàn)代建筑群設(shè)計(jì)感十足,傳統(tǒng)底蘊(yùn)與現(xiàn)代科技被這座古城兼容并蓄,***融合。HDG華為開發(fā)者匯,就將杭州作為第四站,5位講師***揭秘華為的CloudOpera、PaaS、融合視頻3個(gè)生態(tài)圈,技術(shù)干貨無私分享,聽眾疑問現(xiàn)場解答,思想的小火花一直在碰撞,參會的開發(fā)者大呼過癮。
“一談到容器,很多友誼的小船說翻就翻了。”華為PaaS開發(fā)部高級工程師黃玉奇幽默地開了場。他著重向開發(fā)者介紹了Kubernetes在混合云、大規(guī)模場景下的集群管理訴求。
現(xiàn)場實(shí)錄如下:
這么熱的天,大家能趕到華為的開發(fā)者會,特別感謝大家。同時(shí)也感謝活動各位組織的伙伴們。我是華為CCE的黃玉奇,現(xiàn)在主要做華為CCE的設(shè)計(jì)開發(fā)的工作,同時(shí)也是Kubernetes社區(qū)小小的貢獻(xiàn)。華為CCE的全稱就是云、容器、引擎,簡單給大家介紹一下。今天跟大家一起分享的題目是華為CCE在混合云大規(guī)模場景下的一個(gè)技術(shù)探索。
分享主要從四塊說起,首先跟大家溫習(xí)一下什么是容器,什么是容器服務(wù)。第二個(gè)我們看一下現(xiàn)在有一個(gè)開源容器的明星,Kubernetes一些經(jīng)典的應(yīng)用模型,包括它的架構(gòu)。第三塊是我們CEE在華為IT系統(tǒng)里面的實(shí)踐,以及面臨的一些挑戰(zhàn)。***會跟大家分享一下我們在Kubernetes社區(qū)里面貢獻(xiàn)的集群聯(lián)邦的技術(shù)細(xì)節(jié)。
大家看這幅圖有點(diǎn)蒙了,現(xiàn)在在我們小圈子里有一句話說,一言不合就要講容器,講容器的時(shí)候就會擺上一些大大的集裝箱,我不知道為什么。在60年代的之前全球的運(yùn)輸主要以散貨的運(yùn)輸方式來進(jìn)行的,大部分的時(shí)間都集中在裝載、卸載,再裝載、再卸載上面。有人就會問了,我們?yōu)槭裁床荒馨堰@些貨物都集中放到一些大箱子里面,我們只來做這些箱子的運(yùn)輸。伴隨著這個(gè)問題,集裝箱技術(shù)就出現(xiàn)了,集裝箱技術(shù)出現(xiàn)之后,大約節(jié)省了六分之一的人力和三分之一的運(yùn)輸時(shí)間。
這里我們就做了一個(gè)容器技術(shù)和集裝箱的對比,為什么我們總喜歡把容器和集裝箱放在一起比。***個(gè)它是一個(gè)內(nèi)容無關(guān)性,集裝箱的東西都有這個(gè)特征,內(nèi)容無關(guān)性。我不管你這個(gè)箱子里放的什么物品,或者對我們?nèi)萜骷夹g(shù)來說我不管你放的什么負(fù)載或者什么應(yīng)用。第二個(gè)就是硬件無關(guān)性,我的集裝箱可以通過火車、卡車或者輪船來運(yùn)輸,當(dāng)然我們的容器也可以跑在物理機(jī)、虛擬機(jī)、筆記本或者服務(wù)器當(dāng)中。
***一個(gè)我想提的是它的效率問題,集裝箱能解決我們運(yùn)輸?shù)男?,容器它能解決我們應(yīng)用的開發(fā)部署,包括運(yùn)維的效率。
說到容器,我們不得不說容器里面的一個(gè)明星了,Docker,在我理解Docker并不是在它的技術(shù)上有多么的先進(jìn),而是說它給我們帶來一個(gè)統(tǒng)一的認(rèn)識,我們可以通過Docker鏡像來實(shí)現(xiàn)應(yīng)用的開發(fā)、部署、運(yùn)維,最終它的這種極大的便利性,形成一個(gè)穩(wěn)定的Docker生態(tài),其實(shí)它最有價(jià)值的地方就是Docker生態(tài)。我們有一個(gè)問題就要說了,任何一個(gè)復(fù)雜的應(yīng)用并不是以獨(dú)立的Docker容器能夠解決問題的,通常是一組,或者是一堆的Docker容器相互協(xié)同,才能完成某一個(gè)特定的完整的應(yīng)用站。這里我不得不說一個(gè)容器服務(wù),一個(gè)可用的容器服務(wù)都需要哪些要素呢?***個(gè)就是基礎(chǔ)架構(gòu),我一個(gè)容器服務(wù)解決資源的編排,資源的管理,包括一些在外圍的負(fù)載均衡,服務(wù)的注冊發(fā)現(xiàn),租戶方面的能力。第二個(gè)就是監(jiān)控運(yùn)維的能力,就是我的應(yīng)用在容器服務(wù)商要能夠提供對容器應(yīng)用,或者集群不同維度的狀態(tài)的監(jiān)控。此外還有一些日志的分析,應(yīng)用的升級。***一個(gè)就是外圍的支持,包括一些代碼庫,經(jīng)銷商庫一些能力的支持。
當(dāng)前不管在開源界,還是在國內(nèi)外一些重大的IT廠商,都會有一些容器服務(wù)的產(chǎn)品,像開源的有Docker,在國內(nèi)外有些大的IT廠商里面也有很多的容器的產(chǎn)品,華為CCE就是基于Kubernetes做的容器服務(wù)的產(chǎn)品。這里我重點(diǎn)想跟大家分享一下Kubernetes經(jīng)典的模型和它的典型的架構(gòu)。
Kubernetes其實(shí)是谷歌開源容器集群的環(huán)境系統(tǒng),它構(gòu)建在Docker的基礎(chǔ)之上,主要是為容器化的應(yīng)用提供了應(yīng)用的部署,服務(wù)的發(fā)現(xiàn),擴(kuò)容縮容一整套的功能。下面我們看一下Kubernetes里面基本的概念,從這個(gè)圖里面可以看到,節(jié)點(diǎn)上運(yùn)行了Kubernetes大部分的控制面的主件,里面主要是KubernetesAPIserver、調(diào)度器,還有一些資源管理控制器。下面兩個(gè)是它的slive節(jié)點(diǎn),slive節(jié)點(diǎn)就是應(yīng)用真正運(yùn)行的地方。它上面運(yùn)行了Kubernetes控制面的兩個(gè)主件。在Kubernetes里面有一些應(yīng)用的模型,這邊我有列。***個(gè)就是pod,pod它對應(yīng)的Kubernetes里面一個(gè)最小的部署單元,它其實(shí)就是一組容器的集合。第二個(gè)想介紹一下的是副本控制器,主要就是包括我在KPI集群里面有固定數(shù)目的在運(yùn)行。第三個(gè)就是service,service后端真實(shí)pod訪問的問題。還不得不提的是一個(gè)label的概念,因?yàn)樵趉ps里面,各種資源之間的管理,或者它的觀點(diǎn)和查詢都是通過label來解決的。
我們來展開講一下Kubernetes里面的幾個(gè)基本概念,***個(gè)就是pod,大家聽的最多的就是pod的概念,pod在KPI里面是最小的部署調(diào)度的單元,它是一組容器的組合,不是一個(gè)單獨(dú)的容器。pod里面的容器它們共享這相同的網(wǎng)絡(luò)運(yùn)營空間、IP地址,包括數(shù)據(jù)卷,所以在這個(gè)pod里面多個(gè)容器可以相互的訪問。這里就有一個(gè)問題了,pod需要手動上線嗎,或者在pod生命周期里面誰來維護(hù)pod的生命周期。這里面對應(yīng)了Kubernetes的另外一個(gè)概念,叫做副本控制器,副本控制器通過label或者一組pod做一些關(guān)聯(lián),它能維持在我的KPI集群里面一個(gè)固定數(shù)目的pod的運(yùn)行。當(dāng)我的pod的數(shù)量超過了我的副本控制器里面指定數(shù)量的時(shí)候,副本控制器就會揍掉一些,如果少的話,我就會重新再啟動一些。此外它能夠解決pod擴(kuò)容和縮容的問題。這里面我要提到一下,創(chuàng)建一個(gè)IC的時(shí)候,我需要指定哪兩個(gè)東西,***個(gè)就是pod的模板,相當(dāng)于是一個(gè)pod的描述文件。第二個(gè)就是label,label主要就是解決我的副本控制器跟pod之間的管理關(guān)系。在講副本控制器的時(shí)候我們也提到,pod會不斷的被副本控制器重新啟動,或者把它Q掉。也就是說我的pod在后端是不斷變化的,是一個(gè)動態(tài)的。那么我們怎么解決pod,或者我某一個(gè)應(yīng)用對用戶訪問的問題,因?yàn)槲以诤笈_是不斷變化的,Kubernetes有一個(gè)service的概念。
service的引用它就為了解決我的用戶對后端pod訪問的透明化,我只需要知道我的service在哪里,由service來將這個(gè)流量導(dǎo)向我后面支持的pod。我們可以簡單理解,它就是一個(gè)虛IP,做了一個(gè)LD。它可以把外部的流量進(jìn)來之后,把這個(gè)流量按照一定的規(guī)則,對后臺支持的pod做了一個(gè)簡單的流量分發(fā)。當(dāng)前KPI對service還是一個(gè)四層的LB。但是在Kubernetes在EDL版本,也引用了資源對象,主要是解決后端七層的LB的問題。在KPI集群里面我們這個(gè)服務(wù),它的服務(wù)發(fā)現(xiàn)通過兩種方式。Kubernetes里面自帶了一個(gè)DNS的組建,解決了我們服務(wù)發(fā)現(xiàn)的問題。這是Kubernetes的三個(gè)很重要的概念,因?yàn)樵谖覀兒竺嬷v述集群聯(lián)邦的時(shí)候會用到這幾個(gè)概念。
下面主要想給大家一起看一下Kubernetes基礎(chǔ)的架構(gòu)。前面我們說到了它是一個(gè)典型的(10:30)的結(jié)構(gòu),在節(jié)點(diǎn)上運(yùn)行了很重要的一個(gè)組建,就是API的服務(wù)器,主要是對外提供服務(wù),來供用戶對資源進(jìn)行增查改查,包括words的操作。它后端對接的是一個(gè)CD,做私有化存儲。我還會有一些認(rèn)證,授權(quán)的模塊,然后最終的用戶他的訪問流量是通過ACPI進(jìn)入到我的APiservice里面。第二個(gè)主要組建就是調(diào)度器,調(diào)度器解決的問題主要就是,根據(jù)一些調(diào)度策略,來決定我的pod真正的被部署到哪個(gè)node上,它里面的調(diào)度策略是可插拔的調(diào)度策略。這里面主要有一些親和性,或者反親和的調(diào)度算法。第三個(gè)重要的控件的組建是控制器管理器,這里面主要是針對Kubernetes每種資源所做的控制器,它能夠相應(yīng)Kubernetes里面的資源變化,因?yàn)槊恳粋€(gè)資源變化都對應(yīng)了一個(gè)資源變化的事件,這個(gè)事件最終是由我的控制器管理器比別人的控制器去消費(fèi)的,來做不同的動作。大概這里面的東西我給大家列舉一下,有node的控制器,副本的控制器,等等??刂泼娴慕M件,主要是解決了容器的生命周期管理的問題,包括我容器的啟動、創(chuàng)建、刪除、更新這些東西。Kubernetes本身也提供一個(gè)restAPI服務(wù),會將這些運(yùn)維服務(wù)通過自身的restAPI,供外面的用戶查詢。當(dāng)前主要的應(yīng)用場景是Kubernetes提供一個(gè)restAPI,***將所有的運(yùn)維數(shù)據(jù)做一個(gè)不同維度的聚合。第二個(gè)slive節(jié)點(diǎn)上的控制件組件是pods組件,顧名思義這個(gè)pods主要是給pod做一些流量分發(fā),主要是結(jié)合我們前面提到的service的概念,來運(yùn)行的,來開展工作的。這里是Kubernetes的基礎(chǔ)架構(gòu),大家有點(diǎn)印象,因?yàn)槲以诤竺嬷v到Kubernetes聯(lián)邦集群的時(shí)候,可能會重復(fù)一下里面的一些概念。
我們可以看到Kubernetes會有很多線連到APIservice里面,這里面我要講一下Kubernetes里面有一個(gè)list-watch的機(jī)制,它主要是解決Kubernetes里面異步通信的問題。這個(gè)list-watch還是基于ECD的Kubernetes的能力,通過APIservice做了一層封裝,對外提供的。這里有一個(gè)簡單的例子,用戶創(chuàng)建一個(gè)應(yīng)用之后,或者創(chuàng)建一個(gè)資源之后,會在APIservice里面有一個(gè)相應(yīng)的資源,我就會有相應(yīng)的資源,獲取到資源的變化,可以做一些相應(yīng)的動作處理。這里就不展開了。
第三塊主要想講講CCE在基于Kubernetes這個(gè)開源的解決方案上,怎么來去實(shí)現(xiàn)在華為IT系統(tǒng)里面的技術(shù)挑戰(zhàn)。華為的CCE主要還是以Kubernetes,或者docker,以核心技術(shù)構(gòu)建,主要想打通原有的在IaaS、PaaS或者CaaS這個(gè)端到端打通的融合方案。我們的愿景是能夠解決跨境應(yīng)用的集中部署的管理,混合資源的編排,開發(fā)測試生產(chǎn)環(huán)境的一致性,再集成我們?nèi)A為這么多年電信領(lǐng)域的中間件,或者把這個(gè)中間件做一些容器化的操作。
隨著業(yè)務(wù)的開展,現(xiàn)在我們?nèi)A為CCE上了各種各樣的生產(chǎn)環(huán)境,我們也開始面臨越來越多來自生產(chǎn)環(huán)境上的挑戰(zhàn)。***個(gè)就是規(guī)模問題,這邊有一個(gè)統(tǒng)計(jì),2015年的統(tǒng)計(jì)數(shù)據(jù),我們中間件云里面,以DC為單位,我們業(yè)務(wù)量是快速增長的趨勢,這是一個(gè)規(guī)模的問題。第二個(gè)就是業(yè)務(wù)的頻繁發(fā)布,現(xiàn)在我們很多傳統(tǒng)業(yè)務(wù)的平臺不支持快速的迭代,就是說我們業(yè)務(wù)上線效率特別的低,希望能夠通過我們?nèi)A為CCE,在基于容器基礎(chǔ)上,能夠解決他們業(yè)務(wù)頻繁發(fā)布的問題。第三個(gè)就是冗余部署,我們希望能夠解決一些同城雙活、混合云、異地容災(zāi)這么一些問題。因?yàn)楝F(xiàn)在我們的應(yīng)用是在VM下,希望通過容器來解決這個(gè)問題,提高我們資源利用率的問題。第三個(gè)就是容器化、微服務(wù)化的改造,這里是華為CCEKubernetes提供的基礎(chǔ)的能力,容器化管理部署的能力。
面臨的挑戰(zhàn)我們也做了很多的技術(shù)探索,我們在華為公司內(nèi)部也做了一些Kubernetes的性能提升,包括調(diào)度啊,各方面的性能提升的技術(shù)探索。今天想跟大家分享的是探索的一個(gè)方面,就是Kubernetes聯(lián)邦集群的一個(gè)點(diǎn)。它主要能夠解決一些什么問題呢?***個(gè)高可用,我們知道Kubernetes本身是一個(gè)單機(jī)性部署的,如果我們想解決在集群這個(gè)維度的單點(diǎn)故障的問題,就是在AZ級別,或者云提供商級別的這么一些單點(diǎn)的問題。第二個(gè)就是我希望能夠安全集群的特性做一些應(yīng)用調(diào)度,可能我希望我的應(yīng)用被調(diào)度到一些云提供商上面,AWS上面。第三個(gè)就是集群間應(yīng)用的自動遷移,就是當(dāng)我某一個(gè)集群的容量溢出了,我希望能夠把上面一些應(yīng)用自動的遷移到其他的界面上面,用戶不感知。第四個(gè)是混合云的部署,我們希望將能負(fù)載部署到不同的云服務(wù)提供商上面,能夠做到一些自動遷移,或者業(yè)務(wù)量的自動的增加減少。第五個(gè)是為了解決當(dāng)前Kubernetes面臨的比較嚴(yán)峻的問題,Kubernetes的規(guī)模問題。我們也知道現(xiàn)在Kubernetes發(fā)布了1.3版本,對外宣稱能支持到2000節(jié)點(diǎn),但是2000節(jié)點(diǎn)在我們生產(chǎn)環(huán)境上,這個(gè)能力還是略微顯得比較薄弱的。所以我們想通過聯(lián)邦這么一個(gè)技術(shù)點(diǎn),去解決Kubernetes本身的規(guī)模問題。
下面我們把Kubernetes聯(lián)邦打開,給大家分享一下。這個(gè)是集群聯(lián)邦的一個(gè)架構(gòu),大家看這個(gè)圖可能覺得跟我們前面講的Kubernetes本身的架構(gòu)有些相似。我們這里也是附用了Kubernetes(18:45)的機(jī)制,實(shí)現(xiàn)了組建結(jié)藕的架構(gòu)。其實(shí)這個(gè)架構(gòu)我們發(fā)現(xiàn)它的控制面也包括一個(gè)聯(lián)邦級別的APIservice,還是附用了ECD作它的私有化存儲,能夠?qū)拥谌揭恍┱J(rèn)證健全的功能。在功能面上我們還是有一個(gè)聯(lián)邦級別的調(diào)度器,它來解決應(yīng)用在不同集群之間的一個(gè)調(diào)度問題。當(dāng)然它也支持親和性、反親和性這些基礎(chǔ)的調(diào)度能力。第三個(gè)重要的組件是聯(lián)邦級別的資源控制器、管理器,里面也包括了聯(lián)邦級別的資源的控制器?,F(xiàn)在聯(lián)邦我們引入了三種資源。下面就是聯(lián)邦管轄的Kubernetes的集群,原生的Kubernetes集群。對應(yīng)到聯(lián)邦的資源剛才也提到過,本身Kubernetes原生的集群在聯(lián)邦維度對應(yīng)的是Cluster的這么一種資源。這里大家先有一個(gè)印象,后面我們在聯(lián)邦不同的應(yīng)用場景下面會把這個(gè)圖再給大家做一個(gè)展開。
***個(gè)就是聯(lián)邦上的應(yīng)用創(chuàng)建,這里可能會跟Kubernetes原生有一點(diǎn)點(diǎn)的區(qū)別,Kubernetes我們知道它最小的應(yīng)用部署單元是pod,或者一組容器。它對我們聯(lián)邦來講,它的最小的部署單元是RS,或者一個(gè)RC,叫做一個(gè)副本控制器。應(yīng)用部署之主要解決的是我這個(gè)RS在聯(lián)邦層級調(diào)度的問題,它調(diào)度主要解決了一個(gè)RS拆分的問題,要根據(jù)我下面集群的負(fù)載能力,或者根據(jù)一些親和結(jié)合策略,把這個(gè)RS做一些拆分。所以***步我的聯(lián)邦使用者還是通過聯(lián)邦暴露出來的API,它來提供一個(gè)創(chuàng)建應(yīng)用的請求。首先我會把這個(gè)應(yīng)用劃到聯(lián)邦的ECD里面。我有一個(gè)聯(lián)邦的集群的控制器,會周期性的采集我聯(lián)邦負(fù)載的數(shù)據(jù),或者它的健康狀態(tài),然后供聯(lián)邦的調(diào)度器做一些調(diào)度的決策。對應(yīng)到調(diào)度器的行為,它會把RS的副本數(shù)按照集群的維度做一些拆分。我們這里的假定場景,我ClusterB的容量可能比A要大,我就會把應(yīng)用的副本數(shù)拆成2A3,對應(yīng)關(guān)系是2到ClusterA上面,3到ClusterB上面。最終還是由聯(lián)邦的資源控制器調(diào)下面集群的應(yīng)用創(chuàng)建的接口,把這個(gè)應(yīng)用在各個(gè)集群里面創(chuàng)建出來。當(dāng)然它還會負(fù)責(zé)應(yīng)用狀態(tài)周期性的查詢,最終會通過APIservice向用戶提供我這個(gè)應(yīng)用狀態(tài)的查詢。
這里面就把調(diào)度器打開了一下,這個(gè)聯(lián)邦調(diào)度器會感知下面各個(gè)子集群的變化,包括我各個(gè)子集群的容量、負(fù)載,供它自己生成一些調(diào)度策略。第二它要能夠看到我當(dāng)前應(yīng)用里面,或者我的聯(lián)邦維度有哪些應(yīng)用沒有被調(diào)度,通過過濾出字段檢查我這些應(yīng)用有哪些沒有被調(diào)度,放到本地的調(diào)度的隊(duì)列里面再調(diào)度。第三個(gè)就是根據(jù)***步獲取到的每個(gè)集群的容量啊,負(fù)載的信息,生成它的調(diào)度策略,其實(shí)也就是對我這個(gè)應(yīng)用的副本做一些拆分。***它會把這個(gè)調(diào)度結(jié)果寫回到我的集群聯(lián)邦的APIservice里面,供我的應(yīng)用控制器去調(diào)下面子集群的接口,去創(chuàng)建它的應(yīng)用。
在我的聯(lián)邦調(diào)度器里面也有一些親和性和反親和的考慮,我希望我的應(yīng)用能夠部署到某些屬性的集群里面,或者我的同一個(gè)應(yīng)用不同實(shí)例,我希望在不同的集群里面做一些不同的部署,去解決我的一個(gè)高可靠的問題。
前面說的比較慢,后面說的快一些。這個(gè)主要是應(yīng)用跟集群之間親和和反親和的調(diào)度,我通過跟不同集群打一些標(biāo)簽,決定我某些應(yīng)用會部署到某個(gè)特定的集群上面。我這里面應(yīng)用A的應(yīng)用,包括了集群1和集群2標(biāo)簽的選擇性,我應(yīng)用A就會被拆分到集群1和集群2上面。應(yīng)用B類似的會拆分到我的集群2到集群3上面。這是應(yīng)用跟應(yīng)用之間的親和的調(diào)度,如果我的應(yīng)用B和應(yīng)用A之間有些依賴關(guān)系,我為了解決在不同集群間的網(wǎng)絡(luò)消耗,會盡量鋪到一個(gè)集群里面。這里面可以支持一些硬親和和軟性的親和。
這個(gè)就是前面提到過的,主要是集群的控制器和副本的控制器,前面功能剛才也講到過。***一個(gè)很關(guān)鍵的點(diǎn),就是集群聯(lián)邦下的服務(wù)發(fā)現(xiàn),剛才我在前面講到過Kubernetes服務(wù)主要是解決后端應(yīng)用的訪問問題,里面主要是解決聯(lián)邦場景下的應(yīng)用的訪問問題,包括跨集群的訪問。首先用戶會創(chuàng)建一個(gè)服務(wù),主要目的還是為了通過這個(gè)服務(wù)訪問分布在不同的集群上的應(yīng)用的訪問問題。我的聯(lián)邦的服務(wù)控制器會感知到這個(gè)服務(wù)的創(chuàng)建,會在下面各個(gè)子集群里面都會創(chuàng)建這么一個(gè)服務(wù)實(shí)例。這里會有一個(gè)默認(rèn)的選項(xiàng),包括我的每個(gè)集群里面會有一個(gè)負(fù)載均衡器跟大家做一下關(guān)聯(lián)。這個(gè)服務(wù)控制器會在我各個(gè)子集群里面創(chuàng)建一種服務(wù),我的應(yīng)用流量會從一個(gè)全球的分布式路由這邊過來,首先會做一層Kubernetes集群維度的流量分發(fā),然后這個(gè)集群里面的LB會把這個(gè)流量再進(jìn)一步的分發(fā)到我應(yīng)用后端對應(yīng)的真實(shí)的POD上面。
這個(gè)是現(xiàn)在Kubernetes社區(qū)1.3版本的集群聯(lián)邦的功能展示,我稍微給大家介紹一下它的背景。我現(xiàn)在在GKE的四個(gè)區(qū),我分別有四個(gè)集群,我希望通過集群聯(lián)邦把這四個(gè)集群管理起來,并且能夠在我這四個(gè)集群里面分別創(chuàng)建我聯(lián)邦級別的服務(wù),通過訪問這個(gè)服務(wù)可以把我的流量按照一些流量分發(fā)的策略,分發(fā)到我不同的集群里面。***步就是創(chuàng)建集群。第二件事就是把我這個(gè)聯(lián)邦的控制面部署在其中某個(gè)集群里。第四步就是把我的個(gè)集群放到集群聯(lián)邦里面。這里可以查一下我當(dāng)前各個(gè)集群的狀態(tài),第二步就是創(chuàng)建一個(gè)聯(lián)邦的服務(wù),當(dāng)你在集群聯(lián)邦這里創(chuàng)建一個(gè)服務(wù)之后,我下面各個(gè)子集群都會有一個(gè)被創(chuàng)建。這個(gè)時(shí)候我的效果是什么呢,我通過分布在不同的集群的服務(wù)的訪問,可以按照就近的原則,把這個(gè)流量導(dǎo)到某個(gè)指定的集群上面。
集群聯(lián)邦大概就分享到這里,后面說的比較快,有什么問題大家可以討論。我打個(gè)廣告,現(xiàn)在華為CCE在Kubernetes集群的貢獻(xiàn),大概有四百家的提交次數(shù),全球能夠達(dá)到第四,國內(nèi)基本穩(wěn)坐***把交椅。包括docker的貢獻(xiàn),也差不多是這么一個(gè)位置。我今天的演講大概到這里結(jié)束。