![AWS Fargate 显著提升 Windows 容器的启动时间](https://static001.infoq.cn/resource/image/91/86/917f4a531c6f90a1f434996b1de13f86.jpg)
亚马逊云科技宣布改进在 AWS Fargate 上运行的 Windows 容器的启动时间。启动时间的改善是通过预制 AMI、EC2 快速启动,以及取消网络代理进行的实现,该团队还为用户提供了进一步提高容器启动时间的建议。
亚马逊云科技表示,他们“已经将 Windows Server 2022 Core 的基础设施准备时间缩短了 42%”。他们还指出,Fargate Windows 的启动时间可划分为三个高级桶:基础架构准备时间、容器镜像拉取时间,以及任务启动时间。
基础设施准备时间包括了提供底层计算所需的时间以及拉取容器镜像所需的时间。拉取容器镜像所需时间包括 Containerd 对容器镜像的拉取和提取时间。最后的任务启动时间包括 Fargate 代理和 Containerd 一起使用合适的配置启动任务容器。
亚马逊云科技团队专门针对 Fargate 的优化预制了更为高效的 Windows Server AMI,减少了每个容器所需的设置,降低了部署过程中的潜在延迟和错误。Contino 高级顾问 Mark Nash 将镜像的制作描述为:
创建虚拟机、容器或磁盘的自定义镜像的一种规范化、自动化且可重复的流程。将所需的系统配置拷到虚拟机镜像而不是在实例创建后再进行配置,虚拟机的配置时间将有所加快。
团队还为 Fargate Windows 的任务启动启用了 EC2 快速启动。EC2 快速启动利用预配置快照,最大限度地减少了 Windows 操作系统启动过程中的重启和复杂的初始化步骤。EC2 快速启动会根据提供的设置创建一组临时的 T3 实例,在实例完成标准的启动步骤之后立即快照,原始实例随即被终止,而快照将按需生成实例。AWS 承诺“随时提供足够的快速启动快照,以满足需求”。
团队用一个优化后的进程替代了原先基于 sidecar 的网络代理,该进程可在任务网络的命名空间内运行 Fargate 工作进程,如此一来就完全不需要网络代理了。最后,Fargate 现在可以在 Windows Server 操作系统启动过程完成后立即启动实例引导,无需再等待 EC2 的启动代理启动该过程。
团队也为进一步提升 Fargate 上运行的 Windows Server 任务的启动性能提供了一些建议。为充分利用 Fargate Windows 缓存,需在最新的 Windows Server 基本镜像上构建容器,微软会在每月的第二个星期二发布最新的基础容器镜像。Fargate Windows 缓存只存储最新和上个月的 Windows Server Core 基础镜像。
团队还建议使用 Windows Server 2022 Core 基础镜像,因为其占用的空间更小,启动时间也更快。占用空间更小的部分原因是其不提供 GUI 或 Windows 桌面功能。
谷歌云中和 AWS Fargate 最接近的服务是 Cloud Run。不过在文章撰写时 Cloud Run 的容器还是不支持 Windows 操作系统。Azure 的同类型服务为 Azure Container Intances,同时支持 Linux 和 Windows 容器。
只有在 Amazon ECS 上运行的 AWS Fargate 才支持 Windows,亚马逊 EKS 上的 Fargate 不支持 Windows。所有支持 Fargate 的地区都可享受改善后的启动时间。
原文链接:
https://www.infoq.com/news/2024/06/aws-fargate-windows-launch/
评论