近期,腾讯游戏Tenc容器团队对外开源了Kubernetes(K8s)多集群调度方案tensile-kube, 本文将简单介绍tensile-kube。
tensile-kube 名称由来
tensile名为可扩展的,可延伸的,同时tensile中也包含了tencent 和 tenc的意思。
tensile-kube 诞生背景
腾讯游戏Tenc(容器)计算平台线上有数十个K8s集群,这些集群都存在一些碎片资源,无法得到有效利用。常见的场景是:一个作业需要N个资源,但是现有集群A、B、C等所剩资源都不满足N,而集群A,B,C资源总和又能满足N。此外,我们还有另一种场景:业务有一种类型的业务需要同时发布到多个集群。
其实,业界很早就有类似的需求,也诞生出了Federation等方案,但是这些对于现有的 K8s 会有较大的改造成本,同时增加了很多繁杂的CRD。因而,我们自主研发了更轻量的基于virtual-kubelet的解决方案tensile-kube。
https://github.com/kubernetes-sigs/kubefed
virtual-kubelet(VK)简介
VK是用微软开源的一个基础库,其实现通常叫做provider, 早期的VK中包含了各种provider, 目前VK社区已经将其独立出来,分为:virtual-kubelet、node-cli和provider。virtual-kubelet提供了一种抽象能力,通过实现provider,用户就实现了一个虚拟的K8s节点,用户的Pod可以调度到该节点。virtual-kubelet的核心功能是Node和Pod的生命周期管控。
tensile-kube 架构
tensile-kube核心组件为4个:
tensile-kube 特点
这些使得tensile-kube可以方便的实现多个集群的调度管理,且适用于大多数场景。
tensile-kube 主要能力
其余可能的适用场合
RoadMap
Tenc自2014年起将K8s上到生产环境至今已经6年。tensile-kube 作为我们精心打造的开源产品融合了我们多年的容器相关经验,目前基于tensile-kube, 我们已经将原先当集群2000台规模的老集群扩展到了万级别,并且还在持续将集群迁移到该集群。此前,我们已经向VK社区提交多了诸多PR,以扩展VK功能和优化其性能,后续我们主要在以下几方面继续完善VK和tensile-kube:
https://github.com/pulls?q=is%3Apr+author%3Acwdsuzhou+archived%3Afalse+is%3Aclosed+virtual-kubelet
项目地址
https://github.com/virtual-kubelet/tensile-kube
关于腾讯游戏Tenc容器团队
腾讯游戏Tenc容器团队负责腾讯游戏服务器资源的管理和运营。自2014年开始,通过Kubernetes、Docker等容器技术构建在线、离线业务同机混合部署的计算平台,实现游戏在线、离线业务的统一调度,支撑腾讯游戏业务的海量计算资源需求。
扫描二维码,添加小助手(微信号:TKEplatform)
拉你入技术交流群,和更多小伙伴一起交流云原生。
腾讯云原生
汇聚腾讯云原生技术
最新资讯、最佳实践、最真案例、最火活动
扫描二维码 关注我们