Rancher 和知乎超大規(guī)模多集群管理聯(lián)合實(shí)踐

作者:趙夢(mèng)@知乎 唐陽(yáng)@知乎

來(lái)自知乎的分享:如何通過(guò)Rancher對(duì)大規(guī)模集群進(jìn)行性能調(diào)優(yōu),提升75%訪問(wèn)速度?

源起

知乎是中文互聯(lián)網(wǎng)高質(zhì)量的問(wèn)答社區(qū),每天有上千萬(wàn)用戶在知乎分享知識(shí)、經(jīng)驗(yàn)和見解,找到自己的答案。為配合不同階段的業(yè)務(wù)發(fā)展需求,知乎容器平臺(tái)也在不斷演進(jìn)、提升,目前幾乎所有的業(yè)務(wù)都運(yùn)行在容器上。

這兩年知乎開始使用 Rancher 管理 Kubernetes 集群,集群規(guī)模逐步達(dá)到近萬(wàn)節(jié)點(diǎn)。本文將介紹 Rancher 如何針對(duì)大規(guī)模集群進(jìn)行性能調(diào)優(yōu),最終訪問(wèn)速度提升 75%,達(dá)到頁(yè)面訪問(wèn)體驗(yàn)可用的狀態(tài)。

對(duì)于為什么會(huì)選擇 Rancher作為我們的容器管理平臺(tái),大致原因有以下幾點(diǎn):

我們的業(yè)務(wù)部署在國(guó)內(nèi)多家公有云 Kubernetes 上,需要統(tǒng)一的平臺(tái)來(lái)管理這些 Kubernetes 集群,而 Rancher 針對(duì)國(guó)內(nèi)的公有云 Kubernetes 平臺(tái)兼容性非常友好。

Rancher 降低了 Kubernetes 集群的部署和使用門檻,我們可以借助 Rancher UI 輕松納管和使用各個(gè) Kubernetes 集群。不是很深入了解 Kubernetes 的研發(fā)同學(xué)也可以輕松創(chuàng)建 Deployment、Pod、PV 等資源。

我們可以借助 Rancher Pipeline 在內(nèi)部實(shí)現(xiàn) CI/CD,使研發(fā)專注于業(yè)務(wù)應(yīng)用的開發(fā)。盡管 Rancher 團(tuán)隊(duì)告知 Pipeline 已經(jīng)停止維護(hù),但是它的簡(jiǎn)潔依然符合我們內(nèi)部對(duì) CI/CD 的定位。

Rancher 的持續(xù)創(chuàng)新能力,還有圍繞著 Kubernetes 進(jìn)行了一系列的生態(tài)擴(kuò)展及布局,比如:輕量級(jí) Kubernetes 發(fā)行版 k3s、Kubernetes 的輕量級(jí)分布式塊存儲(chǔ)系統(tǒng) Longhorn、基于 Kubernetes 的開源超融合基礎(chǔ)設(shè)施 (HCI) Harvester、以及 Rancher 的下一代 Kubernetes 發(fā)行版 RKE2。跟隨頭部創(chuàng)新廠商,對(duì)團(tuán)隊(duì)的持續(xù)進(jìn)步也是大有益處。

Rancher 作為國(guó)際化的容器廠商,在國(guó)內(nèi)有非常專業(yè)的研發(fā)團(tuán)隊(duì),溝通交流非常便捷。很多問(wèn)題都可以在 Rancher 中文社區(qū)中找到答案,對(duì)于開源且免費(fèi)的平臺(tái)來(lái)說(shuō),可以說(shuō)是非常良心了。

迷局

起初,我們?cè)谑褂?Rancher 管理中小規(guī)模集群時(shí),Rancher UI 提供的功能幾乎可以滿足我們所有的需求,并且 UI 也非常流暢。

但隨著業(yè)務(wù)量的增加,集群規(guī)模不斷的擴(kuò)大,當(dāng)我們擴(kuò)大到使用一個(gè) Rancher 管理近十個(gè)集群、近萬(wàn)節(jié)點(diǎn)和幾十萬(wàn) pod 時(shí)(單集群最大規(guī)模將近幾千個(gè)節(jié)點(diǎn)和數(shù)十幾萬(wàn) pod),操作 Rancher UI 頻繁會(huì)出現(xiàn)卡頓并且加載時(shí)間過(guò)長(zhǎng)的問(wèn)題,個(gè)別頁(yè)面需要 20 多秒的時(shí)間才能完成加載。嚴(yán)重時(shí)可能會(huì)造成連接不到下游集群的情況,UI 提示“當(dāng)前集群 Unavailable ,在 API 準(zhǔn)備就緒前,直接與 API 交互功能不可用。”

Rancher 和知乎超大規(guī)模多集群管理聯(lián)合實(shí)踐

沒錯(cuò),我們碰到了 Rancher 的性能問(wèn)題。尤其是超級(jí)管理員用戶,登錄時(shí)需要加載的數(shù)據(jù)量較大,基本上UI處于一種不可用的狀態(tài),下游集群也斷連頻繁。

破曉

從上面的現(xiàn)象來(lái)看,使用 Rancher 管理超大規(guī)模集群似乎遇到了性能問(wèn)題,影響了使用體驗(yàn)。隨后尋求 Rancher 本土技術(shù)團(tuán)隊(duì)幫忙,經(jīng)過(guò)幾次高效的線上會(huì)議溝通,基本找到根本原因:

雖然我們的集群數(shù)量不多,但是所有集群節(jié)點(diǎn)總量并不小。頁(yè)面加載時(shí),依賴 node list 接口獲取數(shù)據(jù)(此node為 Rancher 創(chuàng)建的一種特殊CRD,它與實(shí)際下游集群的節(jié)點(diǎn)數(shù)有關(guān)),該接口處理時(shí)間較長(zhǎng),引起頁(yè)面加載緩慢。

我們的下游集群中,主要以公有云的 Kubernetes 為主,這些集群通過(guò)導(dǎo)入方式納管到Rancher 中。這種納管模式下,Rancher Server 通過(guò)與 cluster-agent 建立的 Tunnel,訪問(wèn)下游集群的 Kube API,但是這里并非直接訪問(wèn),而是走 Tunnel 到 Kubernetes Service IP 訪問(wèn)(如10.43.0.1:443)最終負(fù)載到多個(gè) Kube-api server。通常這種模式并沒有問(wèn)題,但是由于我們的訪問(wèn)量和數(shù)據(jù)量都比較大,SVC IP 轉(zhuǎn)發(fā)能力無(wú)法支撐,嚴(yán)重影響了通信效率。

經(jīng)了解,如果要通過(guò)社區(qū)版解決該問(wèn)題,操作會(huì)相當(dāng)復(fù)雜。但企業(yè)版 Rancher 已經(jīng)針對(duì)性能優(yōu)化有了一套成熟的方案和策略,以下是 Rancher 工程師介紹的關(guān)于企業(yè)版和社區(qū)版 Rancher 的區(qū)別:

(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來(lái)自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說(shuō)明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )