弹性容器实例:从节点中心转型 Serverless 化架构的利器

容器服务弹性计算K8s

picture.image

火山引擎弹性容器实例 VCI 是一种无服务器 Serverless 和容器化的计算服务,通过 Virtual Kubelet 技术与火山引擎容器服务无缝结合,提供弹性计算和 Kubernetes 编排能力。

来源 | 火山引擎云原生团队

在 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 计算资源(无任何资源闲置)

picture.image

丰富计费方式:当前弹性容器实例 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,即便容器集群中未提前申请计算资源,用户也能够及时获得弹性资源高效支撑业务应用。

弹得快

面对在线业务不可预测的业务流量洪峰,确保业务运行稳定与用户体验至关重要;在业务发展的关键时刻,快速弹出计算资源与快速启用业务应用也非常关键。弹性容器实例同样天然适配这些场景。

picture.image

一方面,火山引擎弹性容器实例(VCI)的弹性能力可满足分钟级数万核 vCPU 计算资源的需求,保证在业务需要时,快速弹出充足计算资源。当流量洪峰结束,业务工作负载降低时亦可迅速释放弹性计算资源,让用云成本更加节约。

另一方面,容器镜像拉取的耗时往往较长,这一点在大规模 Pod 并发启动的情况下更加严重。弹性容器实例 VCI 不仅具备 VKE 提供的多种容器镜像加速能力,如容器镜像延迟加载(镜像懒加载)、P2P 容器镜像分发等(详见 《大规模并发下如何加快 Pod 启动速度》 ),也拥有容器镜像缓存能力这样的特有加速能力,根据实际测试数据,容器镜像缓存可以使容器镜像(数据量在百 G 以内)的 Pod 的整体启动耗时控制在十秒级别, 帮助用户大幅提升效率、降低云成本。

结语

自 2022 年正式上线以来,弹性容器实例 VCI 服务了诸多大中型企业客户,在字节跳动内外部业务场景中得到了充分的实践检验。火山引擎云原生团队也基于客户服务经验,不断打磨产品能力,持续提升产品服务的质量和稳定性:

  • 在生态集成方面,弹性容器实例 VCI 不仅持续增强与 Kubernetes 生态的集成,能够与火山引擎容器服务 VKE 无缝集成,使客户能够更容易地在云原生环境中部署和管理容器应用;
  • 在分布式容器镜像启动加速方面,VCI 与火山引擎镜像仓库 CR 等产品协同改进 Dragonfly 架构,进一步增强了镜像分发到 VCI 中的效率与可靠性;
  • VCI 所特有的容器镜像缓存加速能力,更好地解决了大规模并发、大型容器镜像场景下的 Pod 启动速度慢与镜像拉取成功率低等问题,减轻镜像仓库压力;
  • 在计算资源规格的多样性方面,VCI 在 2023 年推出了更多的可选资源,如基于火山引擎自研 DPU 全卸载架构的全新通用计算型实例 n3i,屏蔽后端服务器差异,理论具有无限资源池的通用算力型实例 u1 等。

面向 2024 年,弹性容器实例 VCI 将持续在 Serverless Kubernetes 产品架构与形态下持续精进与探索,为内外部更多客户提供基础设施免运维、计算资源免规划、极致弹性的 Serverless 容器化产品与服务,能够更好地支持客户在 AIGC、生信科学计算、社交电商等业务场景的多种 GPU 和 CPU 的算力需求。

欢迎感兴趣的用户扫码咨询、使用!

picture.image

相关链接

[1] 火山引擎: www.volcengine.com

[2] 火山引擎 VKE: www.volcengine.com/product/vke

[3] 火山引擎 VCI: www.volcengine.com/docs/6460/76908

火山引擎云原生团队

火山引擎云原生团队主要负责火山引擎公有云及私有化场景中 PaaS 类产品体系的构建,结合字节跳动多年的云原生技术栈经验和最佳实践沉淀,帮助企业加速数字化转型和创新。产品包括容器服务、镜像仓库、分布式云原生平台、函数服务、服务网格、持续交付、可观测服务等。

picture.image

picture.image

picture.image

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论