腾讯 2009 年开发容器计算平台 T-Borg;2012 年开发内部的离线在线混合部署的容器平台 Torca20132014 Docker  Kubernetes 出现后,腾讯迅速切换自研方案到开源方案,对外推出商用公有云版本服务 TKE 和私有云版本 GaiaStack2019年,公有云和私有云版本合并为统一架构和方案 TKE,并推出了社区发行版 TKEStack

TKEStack 名称中包含 Stack,也表明 TKEStack 有别于其他容器产品,它将打造的是一整套技术栈,以 TKE 容器平台为核心,面向网络,存储,应用,服务等各个领域,扩展平台在底层资源管控和上层业务服务上的能力边界,所有这些能力都将在 TKEStack 下开源,社区用户、合作伙伴等都可以参与进来贡献和分享。

整体架构

TKEStack 整体架构上采用 Kubernetes on Kubernetes 的设计理念,充分满足平台服务的高可用性和扩展性。

<span><span><span><span><span><span style="color:#000000"><span><span>整体架构</span></span></span></span></span></span></span></span>-LMLPHP

  • 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仍可提供的管理功能,用户正常的业务访问不受影响。

在扩展性方面,根据不同场景灵活配置集群,例如为承载大流量高可靠性的在线业务,有必要提高 global 集群的规格配置,使其能够管理大规模海量的业务集群及应用资源;如果面向个人开发者或中小型业务,甚至可以简化为仅数个节点组成的 global 集群,并通过该集群承载业务。

能力特性

通过集成和使用 TKEStack,不仅支持 K8S 原生的资源调度、部署运行、服务发现和弹性伸缩等整一套功能,TKEStack 还支持多种特性,方便用户接入和使用,通过灵活的扩展功能实现自身服务的增值。

原生支持

TKEStack是一款专注于 Kubernetes 技术栈的,集易用性与扩展性于一身的 K8S 发行版,符合Kubernetes接口标准,产品底层完全兼容标准 Kubernetes。因此,基于 Kubernetes 生态的应用和服务都可以无缝迁移到 TKEStack上来,有标准 K8S 运维管理经验的用户可以平滑的切换到 TKEStack 平台。

TKEStack 跟随最新 K8S 版本,支持所有可用的功能和安全补丁,通过灵活的集群管理功能,方便的对集群进行更新升级操作,帮助用户体验和使用最新的生态技术。作为云原生的基础设施平台,任何符合云原生规范和标准的应用或项目,都可以构建和运行在 TKEStack 中。

简单易用

提供和腾讯公有云版一致的 UI,界面简洁友好,支持配置各种 K8S 资源,方便用户顺利的创建和管理容器应用,降低了容器平台的学习和操作成本。TKEStack 还有着完善的镜像仓库和应用商店功能,内部包含腾讯优秀的开源容器应用模板,方便用户一键部署高质量稳定的应用服务。

多集群管理

支持新建独立集群或纳管不同基础设施上的已有 Kubernetes 集群,通过页面或命令行集中管理多个集群,实现了混合云场景下的多集群统一管理能力。只需提供需要管理集群的 api 地址,token  ca 证书,TKEStack 就可以纳管该集群。纳管操作不会污染导入的集群,被纳管集群不会增加额外的负载或配置。统一一致的用户权限及业务管理等功能帮助用户在集群间灵活切换,方便的部署和管理多集群应用。

<span><span><span><span><span><span style="color:#000000"><span><span>整体架构</span></span></span></span></span></span></span></span>-LMLPHP

更多信息请参考 集群管理

多租户管理

支持多租户管理和租户间隔离,不仅仅局限于账号,而是包括集群、命名空间、业务、镜像仓库等等,满足大中型规模企业管理的需求。并且在租户层次之下,拥有业务的概念,业务可以横跨集群,为用户提供统一的配额管理、命名空间、业务配额以及镜像仓库和应用商店等管理能力,方便用户在多集群场景下编排业务应用。

<span><span><span><span><span><span style="color:#000000"><span><span>整体架构</span></span></span></span></span></span></span></span>-LMLPHP

TKEStack提供统一和开放的认证授权管理,通过扩充 kubernetes  authz  authn  webhook,实现所有集群无需单独配置 RBAC,为上层提供统一的可跨集群的资源授权。TKEStack自身的认证和授权体系是完整的 K8S Style API 以及 oidc 认证协议支持,可以很容易的由第三方集成商或开发者集成在自身的产品中,实现和 TKEStack 捆绑服务。企业级用户可以方便的将已有的账户体系或组织架构映射到 TKEStack 平台中,从而节省容器平台对接的工作量,专注于自身高价值业务的开发。

更多信息请参考 访问管理

运维友好的管理平台

TKEStack 致力于打造一个运维友好的管理平台,帮助运维人员从繁杂的劳动中解放出来。TKEStack 提供完整详细的监控及日志服务,粒度精细到对集群下每一个容器每一条日志都有监控和记录。并且提供智能化的安装工具、巡检工具,帮助运维人员对整个平台全程进行管理,提前发现风险点,提高系统的可靠性。

  • 快捷安装

TKEStack 使用 tke-installer 安装工具进行安装,通过界面化的方式引导用户一键部署 TKEStack 容器平台。tke-installer 安装工具能够检查基本的环境信息,自动适配 x86  arm 版本安装驱动和镜像。离线的安装方式更免去用户拉取镜像的烦恼,极大的提高了容器平台部署的效率。

<span><span><span><span><span><span style="color:#000000"><span><span>整体架构</span></span></span></span></span></span></span></span>-LMLPHP

tke-installer 自动等待和检查每一步骤安装完成,如果中间过程出错会自动在日志界面提示相应的信息,并支持根据用户需要,选择全新安装或从失败步骤继续安装。更支持以 hook 方式自定义安装流程,用户可以在安装开始前、集群 ready 后以及安装结束后三个 hook 点添加自己的脚本或命令,实现平台安装的可定制化。

更多安装信息请见:TKEStack安装说明

  • 监控系统

免去部署和配置 prometheus 的复杂操作,TKEStack 提供高可用性和可扩展性的细粒度监控系统,实时监控 CPUGPU,内存,显存,网络带宽,磁盘io等多种指标并自动绘制趋势曲线,帮助运维人员全维度的掌握平台运行状态。

<span><span><span><span><span><span style="color:#000000"><span><span>整体架构</span></span></span></span></span></span></span></span>-LMLPHP

TKEStack通过prometheus组件监控集群状态,prometheus 组件通过 addon 扩展组件自动完成安装和配置,使用 influxdbelasticsearch 等存储监控数据。监控数据和指标融入到平台界面中以风格统一图表的风格展示,支持以不同时间,粒度等条件,查询集群,节点,业务,workload以及容器等多个层级的监控数据,全维度的掌握平台运行状态。

同时针对在可用性和可扩展性方面,支持使用 thanos 架构提供可靠的细粒度监控和警报服务,构建具有高可用性和可扩展性的细粒度监控能力。

详情请见 thanos架构介绍

  • 日志服务

提供的集群内日志采集功能,支持将集群内服务或集群节点特定路径文件的日志发送至 KafkaElasticsearch等消费端,支持采集容器标准输出日志,容器内文件日志以及主机内文件日志。更提供事件持久化、审计等功能,实时记录集群事件及操作日志记录,帮助运维人员存储和分析集群内部资源生命周期、资源调度、异常告警等情况。

<span><span><span><span><span><span style="color:#000000"><span><span>整体架构</span></span></span></span></span></span></span></span>-LMLPHP

需要为每个集群手动开启日志采集功能。日志采集功能开启后,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 的配置和管理,满足复杂应用容器化的特殊需求。

更多详情请参考 扩展组件

05-22 21:38