TKE 超级节点,Serverless 落地的最佳形态

2023-04-26 18:55:59 浏览数 (2)

陈冰心,腾讯云产品经理,负责超级节点迭代与客户拓展,专注于 TKE Serverless 产品演进。

背景

让人又爱又恨的 Serverless

Serverless 炙手可热,被称为云原生未来发展的方向。信通院报告显示:在核心业务中使用 Serverless 的用户占到18.11%,已经开始和计划使用 Serverless 技术的用户超过了70%。Serverless 广受追捧,得益于它在“快速的开发交付”、“极高的运维效率”、“极低的资源成本”这三个方面上的优势。

Serverless 可以让业务更快上云,让用户用最小的运维投入享受云带来的便利性。底层资源规划及运维交给更专业的云平台处理,使用户可以更专注业务和产品本身,从而更好地提升产品和业务的核心竞争力。

Serverless 的优势如此明显,但在实际落地使用中,无论是云厂商还是用户,均处在摸着石头过河的阶段,仍在不断学习不断试错,主要原因是 Serverless 在带来便利性的同时,也打破了传统 Serverful 模式下的种种用户使用习惯,对企业各个组织均造成了冲击;其先进的产品形态在老的架构上又引入了较高的适配复杂度。具体表现在:

Serverless 对企业的运维团队造成冲击
  • 对接复杂度高,架构改造和适配有成本
  • 改变了常规的节点运维习惯,运维需要重新适应新的运维方式
  • 业务对资源的弹性使用让平台运维对资源不再可控
Serverless 对企业的财务团队造成冲击
  • 按量计费模式替代了传统包年包月,财务规划异常困难
  • 资源成本不再可控
  • 无法以固有的方式对业务团队进行分账

Serverless 和 Serverful 的完美平衡

我们仍然认可 Serverless 模式下不可替代的优势并且坚信这些优势最终能够帮助企业提升效率,在 Serverless 渐进式演化的过程中,我们思考的是,在当下如何找到 Serverless 和 Serverful 的中间态,让用户在资源可控度和运维简化间找到一个平衡,用更小的代价获得 Serverless 的收益,由此我们提出了 HouseKeeper 的理念,构造了全新的节点产品形态,以求平衡 Serverless 与 Serverful,靠近传统 Serverful 的形态下,我们孵化出云原生增强型的 Serverful节点 - 原生节点 ,那么在靠近 Serverless 的一边,又能做些什么呢,我们给出的完美答案是有节点的 Serverless 服务 - 超级节点

超级节点是基于 Serverless (此处亦可称 Nodeless)容器技术,模拟 Serverful 有节点管理体验的新的集群节点形态。有 pod 强隔离高稳定、Node 免运维、精确配置资源、兼顾资源可控性与使用便捷性等特点。适用于希望降低运维负担、提高资源装箱率且不想改变运维模式的企业渐进式 Serverless 化。我们期望通过迁移式的使用体验,让用户在不改变自身架构、不影响财务核算的前提下,切实体验到 Serverless 的便利。

如下总结了超级节点的特点:

超级节点向用户提供可用区级别的、支持自定义规格的节点能力,使用超级节点类似于使用一台超大规格的 CVM,每一个调度至超级节点的 pod 都是一台独立的子机,pod 间因此完全隔离,使业务具有极高的稳定性和安全性。在节点维度支持了按量计费和包年包月两种计费模式,包年包月的资源可以在保障资源供给的基础上以较低的价格交付用户,如果需要进行固定资源的扩缩容,仅需要对这台“超大规格的 CVM”进行升降配,资源管理变得更为简单。

在产品能力上,超级节点针对兼容 TKE 标准集群形态做了大量工作,保障用户的业务可以平滑在普通节点和超级节点间无损切换。在底层架构上,超级节点基于腾讯云自研的 Serverless 容器技术,通过安全沙箱、轻量的高性能运行、增强调度器以及高性能网络等保障业务安全稳定地运行。

超级节点承载了内外部共计千万核业务稳定、安全运行,腾讯QQ、会议、文档等业务,公有云小红书、超参数、搜狐、百果园等客户,沿用原运维体系,将大量稳态核心模块部署在超级节点上,包年包月的超级节点模式稳定上线数月,替换了 90% 预留券的使用,新增了数十万核在线常驻业务切换至超级节点。

超级节点,有节点的 Serverless 服务

传统的节点运维管理模式

传统的节点运维管理模式的特点在于:有节点概念,计费维度在单个节点上。其优势在于对无论是对运维来讲还是财务人员来讲,管理完全可控。但缺点也非常明显:

海量的节点维护工作:
  • 众多测试集群、生产集群大量节点的日常维护
  • 节点 OS、内核、容器运行时的维护
  • 节点 K8s 组件的维护和升级
  • 为提升集群资源利用率进行复杂的节点扩缩容工作
难以避免的容器隔离性问题:
  • pod 共享宿主节点内核
  • pod 共享宿主节点硬盘
  • pod 共享宿主节点网卡
  • 容器逃逸风险
专业、复杂的资源规划和调度工作:
  • 大量的业务混部、Qos、亲和性等规划和配置工作才能带较好的资源利用率
  • 集群资源规划须深入了解业务容器资源需求,资源不足则容器无法调度,对波峰业务需预留 buffer 资源,波谷时,会造成预留的资源浪费

常见的Serverless管理模式

Serverless 模式的特点在于:无节点,以 pod 为资源交付对象和计费对象。其优势在于,完全弹性使用,没有资源浪费,应用部署灵活,无需进行节点运维。这种模式的问题在于:

资源管理成本高:

pod 数比 Node 数高一个量级,资源粒度越细,带来的精确规划成本越高。特别是当企业需要长时间使用 Serverless 资源的时候,当前主流的云厂商给出的解决方案为预留券模式,该模式需要为不同规格的 pod 对应购买相应数量的预留券以抵扣其消耗,需要用户精确地统计每一种规格 pod 的运行数量,pod 规格及运行数量为业务侧动态变化的数据,购买资源却是平台侧的行为,这中间的 Gap 导致平台侧对于资源的购买和维护成本变得极其高昂,这种不优雅的包月实现方式不仅让不应该关心精确资源使用量的人员陷入了困境,也限制了真正的资源使用者,与 Serverless 倡导的轻运维按需使用的初衷背道而驰。

财务管理成本高:

在 Serverless 模式下,计费单元在 pod 上,资源(pod)的生命周期由业务控制,业务的变更将直接带来成本的变化。成本不可控会为企业的财务管理带来极大挑战。除了成本不可控外,成本的核算和业务间的分摊也将变得棘手,传统的节点管理模式下,以节点维度来统计每个业务的使用量,将节点资源的成本消耗与业务挂钩,财务管理清晰简单,而在 Serverless 场景中,预留券的模式下, pod 生命周期各不相同,预留券每小时的抵扣对象也均不相同,从而导致了分账困难,按量计费模式下的资源消耗也需要额外统计。在 Serverless 模式下,资源和成本在传统运维模式下均不易管理,企业的各个组织均需要做出较大改变才能适应 Serverless 在企业内落地。

超级节点模式

超级节点模式的特点在于:有节点概念,但无节点运维工作,以 Node 为计费对象,兼容基于节点的运维、财务体系。从而达到了 Serverless 模式的运维简单、资源不浪费和业务部署灵活的特点,也兼顾了 Serverful 模式的成本可控、资源可控。

更简单可控的资源管理模式:

用户可以像管理一台超大号云主机一样管理 K8s 超级节点。可以通过包年包月的模式申明需要使用的固定资源总规格,后台将预留对应的资源,告别了 Serverless 模式下资源不可见,按量使用资源无法保障的担忧,让用户用得放心。针对固定资源的扩缩容变成了单节点维度的升降配;针对弹性资源的扩缩容,仅需加入按量计费的超级节点,即可按照节点上调度 pod 的实际规格进行计费,再无 buffer 资源浪费。

更轻量的运维:

无需再关注资源利用率,无需考虑调度,超级节点模式下保障资源百分百装箱。在包年包月超级节点、按量计费超级节点与普通节点共用的场景下,调度器会智能优先调度到最合适的资源上,帮助最大化实现资源的有效利用。

更简单的财务管理模式:

Serverless 模式下首创节点维度的包月计费形式,解决了精细化使用资源场景下的资源规划问题、预留券购买问题、财务管理问题。企业只需要计算固定和弹性资源的总使用量,购买合适的包年包月固定资源并配合弹性资源进行使用。预付费的包年包月计费也更适合企业财务部门的资源预算模式。

更高稳定性的服务:

超级节点底层基于自研 Serverless 容器技术 Heeler,经由内外部千万级规模验证,可以保障业务稳定运行。

超级节点产品特性

高稳定性、高安全性

为业务稳定性保驾护航:

超级节点上的一个 Pod 底层对应一个子机,底层为虚拟机级别的隔离,通过自研的安全沙箱技术和虚拟化技术,保证 Pod 间无干扰,业务间强隔离。不会出现节点上Pod间资源抢占的问题,也不会出现单 Pod 故障导致整个节点故障的情况。

为容器应用安全提供全方位保障:
  • 保障通用安全需求:集群隔离、网络隔离,底层依赖与环境安全共同保障应用安全
  • 保障应用环境安全:通过网络安全策略控制、镜像拉取安全控制保障应用环境安全,提供全方位的操作审计
  • 托管平台隔离:做到集群间隔离,角色和访问控制保障平台独立隔离
  • 基础设施隔离:容器间实现虚拟化隔离,pod 间天然做到子机级别的隔离,高可用场景下支持 pod 实现物理机、机架级别的隔离
运维更简单:

完全托管的模式,学习成本低,不依赖专职的 K8s 运维即可轻松部署业务。在日常的运维中,免去了海量的节点维护工作,不需要处理容器隔离性的问题,也极大简化了专业、复杂的资源规划和调度工作。

计费模式更灵活:

我们独创了超级节点的包年包月模式,解决了企业运维和财务头疼的问题。包年包月模式下,由用户自定义节点规格,用户可包年包月购买自定义总规格的节点算力来实现预付费,契合固定算力的在线常驻业务,包年包月的超级节点相较于普通节点单核价格更低,用户可将符合规则的 pod 全部迁移至超级节点,来降低固定资源的单核成本,从而达到降本增效的目的。按量计费模式下,可弹性使用节点资源,使用后按节点内实际使用的 CPU 内存按量计费。按量计费模式适用于弹性算力场景,可通过添加按量计费的超级节点,在业务高峰时使用弹性资源,进一步降低集群的资源成本。

完全兼容 K8s:

超级节点提供标准的 Kubernetes 服务和使用方式,满足绝大部分容器场景下的交付标准,提供了标准的 K8s 编排、运维、扩缩容等的使用方式,保留了 K8s 的扩展性,在基础能力、可观测性、云原生解决方案上均完全兼容 K8s 生态。此外,适配 Nodeless 的 K8s 特性包含:

  • 支持在超级节点上注入 Daemonset
  • 支持 pod 固定 IP
  • 支持 pod 绑定安全组
  • 支持挂载 Ceph CBD 类型的块存储设备,保留支持各种 K8s 原生支持的 CSI volume 的能力
  • 支持 pod 编排指定 hostNetwork: true
  • 支持 pod 编排中的 container/initContainer.ports 指定 hostPort
  • 支持 pod 编排中指定 hostPath
  • 支持通过 pod metrics 端口(默认9100)获取更多的指标,包括:cpu/memory/gpu/network/diskio/filefd/vmstat 以及容器的 cadvisor 指标
  • 支持特权级容器

超级节点使用场景

超级节点适用于全业务场景,尤其适合高稳态业务的运行。支持在公有云或 IDC 的标准 Kubernetes 集群、Serverless 集群中使用,可通过简单的开启方式,将固定和弹性算力调度到超级节点上,其调度模式完全兼容原集群的调度范式,可让原集群平滑进行 Serverless 化或混合云化升级。

在线常驻业务使用包月 按量超级节点

优势:高稳定、低成本、易管理 相较于包年包月的普通节点,超级节点单核价格更便宜。对于在线常驻的服务,用户所需算力固定,若当前 pod 规格大部分在 8C 以下,可使用超级节点的包年包月模式,基于 pod 总规格按需购买包年包月的超级节点,将 pod 全部调度至超级节点,降低集群资源的单核价格,实现降本诉求。

弹性业务使用按量计费超级节点

优势:高稳定、低成本、高弹性 弹性业务场景下,用户使用按量计费的超级节点,可实现快速秒级扩容,轻松应对突发流量,通过减少预留的资源 buffer 降低成本。高弹性:快速秒级扩容,轻松应对突发流量,业务流量下降后自动销毁 pod,无损缩容。低成本:减少集群预留 buffer,将集群的节点维护在资源利用率更高、使用和预留更合理的水平,节省成本。

如何创建超级节点

在 TKE 集群和 TKE Serverless 集群中均可创建超级节点。进入集群详情页 > 选择左侧菜单栏中的节点管理 > 节点池 > 单击新建节点池,选择超级节点池并填写对应参数即可:

总结

云计算的概念层出不穷,其本质上是对生产关系和生产力的配置与优化,最终达到为使用者增效的目的,在容器化的漫长进程中,企业的观念和行为都在不断变化,但接受和拥抱新技术对于每一个处于进程中的亲历者来说都一定有一个阵痛期,如何帮助用户用最少的代价换取最大的收益,如何能够平衡好优势与矛盾,是每个云厂商应该思考的课题。从完全的 Serverless 到有节点的 Serverless,我认为并不是产品技术的退步,只要能够解决使用者的痛点,为使用者带来切实的价值,我们不应该拘泥于产品的形态,我们走出的这一步,其实是进步的,我们正在走向伟大的创新。

0 人点赞