在 Kubernetes 和容器化技术愈发成熟的今日,越来越多企业开始将业务应用迁移到云上,采用云原生架构支持业务高速稳定地发展。
而随着云计算向开发流程纵深发展,Serverless 架构的成熟让云原生技术进入全新阶段——Serverless 把公有云弹性伸缩、免运维、快速接入等特性发挥到了极致,极大降低了用户的使用成本,让用户和企业只需要专注于其业务逻辑,实现真正意义上的敏捷开发。
为了更好帮助企业业务应用真正践行 Serverless 化的新型云原生思想,火山引擎云原生团队正在从理念、系统设计、架构设计等多方面推进产品的升级和创新,以充分发挥 Serverless 的优势及价值。
从节点中心到 Serverless 化架构
传统 Kubernetes 架构一般以节点为中心,即技术团队需要基于云服务器等资源节点搭建集群,并围绕节点进行运维管理的传统 Kubernetes 集群架构。
随着业务规模的扩大和节点数的增加,这种架构在容器应用的部署和运行等方面往往存在诸多局限性,主要表现在以下几个方面:
● 节点运维复杂:用户需要自行管理和维护节点,具体包括节点的配置与初始化、操作系统更新与升级、安全性管理、运行监控与日志采集分析、故障恢复、网络管理、存储管理、扩缩容、资源规划与分配,以及资源成本管理等复杂且繁琐的节点运维工作;
● 资源利用率低:节点预留固定资源,即便实际工作负载所需资源量较少,也无法降低节点资源占用;节点资源碎片率较高,分布在各个节点之上的部分未使用的资源难以被有效聚合,无法充分利用;资源过度分配,为了避免性能瓶颈,往往倾向于按照最大负载规划资源,难以预测实际需求,可能造成大量资源闲置;
● 资源扩容速度慢:容器应用可能会经历突发流量,需要快速扩展以响应增加的负载。在传统以节点为中心的架构中,计算资源的扩展往往需要创建和配置新的云服务器节点,这个过程可能需要几分钟,无法实现即时扩展。
火山引擎弹性容器实例(Volcengine Container Instance,简称 VCI)是针对上述情况推出的新型云原生方案,它抽象自字节跳动内部多年云原生技术积累,是一种 Serverless 和容器化的计算服务——
通过 Virtual Kubelet 技术与火山引擎容器服务 VKE 无缝结合,弹性容器实例 VCI 可以为用户提供弹性计算和 Kubernetes 编排能力,支持秒级启动、高并发创建、沙箱容器安全隔离。
通过融合 Serverless 和容器的优势,弹性容器实例 VCI 能为企业提供一个高效、可靠和安全的运行环境,使用户能够专注于开发和运行云原生架构的应用程序,而无需关心底层基础设施的管理和维护,并且仅为业务实际运行所需要的资源付费,帮助企业更加合理地控制用云成本。
基础设施免运维、计算资源免规划
在传统自建 Kubernetes 集群的架构中,无论是控制平面还是数据平面,作为容器组 Pod 运行的载体,节点都位于 Kubernetes 架构的核心位置,当节点计算资源不足时,需要先通过增加节点来补充计算资源,才能支持业务工作负载的部署或者扩容。
在云上,以火山引擎容器服务 VKE 为代表的各类托管 Kubernetes 服务会代替用户管理和运维 Kubernetes 控制平面,提供具有 SLA 保障的托管服务。而对于运行用户实际业务工作负载的数据平面而言,则通常需要用户自行运维工作节点,并需要根据业务特征对节点所提供的计算资源进行提前规划,如在业务高峰需要进行提前扩容,在业务低谷则需要缩容。
因此,在传统以节点为核心的 Kubernetes 架构中,节点运维往往需要耗费技术团队大量精力;同时,如何平衡资源超前规划与资源成本问题,也成为企业进入“精细化用云”时代后不得不思考的问题。
弹性容器实例 VCI 提供了 Serverless 和容器化的计算服务,每个 VCI 只会为单个 Pod 提供运行环境和计算资源,用户无需关心底层节点的运维和容量规划,只需要按需部署容器应用即可。而在使用 VCI 部署容器应用时,可以使用原生的 Kubernetes 语义,与节点中心的架构并无区别。
在资源层面,弹性容器实例 VCI 以火山引擎计算基础设施作为资源池,提供多种资源类型的容器计算资源,方便用户根据业务需要灵活选择。同时,用户也无需关注资源容量规划问题,VCI 提供海量计算资源,不会出现传统节点中心架构下常见的 Pod 漂移(Drift)和重调度(Rescheduling)等现象,而进一步造成服务中断、性能波动、数据不一致、调度延迟等问题。
最后,容器服务 VKE 与弹性容器实例 VCI 的无缝集成,不仅实现了 Kubernetes 集群控制平面全托管,同时也为用户提供了数据平面(即弹性容器实例 VCI)的 Serverless 化全托管、免运维、安全隔离,极大地降低用户在 Kubernetes 基础设施上的运维成本,并且省去了容量规划的复杂性,从而使用户可以将更多精力聚焦于自身业务应用。
极致弹性,所需即所得
弹得省
根据 Flexera 在《2022 年云状态报告》披露的调查数据,受访企业自评估云成本浪费达 32%,“成本”已连续三年成为企业最关注的用云挑战之一——“精细化用云”开始得到越来越多企业的重视,如何在满足业务发展需求的同时节省云上成本开销,成为企业用云所需要解决的一项重要挑战。
弹性容器实例 VCI 在产品设计之初就围绕企业“云成本控制”的需求,强调按照实际使用资源量精细化计费,支持多种计费模式,助力企业真正用好云。
精细化计费:弹性容器实例 VCI 按照用户容器组(Pod)实际使用的资源计费,计费资源包括 vCPU、内存、GPU 等。同时 VCI 实例的计费时长为其运行时长,即用户 Pod 从下载容器镜像开始到停止运行为止所使用的时间,精确到秒级,真正实现了按实际用量计费。
提升装箱率:在云原生架构下,相较于传统计算资源,弹性容器实例的另一优势是减少闲置资源、提升装箱率,从而降低用户的计算资源使用成本。具体而言,Kubernetes 集群使用云服务器 ECS 作为工作节点时,需要在节点上运行 Kubernetes 所需的系统组件,因此需要预留部分计算资源,存在一定额外成本;而若使用弹性容器实例 VCI 作为计算资源,则只需要为业务 Pod 实际使用资源付费:
● 示例:运行 3 个业务 Pod,其对于 vCPU 的资源需求分为 16C、8C、8C
● 使用 ECS:至少需要 2 台 32C vCPU 的 ECS 节点(需要在每个节点为系统预留资源)
● 使用 VCI:创建 3 个与 Pod 所需资源相等的 VCI 实例,即 32 C 计算资源(无任何资源闲置)
丰富计费方式:当前弹性容器实例 VCI 已正式支持按量计费,并将上线抢占式实例(Spot)付费模式的邀测活动,同时预留实例、弹性预约实例等预付费模式也有计划支持。通过提供多种付费模式,我们希望能帮助用户进一步优化对计算资源的成本管理和预算编制,针对不同业务场景选用不同付费模式,从而更好地协调业务资源需求与用云成本规划。
弹得出
弹性容器实例 VCI 充分整合了火山引擎的计算资源基础设施进行算力供给,并且根据不同的底层硬件能力提供了多种实例规格族供用户选择,提供差异化的计算、存储、网络性能,支持覆盖多种业务应用和服务场景。
CPU 通用型规格族:如通用算力型 u1、通用型 n3i 等,提供了均衡的 vCPU、内存、网络能力,可以满足大多数场景下的服务需求。
GPU 计算型规格族:如 GPU 计算型 gni2(搭载 NVIDIA A10 GPU 显卡)、GPU 计算型 g1v(搭载 NVIDIA V100 GPU 显卡)等,可在大模型训练、文本与图像生成、任务推理等各类 AI 计算类场景下提供高性价比使用体验。
最新推出的通用算力型 u1 实例规格族依托火山引擎资源池化技术和智能调度算法进行动态资源管理,能够为企业提供稳定的算力供应,并且支持多种处理器以及处理器内存的灵活配比,从 0.25C-0.5Gi、0.5C-1Gi、1C-2Gi 等细粒度小规格到 24C-48Gi、32C-256Gi 等大规格可供任意选择,具有极高的性价比!
背靠庞大的算力资源供给,弹性容器实例 VCI 也为用户提供了业界领先的弹性资源优先级调度策略:结合容器服务 VKE,我们支持用户通过自定义资源策略(ResourcePolicy)将弹性调度到云服务器 ECS、弹性容器实例 VCI 等不同类型算力资源池,并根据实际业务场景按照百分比阈值、优先级控制等策略进行调度分配。
这意味着用户可以将云服务器 ECS 算力资源池和弹性容器实例 VCI 算力资源池结合使用,享用海量火山引擎计算资源;同时,结合容器集群中的 Cluster Autoscaler 能力和 VCI,即便容器集群中未提前申请计算资源,用户也能够及时获得弹性资源高效支撑业务应用。
弹得快
面对在线业务不可预测的业务流量洪峰,确保业务运行稳定与用户体验至关重要;在业务发展的关键时刻,快速弹出计算资源与快速启用业务应用也非常关键。弹性容器实例同样天然适配这些场景。
一方面,火山引擎弹性容器实例(VCI)的弹性能力可满足分钟级数万核 vCPU 计算资源的需求,保证在业务需要时,快速弹出充足计算资源。当流量洪峰结束,业务工作负载降低时亦可迅速释放弹性计算资源,让用云成本更加节约。
另一方面,容器镜像拉取的耗时往往较长,这一点在大规模 Pod 并发启动的情况下更加严重。弹性容器实例 VCI 不仅具备 VKE 提供的多种容器镜像加速能力,如容器镜像延迟加载(镜像懒加载)、P2P 容器镜像分发等,也拥有容器镜像缓存能力这样的特有加速能力,根据实际测试数据,容器镜像缓存可以使容器镜像(数据量在百 G 以内)的 Pod 的整体启动耗时控制在十秒级别,帮助用户大幅提升效率、降低云成本。
结语
自 2022 年正式上线以来,弹性容器实例 VCI 服务了诸多大中型企业客户,在字节跳动内外部业务场景中得到了充分的实践检验。火山引擎云原生团队也基于客户服务经验,不断打磨产品能力,持续提升产品服务的质量和稳定性:
● 在生态集成方面,弹性容器实例 VCI 不仅持续增强与 Kubernetes 生态的集成,能够与火山引擎容器服务 VKE 无缝集成,使客户能够更容易地在云原生环境中部署和管理容器应用;
● 在分布式容器镜像启动加速方面,VCI 与火山引擎镜像仓库 CR 等产品协同改进 Dragonfly 架构,进一步增强了镜像分发到 VCI 中的效率与可靠性;
● VCI 所特有的容器镜像缓存加速能力,更好地解决了大规模并发、大型容器镜像场景下的 Pod 启动速度慢与镜像拉取成功率低等问题,减轻镜像仓库压力;
● 在计算资源规格的多样性方面,VCI 在 2023 年推出了更多的可选资源,如基于火山引擎自研 DPU 全卸载架构的全新通用计算型实例 n3i,屏蔽后端服务器差异,理论具有无限资源池的通用算力型实例 u1 等。
火山引擎云原生团队主要负责火山引擎公有云及私有化场景中 PaaS 类产品体系的构建,结合字节跳动多年的云原生技术栈经验和最佳实践沉淀,帮助企业加速数字化转型和创新。产品包括容器服务、镜像仓库、分布式云原生平台、函数服务、服务网格、持续交付、可观测服务等。
面向 2024 年,弹性容器实例 VCI 将持续在 Serverless Kubernetes 产品架构与形态下持续精进与探索,为内外部更多客户提供基础设施免运维、计算资源免规划、极致弹性的 Serverless 容器化产品与服务,能够更好地支持客户在 AIGC、生信科学计算、社交电商等业务场景的多种 GPU 和 CPU 的算力需求。