TKEStack 總體架構及性能介紹

騰訊 2009 年開發容器計算平臺 T-Borg;2012 年開發內部的離線在線混合部署的容器平臺 Torca20132014 Docker  Kubernetes 出現後,騰訊迅速切換自研方案到開源方案,對外推出商用公有云版本服務 TKE 和私有云版本 GaiaStack2019年,公有云和私有云版本合併爲統一架構和方案 TKE,並推出了社區發行版 TKEStack前端

TKEStack 名稱中包含 Stack,也代表 TKEStack 有別於其餘容器產品,它將打造的是一整套技術棧,以 TKE 容器平臺爲核心,面向網絡,存儲,應用,服務等各個領域,擴展平臺在底層資源管控和上層業務服務上的能力邊界,全部這些能力都將在 TKEStack 下開源,社區用戶、合做夥伴等均可以參與進來貢獻和分享。git

總體架構

TKEStack 總體架構上採用 Kubernetes on Kubernetes 的設計理念,充分知足平臺服務的高可用性和擴展性。github

  • Global: 集羣負責運行整個 TKEStack 平臺自身所需組件;
  • Cluster: 業務集羣是由 TKEStack 控制檯統一管理,負責運行業務;
  • Installer: 負載安裝 Global 集羣和管控組件;
  • Auth: 權限認證組件,提供用戶認證、受權相關功能;
  • Gateway: 網關組件,並運行控制檯的 Web 界面服務;
  • Platform: 平臺管理組件,提供包含集羣管理等功能的平臺服務;
  • Business: 業務管理組件,提供業務管理相關功能的後臺服務;
  • Monitor: 監控服務組件,提供監控採集、上報、告警相關服務;
  • Notify: 通知功能組件,提供消息通知相關的功能;
  • Registry: 鏡像服務組件,提供平臺鏡像倉庫和 charts 倉庫服務;
  • Galaxy: 網絡插件,爲集羣提供多種網絡模式服務;
  • Logagent: 日誌管理組件,爲平臺提供日誌管理相關服務;
  • Audit: 設計組件,提供審計服務功能;

Global 集羣提供容器雲平臺的支撐環境和運行自身所需的各類組件,包括業務管理組件、平臺管理組件、權限認證組件、監控和告警組件、registry 鏡像倉庫組件以及 gateway 前端頁面網關組件等等。各個組件以 workload 的形式靈活部署在 global 集羣中,各組件多副本高可用方式部署,單個組件異常或者主機節點掉線等故障不會影響global集羣的正常運行,TKEStack仍可提供的管理功能,用戶正常的業務訪問不受影響。web

在擴展性方面,根據不一樣場景靈活配置集羣,例如爲承載大流量高可靠性的在線業務,有必要提升 global 集羣的規格配置,使其可以管理大規模海量的業務集羣及應用資源;若是面向我的開發者或中小型業務,甚至能夠簡化爲僅數個節點組成的 global 集羣,並經過該集羣承載業務。api

能力特性

經過集成和使用 TKEStack,不只支持 K8S 原生的資源調度、部署運行、服務發現和彈性伸縮等整一套功能,TKEStack 還支持多種特性,方便用戶接入和使用,經過靈活的擴展功能實現自身服務的增值。安全

原生支持

TKEStack是一款專一於 Kubernetes 技術棧的,集易用性與擴展性於一身的 K8S 發行版,符合Kubernetes接口標準,產品底層徹底兼容標準 Kubernetes。所以,基於 Kubernetes 生態的應用和服務均可以無縫遷移到 TKEStack上來,有標準 K8S 運維管理經驗的用戶能夠平滑的切換到 TKEStack 平臺。網絡

TKEStack 跟隨最新 K8S 版本,支持全部可用的功能和安全補丁,經過靈活的集羣管理功能,方便的對集羣進行更新升級操做,幫助用戶體驗和使用最新的生態技術。做爲雲原生的基礎設施平臺,任何符合雲原生規範和標準的應用或項目,均可以構建和運行在 TKEStack 中。架構

簡單易用

提供和騰訊公有云版一致的 UI,界面簡潔友好,支持配置各類 K8S 資源,方便用戶順利的建立和管理容器應用,下降了容器平臺的學習和操做成本。TKEStack 還有着完善的鏡像倉庫和應用商店功能,內部包含騰訊優秀的開源容器應用模板,方便用戶一鍵部署高質量穩定的應用服務。app

多集羣管理

支持新建獨立集羣或納管不一樣基礎設施上的已有 Kubernetes 集羣,經過頁面或命令行集中管理多個集羣,實現了混合雲場景下的多集羣統一管理能力。只需提供須要管理集羣的 api 地址,token  ca 證書,TKEStack 就能夠納管該集羣。納管操做不會污染導入的集羣,被納管集羣不會增長額外的負載或配置。統一一致的用戶權限及業務管理等功能幫助用戶在集羣間靈活切換,方便的部署和管理多集羣應用。負載均衡

更多信息請參考 集羣管理

多租戶管理

支持多租戶管理和租戶間隔離,不只僅侷限於帳號,而是包括集羣、命名空間、業務、鏡像倉庫等等,知足大中型規模企業管理的需求。而且在租戶層次之下,擁有業務的概念,業務能夠橫跨集羣,爲用戶提供統一的配額管理、命名空間、業務配額以及鏡像倉庫和應用商店等管理能力,方便用戶在多集羣場景下編排業務應用。

TKEStack提供統一和開放的認證受權管理,經過擴充 kubernetes  authz  authn  webhook,實現全部集羣無需單獨配置 RBAC,爲上層提供統一的可跨集羣的資源受權。TKEStack自身的認證和受權體系是完整的 K8S Style API 以及 oidc 認證協議支持,能夠很容易的由第三方集成商或開發者集成在自身的產品中,實現和 TKEStack 捆綁服務。企業級用戶能夠方便的將已有的帳戶體系或組織架構映射到 TKEStack 平臺中,從而節省容器平臺對接的工做量,專一於自身高價值業務的開發。

更多信息請參考 訪問管理

運維友好的管理平臺

TKEStack 致力於打造一個運維友好的管理平臺,幫助運維人員從繁雜的勞動中解放出來。TKEStack 提供完整詳細的監控及日誌服務,粒度精細到對集羣下每個容器每一條日誌都有監控和記錄。而且提供智能化的安裝工具、巡檢工具,幫助運維人員對整個平臺全程進行管理,提早發現風險點,提升系統的可靠性。

  • 快捷安裝

TKEStack 使用 tke-installer 安裝工具進行安裝,經過界面化的方式引導用戶一鍵部署 TKEStack 容器平臺。tke-installer 安裝工具可以檢查基本的環境信息,自動適配 x86  arm 版本安裝驅動和鏡像。離線的安裝方式更免去用戶拉取鏡像的煩惱,極大的提升了容器平臺部署的效率。

tke-installer 自動等待和檢查每一步驟安裝完成,若是中間過程出錯會自動在日誌界面提示相應的信息,並支持根據用戶須要,選擇全新安裝或從失敗步驟繼續安裝。更支持以 hook 方式自定義安裝流程,用戶能夠在安裝開始前、集羣 ready 後以及安裝結束後三個 hook 點添加本身的腳本或命令,實現平臺安裝的可定製化。

更多安裝信息請見:TKEStack安裝說明

  • 監控系統

免去部署和配置 prometheus 的複雜操做,TKEStack 提供高可用性和可擴展性的細粒度監控系統,實時監控 CPUGPU,內存,顯存,網絡帶寬,磁盤io等多種指標並自動繪製趨勢曲線,幫助運維人員全維度的掌握平臺運行狀態。

TKEStack經過prometheus組件監控集羣狀態,prometheus 組件經過 addon 擴展組件自動完成安裝和配置,使用 influxdbelasticsearch 等存儲監控數據。監控數據和指標融入到平臺界面中以風格統一圖表的風格展現,支持以不一樣時間,粒度等條件,查詢集羣,節點,業務,workload以及容器等多個層級的監控數據,全維度的掌握平臺運行狀態。

同時針對在可用性和可擴展性方面,支持使用 thanos 架構提供可靠的細粒度監控和警報服務,構建具備高可用性和可擴展性的細粒度監控能力。

詳情請見 thanos架構介紹

  • 日誌服務

提供的集羣內日誌採集功能,支持將集羣內服務或集羣節點特定路徑文件的日誌發送至 KafkaElasticsearch等消費端,支持採集容器標準輸出日誌,容器內文件日誌以及主機內文件日誌。更提供事件持久化、審計等功能,實時記錄集羣事件及操做日誌記錄,幫助運維人員存儲和分析集羣內部資源生命週期、資源調度、異常告警等狀況。

須要爲每一個集羣手動開啓日誌採集功能。日誌採集功能開啓後,log-collector 會在集羣內以 DaemonSet 的形式運行,並根據用戶經過日誌採集規則配置的採集源和消費端,從採集源進行日誌採集,將日誌內容發送到消費端。

採集容器標準輸出日誌  -  採集集羣內指定容器的標準輸出日誌,採集到的日誌信息將會以 JSON 格式輸出到用戶指定的消費端,並會自動附加相關的 Kubernetes metadata 包括容器所屬 pod  label  annotation 等信息。

採集容器內文件日誌  -  採集集羣內指定 pod 內文件的日誌,用戶能夠根據本身的需求,靈活的配置所需的容器和路徑,採集到的日誌信息將會以 JSON 格式輸出到用戶指定的消費端, 並會附加相關的 Kubernetes metadata,包括容器所屬 pod  label  annotation 等信息。

採集主機內文件日誌  -  採集集羣內全部節點的指定主機路徑的日誌,log-collector 會採集集羣內全部節點上知足指定路徑規則的文件日誌,以 JSON 格式輸出到用戶指定的輸出端, 並會附加用戶指定的 metadata,包括日誌來源文件的路徑和用戶自定義的 metadata

更多日誌信息請參考 日誌管理

  • 平臺巡檢

巡檢工具 kube-javis,經過 plugin 插件的方式靈活配置和擴展,多維度的檢查 TKEStack 平臺下集羣的健康情況,支持集成到 TKEStack 平臺中,按期運行並輸出診斷結果和修復建議。

更多詳細信息請關注 kube-javis

擴展組件支持和管理

Tkestack 的特點功能,以擴展組件的方式來訂製集羣的能力,擴展集羣的功能。TKEStack 已支持多種擴展組件,包含:

GPUManager - GPU Manager 提供一個 All-in-One  GPU 管理器, 基於K8S Device Plugin插件系統實現, 提供了 GPU 虛擬化、拓撲分配、GPU 共享、GPU 指標查詢、GPU 容器 pre-check 等功能, 支持用戶在 K8S 集羣中高效的使用 GPU 設備。

TApp - Tapp 是結合騰訊十多年海量運營經驗,全新設計出的一種 workload,以 CRD 的形式實現。 Tapp可運行有狀態、無狀態應用,彌補了 StatefulSet 沒法批量更新容器的不足,使用方式兼容傳統運維習慣,更好的支持傳統的有狀態應用,可以實現灰度升級和多版本的發佈管理。

CronHPA - 使用 crontab 模式按期自動擴容工做負載,週期性地在給定的調度時間對工做負載進行擴縮容。

LBCF - 一款通用負載均衡控制面框架,對K8S內部晦澀的運行機制進行了封裝並以 Webhook 的形式對外暴露,並提供強大的擴展能力以知足業務方在使用負載均衡時的個性化需求。

CSIOperator - 負責 CSI 相關組件的部署與維護,幫助用戶在集羣中使用存儲。

IPAM - 經過 IPAM 擴展組件安裝,擴展了 K8S 調度插件,實現 Float IP 的配置和管理,知足複雜應用容器化的特殊需求。

更多詳情請參考 擴展組件

相關文章
相關標籤/搜索