腾讯开源容器云平台 TKEStack 介绍

Author: Yingzhe Ru (汝英哲)

2019年11月在腾讯 Techo 开发者大会上,TKEStack 正式发布并宣布开源, 同一时间凝结着腾讯多年来容器技术积累的代码也通过 push 命令上传到 github, 从那一刻起我们开启了一段面向开源,充满机遇与挑战,驶向未来云世界的伟大航程。 时间回到今天,TKEStack 自开源后已经过去了几个月,迭代了多个版本,当前仍在以较快的速度提交修改,发布更新。 随着开发进度的推进,产品的功能逐渐增强,用户体验愈发的完善,整个产品和技术栈的轮廓也愈加的清晰, 因此有必要在这里系统介绍一下 TKEStack 容器云平台,明确我们的目标,展示平台的特性以及为您提供的价值,希望您阅读完这篇文章后, 能够对 TKEStack 产生兴趣,了解到 TKEStack 的能力,并能够考虑使用或集成 TKEStack 助力您的业务或商业产品落地。

简介

近年来在云计算领域,容器技术领域不断创新,围绕容器以及容器相关技术构建出云原生的生态和技术标准。 基于 Kubernetes 的容器平台,为容器化的应用提供资源调度、部署运行、服务发现和弹性伸缩等整一套功能, 逐步成为客户软件基础设施的不二之选。

腾讯在云计算领域深耕多年,尤其在容器技术领域,自2009年开发容器计算平台 T-Borg 开始,2012年开发内部的离线在线混合部署的容器平台 Torca,2013、2014年 Docker 和 Kubernetes 出现后,腾讯迅速切换自研方案到开源方案,对外推出商用公有云版本服务TKE和私有云版本 GaiaStack。2019年,公有云和私有云版本合并为统一架构和方案 TKE,并推出了社区发行版 TKEStack。

TKEStack是腾讯内部几大团队合力打造的开源版本,总结了多年来腾讯在云原生领域的经验和技术积累,吸收了 Gaia 平台、TKE公有云以及腾讯内部众多容器产品的优点,全新打造的面向私有云业务场景的开源容器平台。TKEStack 以高起点起步,甩掉大量历史遗留包袱,从架构上重新设计,并且结合业内生态最新的更新和特性,使得TKEStack轻装上阵,用户开箱即用最新的云原生能力。

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

愿景与目标

未来云计算基础设施一定处于多维异构的状态,未来客户也会处于多维异构的业务场景,包括硬件异构、基础架构异构和业务平台异构。

  • 硬件异构 - 随着国产化在国内的发展,将来客户的服务器架构将会是 x86 和 arm64 混杂在一起;随着AI计算发展,Intel 等厂商也加入到 GPU 的竞争中,再加上 ARM 平台的 GPU 和 FPGA 等硬件,计算领域的硬件将更加碎片化。
  • 基础架构异构 - 未来的数字化计算服务中心,尤其在国内,将更多会采用私有化(或专有云)和公有云混合部署的模型支持业务发展。
  • 业务平台异构 - 传统业务在无法全部迁移下的情况,长期会和微服务、Service Mesh 、Serverless等技术组成一个异构的业务大中台,同时还要支撑使用 Spark、Hadoop、TensorFlow、PyTorch 等计算平台运行。

我们的愿景是为内部业务和外部商业客户提供离线计算业务和在线服务业务混合部署的一站式通用基础架构平台。 基于此愿景,TKEStack 将继承腾讯内部容器技术优势,为用户、为合作伙伴、为生态创造价值,生态共建,产业共创。

  • 面向用户 - 为用户提供稳定高效可扩展的容器服务产品,提供便捷的安装部署、简洁的管控和资源管理,以及完善的运维工具支持,满足业务上云需求。
  • 面向合作伙伴 - 为下游产品提供调度能力强大、功能丰富、性能稳定的容器底座,使用户能基于 TKEStack 便捷打造易部署、易维护、易扩展的产品和服务,在互联网、传统行业与政企等领域提供有针对性的行业解决方案。
  • 面向生态 - 围绕容器生态的各种能力,统一应用服务的定义,发布、配置、升级及运维整个生命周期管理,整合中间件、运行时、存储、网络能力,逐步建立起一个基于云原生的容器平台标准。

整体架构

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

TKEStack整体架构
  • 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 就可以纳管该集群。纳管操作不会污染导入的集群,被纳管集群不会增加额外的负载或配置。统一一致的用户权限及业务管理等功能帮助用户在集群间灵活切换,方便的部署和管理多集群应用。

多集群管理

更多信息请参考集群管理

多租户管理

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

多租户管理

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 提供高可用性和可扩展性的细粒度监控系统,实时监控 CPU,GPU,内存,显存,网络带宽,磁盘io等多种指标并自动绘制趋势曲线,帮助运维人员全维度的掌握平台运行状态。

监控系统

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

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

详情请见thanos架构介绍

日志服务

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

日志服务

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

更多详情请参考扩展组件

总结

随着2020年3月国家发改委进一步明确了包括以云计算等为代表的新技术基础设施纳入“新基建”的范围,国内云计算市场将迎来一波建设的热潮。尤其在私有云领域,传统行业企业基本开始了业务的云迁移,但其应用系统的弹性、自动化运维管理能力以及 Devops 和持续交付的能力仍在不断的探索和尝试,迫切的需要一套成熟的产品平台和生态体系,帮助企业完成云原生转型。

开源TKEStack的推出,将推动企业业务向云原生的转型,提供完善的容器产品功能,打造运维友好的管理平台,减少用户繁复的劳动,提高工作效率。完善的API和租户管理能力,方便用户将已有的账户体系或组织架构映射到TKEStack平台中,节省平台业务对接的工作量。并且良好的扩展能力使得用户能够基于 TKEStack 适配本地基础设施,扩展业务所需的各种能力。

TKEStack 已在腾讯内部大量使用,总结积累了大量经验和技术,持续进行迭代开发,不断完善功能特性,并且第一时间将成果贡献给社区,帮助用户紧跟云原生潮流,享用最新技术能力,同时免除了被技术绑定的风险。我们希望通过 TKEStack 的稳定高效和灵活扩展的平台能力,帮助您构建以 TKEStack 为底座的,适配各种硬件架构和基础环境的,面向 AI、大数据、中间件以及微服务等等多种场景的服务,在互联网、传统行业与政企等领域,联合合作伙伴提供有针对性的行业解决方案。TKEStack 仍在不断的成长中,后续我们还会开发更多的功能,输出更多腾讯内部优秀的产品和能力。

最后,感谢您的时间,希望你在读完文章后,能够了解到 TKEStack 容器云平台,希望 TKEStack 能够成为您的选择, 我们愿与您一道前行,创造价值,加速创新,共建云生态,一起迈向未来云世界。