主頁 >  其他 > 騰訊會議大規模使用Kubernetes的技術實踐

騰訊會議大規模使用Kubernetes的技術實踐

2020-09-17 15:31:04 其他

騰訊會議,一款提供靈活協作的線上會議解決方案,其中大量的模塊是有狀態服務,在使用Kubernetes為其進行容器化部署時,Pod升級需保持共享記憶體、長連接服務,升級時只容忍ms級抖動,需提供大規模分批灰度發布、業務配額控制等能力,并同時解決集群節點負載不均衡、上萬Pods的Workload的HPA性能差等問題,這里將向大家介紹TKEx容器平臺及其在灰度發布、資源管理、彈性伸縮等方面的能力,

海量規模下Kubernetes面臨的挑戰

在騰訊自研業務中,已經有幾百萬核跑在Kubernetes上,要在如此體量的容器場景提供可靠穩定的容器服務,無論在底層、集群能力、運營或運維等各個方面都面臨具體挑戰,

  1. 我們怎么進行容器可靠高性能的灰度發布? 尤其是在自研業務里面,大量的服務是有狀態的服務, 原生的Kubernetes StatefulSet已經無法滿足我們如此大規模的容器發布需求,
  2. 調度層面需要做哪些優化,從而保證在Pod漂移和重調度的程序中保證業務的穩定性,
  3. 在優化資源編排性能方面,如何在整個平臺層面和業務層面做好后臺管理,
  4. 在大規模的彈性伸縮方面如何提供高性能和全面的彈性伸縮能力,

TKEx容器平臺簡介

TKEx容器平臺的底層基于騰訊公有云的TKE和EKS兩個產品,它是使用Kubernetes原生的技術手段服務于騰訊內部的業務, 包括騰訊會議、騰訊課堂、QQ及騰訊看點等,TKEx在灰度發布、服務路由、彈性伸縮、容器調度、資源管理、多集群管理、業務容災、在離線混部等方面做了大量作業,比如:

  1. 通過Kubernetes API/Contoller/Operator的原生方式適配騰訊內部各種系統,比如服務路由系統、CMDB、CI、安全平臺等,
  2. 通過宣告式的方式,對所有的托管業務進行生命周期管理,
  3. 支持在線業務、大資料、AI等型別作業,
  4. 實作在線業務和離線業務的混合部署,同時提升整個資源的利用率,
  5. 通過優化linux的內核,增強資源底層隔離能力,
  6. 集成Tencent Cloud Mesh(TCM)服務為自研業務提供ServiceMesh服務,
  7. 在大規模的集群里面,對彈性伸縮的各種組件進行改造和優化,以保證它的性能和可用性,
  8. 基于業務產品維度,提供多租戶和配額管理能力,

下面是TKEx平臺縮略版的架構圖,僅包括本次討論的相關能力,

  1. 底層基于TKE和EKS兩個產品,在上層服務于在線業務、AI訓練以及大資料作業,
  2. 中間這四個框主要包括在應用和路由管理、資源編排調度、彈性伸縮、混部,下面會重點介紹其中前三個部分,

高效穩定的發布能力

業務沒有大規模使用StatefulSet的滾動更新能力,對于有狀態服務來說,原生的滾動更新機制的發布可控性太差,對于multi-zone容災部署的業務更是很難做精細化的發布策略,我們提供了分批灰度發布策略供有狀態服務使用,約80%的Workload都選擇了這種策略,

以一個業務分兩批進行發布為例,第一批升級兩個Pod,用戶可以指定是哪兩個Pod,也可以按照一定比例指定第一批是10%,由平臺自動選擇10%的Pod進行灰度,剩余Pods在第二批進行灰度,

  • 自動分批機制:如果Pod的探針完善且能真實反映業務是否可用,用戶可以使用自動分批機制,上一批次完成后可通過自定義的批次時間間隔和健康檢查機制自動進行下一批的灰度發布或者自動回滾,
  • 手動分批機制:用戶也可以通過手動分批機制,在上一批次灰度完成后,可人為在業務層面確認上一批的灰度是否成功,來決定是否觸發下一批灰度還是回滾,

分批灰度發布更安全、更可靠、更可控的特性,整個發布程序更靈活,由于單個批次內所有選中Pods的更新都是并發的,因此可以應付緊急快速發布的需求,

StatefulSetPlus是我們用來實作分批灰度發布的CRD,它繼承了Kubernetes原生的StatefulSet的所有能力,并在此之上新增和優化了大量特性,StatefulSetPlus主要提供的核心特性包括自動的以及手動的分批灰度發布,在發布例外時可以進行全量一次回滾或者分批次的回滾,Pod更新的策略支持兩種形式,一種是Pod重建的方式,另一種是Pod的原地升級方式,同時我們還提供了一些高級特性,比如:

  1. 支持Pod升級程序中保持Pod使用的共享記憶體資料不丟失,這個特性非常適合于像騰訊會議這樣的音視頻業務,
  2. 如果升級程序中觸發了Workload的擴容,那么擴容的時候會使用上一個好的版本進行擴容,而不是像原生的StatefulSet和Deployment一樣,使用最新的鏡像進行擴容,因為最新的鏡像版本有可能是不可用的,擴容出來的Pod可服務型存在風險,
  3. 在存盤編排方面,我們繼承了StatefulSet的Per Pod Per PV的特性,同時也支持Per Workload Per PV的特性,即單個StatefulSetPlus下面所有的Pod共享一個PV,也就是類似Deployment共享PV的模式,
  4. 在StatefulSet里面,當節點出現例外,比如出現了NodeLost的情況下,出于有狀態服務的可用性考慮,不會進行Pod重建,在StatefulSetPlus中,監聽到NodeLost后,對應的Pod會自動漂移,這還不夠,我們會通過NPD檢測,上報事件或Patch Condition快速發現節點例外,對StatefulSetPlus Pod進行原地重建或者漂移等決策,
  5. StatefulSetPlus還有一個非常重要的特性,就是它支持ConfigMap的版本管理以及ConfigMap的分批灰度發布,這是決定ConfigMap能否大規模在生產中使用的關鍵能力,

這里特別介紹一下,如何支持Pod升級程序中保持共享記憶體資料不丟失,并且在升級程序中,單個Pod只有毫秒級的服務抖動,主要的實作原理就是在Pod里面,通過一個占位容器和業務容器進行檔案鎖的搶占動作,來實作升級程序中兩個容器的角色進行快速切換,

動態的資源調度和管理

kubernetes的調度原生是使用靜態調度的方式,在生產環境會出現集群里面各個節點的負載不均衡的情況,并且造成很大的資源浪費,

動態調度器是我們自研的一個調度器擴展器,主要任務是平衡集群中各個節點真實的負載,在調度的時候,將各個節點的真實負載納入考量的范疇,

動態調度器必須要解決的一個技術點是調度熱點的問題,當集群中有一批節點負載比較低,這時用戶創建大量的Pod,這些Pod會集中調度到這些低負載的節點上面,這將導致這些低負載節點在幾分鐘之后又會成為高負載節點,從而影響這批節點上Pod的服務質量,這種現象尤其在集群擴容后很容易出現,我們自研的調度熱點規避演算法,極大的避免了某個節點因為低負載被動態調度器調度后成為延遲性的高負載熱點,極少數高負載節點在de-scheduler中會基于Node CPU的歷史監控進行節點降熱操作,,

我們希望能夠快速地感知集群的例外情況,包括kubelet例外、docker例外、內核死鎖以及節點是否出現檔案描述符即將耗盡的情況,從而能在第一時間去做決策,避免問題的惡化,其中快速發現這個動作是由Node Problem Detector(NPD)組件負責的,NPD組件是基于社區的NPD進行了大量的策略擴展,

NPD檢測到例外后,除了NPD組件本身對節點自愈的動作之外,de-scheduler還會基于例外事件和當前集群/Workload現狀協助進行動作決策,比如Pod驅逐、Container原地重啟,這里要重點提一下,我們基于Self演算法的分布式的Ping檢測,能夠快速發現節點的網路例外情況,由de-scheduler對網路例外節點上的Pods進行漂移,

在騰訊內部,產品的管理是分多個層級的,因此在配額管理方面,我們沒有使用Kubernetes原生的ResourceQuota機制,而是研發了DynamicQuota CRD來實作多層級的、動態的面向業務的Quota管理,

比如從業務維度,騰訊會議是一個產品、騰訊課堂是一個產品,每個產品下面都會有多級業務模塊,在做資源規劃和配額管理的時候,是基于產品維度的,在實際部署的時候,實際上Workload系結到對應的CMDB的最后一級模塊,所以,這里需要自動的將產品配額下發到CMDB多級模塊的機制,通過DynamicQuota不只是做資源使用上限的控制,更重要的是保證這個業務有這么多配額可以用,防止被其他業務搶占了,

當然這里還有一些關鍵問題,比如為了避免資源浪費,我們需要把一些產品的空閑資源借調給其他已經超過配額控制但是需要繼續使用更多資源的業務,這樣配額就有了靈活的彈性,

同時我們也利用了DynamicQuota控制在線業務和離線業務占用資源的比例,主要是為了保證在線業務始侄訓有一定的配額可以使用,防止離線業務無限制侵占整個平臺的資源,同時也能更好的控制集群負載,

大規模和高性能的彈性伸縮

在擴縮容方面,這里主要介紹縱向擴縮容和橫向擴縮容做的作業,社區的VPA不太適合很多騰訊的自研業務,因為擴縮容都是基于Pod的重建機制,在擴容效果和對業務的感知方面,都不是很好,

我們自研了Vertical Workload AutoScaler (VWA) CRD用于Pod的垂直擴縮容,主要解決的問題是:

  1. 當業務出現突發流量的時候,HPA擴容不及時,導致下面Pod的資源利用率暴漲,進而引發業務的雪崩,VWA有更快的回應速度,并且不需要重建Pod,因此比HPA更快更安全,
  2. 業務在使用容器規格的時候,經常把容器規格配置得比較高,Pod資源使用率會比較低,通過VWA自動進行降配,優化資源利用率,
  3. 當節點出現高負載的情況下,這個節點上面跑著在線和離線業務,我們會通過VWA快速地對離線業務容器進行在線降配,從而保證在線業務的服務質量,

這里面核心的特性,包括提供原地升級容器規格的能力,而不需要重建Container,性能上做了優化,單集群能支持上千個VWA物件的擴縮容,同時也支持VWA的個性化配置,比如可以配置每一個VWA物件的回圈同步周期,每次擴容的最大比例以及縮容的最大比例等,

最后再介紹一下在HPA方面我們做的作業,Kubernetes原生的HPA Controller是內置在kube-controller-manager里面的,它存在著以下缺陷:

  1. 它不能獨立部署,如果集群中有成千上萬的HPA物件,原生HPA Controller是很難承受的,穩定性也直接受限于kube-controller-manager,
  2. 另外在性能方面,原生HPA Controller在一個協程里面遍歷所有HPA物件,所以在大規模HPA場景下,同步實時性得不到保證,

我們自研了一個HPAPlus Controller,它兼容了原生的HPA物件,然后可以獨立部署,在性能方面類似VWA一樣做了很多性能優化,同時豐富了每個HPA物件可自定義的配置,比如同步周期、擴容比例、容忍度等,

HPAPlus-Controller還實作了與CronHPA和VWA進行聯動決策,比如當VWA持續擴縮容達到了所屬節點的上限,無法繼續擴容的時候,這個時候會自動托管給HPA觸發橫向擴容,

總結

騰訊自研業務海量規模,除了文中介紹到彈性伸縮、調度和資源管理、灰度發布等方面面臨的挑戰外,我們還在多集群管理、在離線混部、ServiceMesh、異構計算、AI/大資料框架支持等多方面做了大量作業,另外,TKEx底層正在大量使用EKS彈性容器服務來提供更好的容器資源隔離能力、彈性能力,以實作真正的零集群運維成本和高資源利用率的目標,

【騰訊云原生】云說新品、云研新術、云游新活、云賞資訊,掃碼關注同名公眾號,及時獲取更多干貨!!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/66545.html

標籤:其他

上一篇:二叉樹中的最大路徑和(遞回實作)

下一篇:removebg圖片換背景_Python版

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more