喜报
数字时代,云计算正在以中枢神经的角色成为企业数字化转型的胎生力量,而云原生技术作为云计算中枢神经整体实现的关键技术内核正在对数字经济基础设施底座的粘性、韧性、弹性发挥决定作用,利用云原生技术、架构、理念构建数字化新底座正在成为各行各业数字化转型的实践重点。
在此背景下,云原生产业联盟现启动2023年度云原生优秀案例评选征集,以云原生高质量赋能企业发展风尚,引领推进云原生技术创新、模式升级、架构演进,全面助力数实融合价值实现。
腾讯云云原生 Serverless SCF on K8s 、腾讯专有云 PaaS 平台 TCS 两项云原生技术产品,在此次评选中,荣获2023年度云原生技术创新领航者-云原生技术创新案例。2023年6月6日在工业和信息化部主办的ICT 中国·高层论坛-云原生产业高峰论坛上,由工信部和信通院领导进行了颁奖公布。
SCF on K8s
自 2013 年提出以来,Serverless(无服务器)作为屏蔽服务器、按调用计费、事件驱动、弹性自动伸缩的计算服务,深受开发者喜爱,被称为云原生未来发展的方向。
最新的调查报告显示:在核心业务中使用 Serverless 的用户达到 18.11%;已经开始和计划使用 Serverless 技术的用户超过了 70%。根据 Datadog 数据,有超过 50% 的使用云服务的企业或组织使用了 Serverless 技术。
但是,当开发者从创业阶段过渡到大型企业阶段,原来的 Serverless 模式逐渐给企业的管理、运维以及财务等带来一系列的挑战,这也是当期Serverless很难在大型企业全面应用的根本原因,为了破解这样的难题,腾讯云工程师从深度分析症结,推出了顺应企业发展需求的技术,打造真正服务于企业的 serverless 平台。
SCF on K8s 实现Serverless 能力同时跑公有云和私有云
腾讯云云函数 SCF on K8s 将 SCF 的开发工具栈和公有云资源池进行解耦,让 SCF 的整套能力可运行在企业自己的 K8s 集群中,可完整复用企业已有资源。同时,SCF 完整兼容 K8s API 和 RBAC 权限体系,方便中台团队快速集成 SCF 能力,无需重复对接。有了 SCF 能力,中台团队也无需从头构建开发工具栈。
如下描绘了 SCF on K8s 在企业研效流程中的结合:
腾讯云云函数 SCF on K8s 不仅让企业内的业务开发者拥有公有云 SCF 一样的开发体验,也让中台运维团队可以从研发流程到资源管控到可观测上管理 SCF,同时,跑在企业统一的 K8s 资源池中,让财务预算工作也更好展开。
SCF on K8s 可无缝集成到企业已有技术中台,满足企业多云跨云需求
SCF on K8s 可以满足企业多样的用云需求:从 0 到1阶段的公有云弹性资源模式,让企业快速试错;从 1 到 100 阶段的混合资源池模式,让企业选择最经济的方案,无需被公有云绑定,在自己的基础设施上使用 Serverless。
SCF on K8s 完全兼容 K8s API 和权限体系,并提供了 CRD,中台团队可像管理 Workload 一样管理 SCF。
● 统一的研效流程管理:
业务开发者遵循研发审批流开发、测试、发布,全程都在中台团队管控之下;
● 可控的资源 quota:
业务开发者根据需要申请资源 quota,中台团队通过 K8s 集群资源管控来进行资源供给;
● 可观测的 SCF:
SCF 跑在 K8s 集群中,兼容 K8s 本身的PVC、服务发现、监控日志机制。
SCF on K8s 和公有云 SCF 的能力保持完全一致,业务开发者只需选择自己熟悉的编程语言、IDE 完成代码编写,通过 SCF 命令行工具或中台团队提供的发布流程完成代码的发布,最后配置触发器和 算力(CPU 或 GPU)即可。真正专注于业务需求实现。
在大型企业的研发模式中,微服务是占据主流的存在。不同业务开发各自的服务模块,同时又能由服务发现、服务治理等中央服务实现统一管理。非常符合企业的统一纳管,分而治之的理念。而微服务也存在过于复杂的问题,快速迭代的业务使用微服务体系,研发效率会偏低,一次发布需要半天对于敏捷研效是个巨大的挑战。
SCF on K8s 可以和微服务体系实现补位,对于快速迭代的项目,可先采用 SCF 实现高效开发,快速发布;待项目成熟后,再转为微服务体系。微服务在在线场景上生态丰富,表现卓越,而对于近离线场景的数据处理、视频转码等事件触发型服务,则可使用 SCF 实现,不管是开发效率还是资源利用率都能更高。
业界首创在离线混合资源池模式,有效提升 K8s 集群资源利用率
腾讯云云函数SCF on K8s 支持配置资源配比,将 K8s 集群资源和公有云弹性资源搭配使用。在该模式下,函数请求优先调度到 K8s 集群,函数调度层感知到 K8s 集群资源不足时调度回函数公有云资源池。如此以来,企业可根据业务实际请求量,配置一个打底的 K8s 集群满足日常资源所需。同时,利用函数公有云资源池,响应高峰期的溢出资源所需。在实现业务高可用的同时,实现最经济的云资源采购。
K8s 集群基于 Virtual Kubelet 抽取闲置资源,成为离线算力,将一部分低优的任务调度过来,这些任务会在有资源供给时执行。该方案不仅在业务调度层较为复杂,也存在挑业务的情况,需要业务能接受较长的等待时间,同时,低优任务如果不及时释放资源,又会反过来影响在线业务的资源供给。
而将 K8s 离线算力作为虚拟的 K8s 集群绑定到函数服务,再开启混合资源池,这些问题将迎刃而解——
● 不挑业务:
函数的主动调度机制在 K8s 离线资源有供给时立即调度任务执行,没有时及时调度回公有云资源池,保障任务始终可以执行;
● 不影响在线业务:
函数的超时配置限制任务的最长执行时间,执行完或到了超时时间会立即释放资源,最大程度保障在线业务的资源供给;
● 业务调度层简单易用:
只需要将任务发布为事件函数,配置消息队列、定时任务等触发器,并打开混合资源池配置即可。
腾讯内部的实践
TKE 容器服务在腾讯集团内部作为统一的应用研发管理平台,在标准的 K8s 能力之上,提供了跨集群、跨 zone 的容器资源调度管理能力和应用维度的运维治理能力,也是技术中台的一种实现,在过去的三年里很好的支撑了腾讯集团业务全面云原生上云。
腾讯云云函数 SCF 作为 Serverless 的落地实现,在集团内部同样深受业务开发同学的喜爱,例如大家熟悉的腾讯文档、腾讯会议、腾讯地图、企业微信等都有大量的服务是基于函数开发上线。
在具体的研发模式上,核心业务逻辑和重点的在线服务主要是用微服务架构实现,服务管理、流量管理、故障容错和配置管理用北极星做了统一治理。函数主要用在以下几个场景:
● 前端的 SSR 和 BFF 场景,例如腾讯文档的表格、演示文档的 SSR 用函数实现;
● 近线数据处理场景,例如腾讯地图的导航数据计算、地图瓦片数据的计算等用函数实现;
● 离线任务场景,例如运维团队的定时巡检任务和定时拨测任务、计费团队的定时账单汇算任务等用函数实现。
这些场景中,函数以其灵活高效且免运维的开发体验很好的支撑了业务发展。但独立的按量计费模型也给业务团队的财务预算带来了挑战:不好预估项目的成本支出,业务增长带来使用量上涨后,按量计费的总费用相比采买一批机器不够划算等,在集团降本增效的大环境下,成为业务团队的一块心病。
22 年 11 月,腾讯云云函数 SCF on K8s 通过“任务中心”的产品形态集成到 TKE,拉通账户权限体系,兼容统一的发布审批流程和预算 quota 申领机制。
上线后,目前已经有大量的 K8s job、cronjob 迁移到 云函数SCF 任务平台,不仅开发简单,且在任务的响应延迟等技术指标上存在量级上的提升。
不少之前使用公有云函数实现的业务也迁移过来,兼容了 TKE 的 quota 申领机制,业务团队可以在传统的函数按量计费模式和批量采买容器作为函数的运行资源池之间选择。对于量级较大的业务来说,后者是控制成本的最佳措施,降本增效环境下的心病解除。
SCF on K8s 抢先体验指南
SCF on K8s 资源托管模式目前已经全量开放,登录 - 腾讯云(https://cloud.tencent.com/),赶紧试起来吧!
创建函数命名空间并绑定 TKE 集群
1. 登录 - 腾讯云,单击左侧导航栏的函数服务。
2. 在函数服务页面上方选择期望创建函数的地域,单击命名空间右侧的⚙️,进入命名空间管理。如下图所示:
3.在“命名空间”管理弹窗中,单击新增命名空间,进入命名空间创建弹窗。
如下图所示:
4.在资源托管模式选项中,选择 K8s,并选择对应的 TKE 集群完成绑定即可完成设置。设置完成后在命名空间下创建函数即可开始使用。