背景
在云原生領域,Serverless 已然是大勢所趨,相比 Serverful 模式(基于云服務器集群的K8s運維模式),Serverless 模式屏蔽了資源概念,大幅提升運維效率,用戶無需介入底層運維:像作業系統的安全補丁升級這樣的動作,判斷升級時機 - 升級前置檢查 - 無損分批升級全部都由平臺自動倍訓,但 Serverless 真的適合所有場景么?其實不然,
- Serveless 改變了運維習慣,例如集群出現業務故障時無法登錄節點排查
- Serverless 業界實作無統一標準,對接復雜度高
- Serverless 對于客戶的計費習慣、成本管理習慣、分賬習慣也有很大的挑戰
Serverless 和 Serverful 的完美平衡
我們一直在思考,有沒有一種產品形態可以同時兼顧 Serverlful 和 Serverless 的優點呢?在長期的用戶實踐中,我們發現一個很有意思的現象:用戶希望云廠商提供足夠資訊,幫助客戶判斷,但并不希望廠商替他們做決策,對“托管”這種概念表現出明顯的排斥,因為“托管”似乎代表完全脫離了客戶的控制,用戶更期待一種類似管家的角色,夠聰明,但是不越權,
因此,我們范訓出了一種節點運維新范式 - 原生節點:依然保留節點形態,但不越權,通過提供海量資料以及專家建議來輔助用戶決策,通過宣告式運維來高效執行用戶的決策,同時,作為 FinOps 的領先布道者,我們也在原生節點中全面集成 Crane 專案的核心能力,并進行全面升級,針對有強烈降本訴求的行業,如泛互 / 教育 / 智能駕駛,以及在降本同時有強安全訴求的行業,如金融/政務,原生節點都提供了全面的解決方案(詳見后文使用場景),下圖展示了原生節點的產品架構:

原生節點已支撐百萬核 TKE 集群,為騰訊內部降本的堅實底座,在配合業務優化的同時,平臺側通過調度器的緊縮裝箱策略以及集群內負載的再平衡,可以讓業務 pod 集中到一部分計算節點,做資源的騰挪和下線,在一個月內實作了總 CPU 規模 40 萬核的節省量,節省超過1000 萬元,

節點運維新范式,像管理 pod 一樣管理節點
傳統模式的問題
宣告式運維是原生節點這種運維范式的核心特征,用戶可以通過 yaml 管理節點,宣告式提升資源利用率/提升運維效率,傳統運維模式下,用戶通過云 API 管理節點,往往會遇到:
- API 介面定義不規范
- 報錯資訊不同步
- 出現問題時需要手動重試
如果通過人肉或者腳本管理節點,比如進行內核版本的升級、系統組件的升級,又極易疏忽、難以復用、且缺乏有效的審計手段
宣告式運維的優勢

為了解決上述問題,原生節點借鑒 K8s 的管理理念:用戶可以像宣告 workload 規格、調度策略、運行引數等配置一樣, 宣告節點的內核版本、內核引數、運行的組件、利用率等配置,不用關心具體執行,讓運維更便捷的同時更加精準和可靠:
- Machineset CRD 模版可以隨意在任何集群使用,避免廠商系結
- K8s 原生 reconcilel 機制讓用戶僅需關注操作結果
- 統一基礎設定層的管理視圖,符合云原生操作習慣
- 宣告節點的資源利用率目標、資源調度策略等配置,從而讓用戶更方便的進行資源效能管理
原生節點產品能力
上一章節介紹了原生節點宣告式運維的優勢,這一節我們會詳細介紹對應的產品能力,您也可以參考對應鏈接獲取更多資訊:
宣告式提升資源利用率
-
云原生資產管理平臺 :可視化大盤幫忙客戶快速洞察成本走勢、利用率波動、例外資源物件,提供節點視圖 Node Map 和作業負載視圖 Workload Map
-
request 智能推薦:根據業務歷史畫像分析,推薦合適的資源配置量,資源配置進入智能時代
-
pod 原地升降配:針對 pod 的 CPU、記憶體提供原地升降配能力,通過對 API Server 和 Kubelet 進行升級改造,支持在不重啟 Pod 的情況下修改 CPU、記憶體的 request/limit 值,適用流量突發無損變配場景
-
節點規格放大:虛擬放大原生節點規格,讓原生節點裝箱率突破 100%,解決節點裝滿但用量很低的問題
-
調度時和運行時水位控制:提升高優業務穩定性和節點負載均衡
-
可搶占式 Job :從集群中已有資源進行抽取出閑置資源池, 提供可被搶占型別的離線業務使用,實作資源復用最大化
-
Qos Agent:利用騰訊自研的 RUE 內核,從 CPU、記憶體、網路、磁盤四大維度,十幾個子能力全方位提供精細化的業務分級和資源隔離保障能力,充分提升敏感業務穩定性的同時,提升資源利用率
-
GPU 共享 qGPU:支持在多個容器間共享 GPU 卡并提供容器間顯存、算力強隔離的能力,從而在更小粒度的使用 GPU 卡的基礎上,保證業務安全, 提升 GPU 利用率
宣告式提升運維效率
-
宣告式管理節點自愈策略:基礎設施的不穩定性、環境的不確定性經常會引發不同緯度的系統故障,故障自愈可幫助運維人員快速定位問題,并通過預置平臺運維經驗,針對不同檢測項提供最小化的自愈動作
-
宣告式管理節點生命周期:通過標準化的 K8s API 進行資源的增刪改查, 無須學習任何社區類 IAC 工具, K8s 基礎設施即代碼
-
宣告式管理節點預裝組件及其配置:節點池維度保證引數一致性,提供引數使用說明和推薦值
-
宣告式管理管理節點內核引數,配套容器場景優化內核, 兼顧基礎設施不可變和用戶客制化需求
-
自動升級:宣告式管理節點版本,降低離散版本的穩定性風險

原生節點使用場景
提升資源利用率并進行節點裁撤
為了幫助您更好地理解如何在實際業務中用原生節點來節約資源成本,我們可以從節點裁撤這一最典型的優化舉措切入,看看原生節點是如何全鏈路路攻克降本難題的:

如何在降本的同時保持穩定
降本的前提是保障業務的穩定性,當節點上 pod 密度增加,pod 型別多樣,客戶必然會擔心:
-
影響穩定性怎么辦?調太多 pod 會不會負載太高把節點打掛
-
業務之間的資源搶占和競爭怎么處理?高優任務質量如何保障
原生節點也貼心的提供了解決方案:
-
水位線設定能力:保持節點在調度時和運行時都處于安全水位,針對運行時水位能力,原生節點在社區的基礎之上增強了 descheduler 的能力:
- *支持按 workload 并行驅逐,在保證 workload 可用性的前提下,保證新的 pod 啟動后,進行下一個 pod 的驅逐
- *支持按照事件進行驅動,不限制于以前只能定期輪訓的模式
-
基于RUE內核的性能隔離能力,從 CPU、記憶體、磁盤、網路、調度等角度,全方位提升服務質量等級,為業務穩定降本增效保駕護航:
-
- CPU:絕對搶占,cpuburst,超執行緒隔離
-
- 記憶體:記憶體異步回收,全域水位分級,pagecache limit 等
-
-
網路:出入方向限速,帶寬絕對搶占,埠白名單等
-
磁盤IO:磁盤 IOPS 限制,磁盤 BPS 限制等
提升運維效率
我們從 kubelet 組件/內核引數調參、節點排障、版本維護這三個場景來介紹原生節點是如何提升運維效率的:
自定義 kubelet 引數/內核引數
當客戶想要自定義 kubelet 引數/內核引數時,會先準備一個初始化腳本或自定義鏡像,并在腳本中修改 /etc/sysctl.conf 檔案、kubelet、runtime 引數,如果之后要修改引數,客戶可能會使用 agent 或者用開源工具,少部分集群中機器比較少的客戶可能直接上機器修改,這種模式存在很多問題:
- 需要登陸機器或預寫腳本
- 客戶管理復雜度較高,不同業務底層機器對應修改的引數不一致,增加排障難度
- 要求運維同學對內核有豐富的修改經驗
原生節點可以:
- 節點維度提供便捷操作入口“management”,支持宣告式管理
- 提供統一的管理視圖,引數可見且節點池維度保證引數一致性
- 提供引數使用說明和推薦值,用戶可以自主決策
節點排障
客戶節點故障后的排查鏈路通常是:業務發現問題 -- 拉通售后/一線/專項排查問題 -- 問題透傳產研 -- 登陸用戶節點查看日志 -- 分析故障分類 -- 根據經驗解決:
節點故障分類繁雜,專業程度要求較高
流程長,涉及人員多
原生節點的故障自愈能力可以:
- 實時檢測 + 自定義告警:縮短問題發現流程
- 擴大節點檢測范圍:覆寫 K8s、運行時、os 現網常見數十種故障方便快速定位
- 搭配組件重啟能力縮短故障修復時間
版本維護
TKE 現網維護了數十種版本,不同 K8s\runtime\os 之間的版本相互耦合,導致排查問題的復雜度呈指數級上升,我們就曾遇到:客戶發現業務訪問節點存在超時現象,經過抓包、分析日志等長達一周的排障操作發現可能是由于內核版本不同,對應的 iptables 設定的默認值不一致導致,
但客戶對于升級的態度慎之又慎,擔心影響業務,原生節點就可以很好的破除這個困境:
- 統一底層基礎設施:統一 os、運行時降低平臺和用戶側對底層版本的關注度
- 提供自定義配置入口:如 kubelet 引數、內核引數、nameserver、Hosts 用戶可通過統一入口宣告式管控,兼顧定制化需求
應對流量突發,保障業務穩定性
傳統場景下業務流量突發時,如果運維人員想要更改 pod 的 request/limit,往往是通過 yaml 手動更新,總是會遇到:
- 更新時間長,無法及時應對流量洪峰
- 用戶修改 yaml,滾動更新,對業務可能有損,可能當前 pod 有流量
原生節點提供了動態修改 pod 資源引數的功能,當 pod 記憶體使用率逐漸升高,為避免觸發 OOM(Out Of Memory)Killer,可以在不重啟 pod 的前提下提高記憶體的 Limit,無損應對突發流量,
如何創建原生節點
進入集群詳情頁 > 選擇左側選單欄中的節點管理 > 節點池 > 單擊新建節點池,選擇原生節點池并填寫對應引數即可:

優惠活動
騰訊云原生
11.1-11.30大促活動持續進行中!
原生節點大額滿減券等你領取!
掃描下方圖片二維碼進入會場搶優惠!

填寫資訊問券,還可申請測驗專用代金券:https://wj.qq.com/s2/11233165/fa4c/
數量有限先到先得!
參考鏈接
云原生資產管理平臺:
https://cloud.tencent.com/document/product/457/78329
request 智能推薦:
https://cloud.tencent.com/document/product/457/75471
pod原地升降配:
https://cloud.tencent.com/document/product/457/79697
節點規格放大:
https://mc.tencent.com/7m4G0ie8
調度時和運行時水位控制:
https://mc.tencent.com/G2nVeuPR
可搶占式 Job:
https://cloud.tencent.com/document/product/457/81751
GPU 共享 qGPU:
https://cloud.tencent.com/document/product/457/61448
宣告式管理節點:
https://cloud.tencent.com/document/product/457/78649
【騰訊云原生】云說新品、云研新術、云游新活、云賞資訊,掃碼關注同名公眾號,及時獲取更多干貨!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/538378.html
標籤:其他
上一篇:從元宇宙、地產數字化到呼叫中心,華為云攜手伙伴共創新價值
下一篇:LVS負載均衡集群——DR模式

