本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
亚马逊 EKS 优化了 Windows AMI 管理
Windows Amazon EKS 优化版 AMI 基于 Windows Server 2019 和 Windows Server 2022 构建。它们被配置作为 Amazon EKS 节点的基本映像。默认情况下,AMI 包括以下组件:
您可以通过查询 AWS Systems Manager 参数存储 API,以编程方式检索亚马逊 EKS 优化的 AMI 的亚马逊系统映像 (AMI) ID。此参数使您无需手动查找 Amazon EKS 优化版 AMI ID。有关系统管理器参数存储 API 的更多信息,请参阅GetParameter。您的用户账户必须具有 ssm: GetParameter IAM 权限才能检索亚马逊 EKS 优化的 AMI 元数据。
以下示例检索了适用于 Windows Server 2019 LTSC Core 的最新 Amazon EKS 优化 AMI 的 AMI ID。AMI 名称中列出的版本号与其准备的相应 Kubernetes 版本有关。
aws ssm get-parameter --name /aws/service/ami-windows-latest/Windows_Server-2019-English-Core-EKS_Optimized-1.21/image_id --region us-east-1 --query "Parameter.Value" --output text
输出示例:
ami-09770b3eec4552d4e
管理自己的亚马逊 EKS 优化版 Windows AMI
迈向生产环境的一个重要步骤是在整个亚马逊 EKS 集群中保持相同的亚马逊 EKS 优化的 Windows AMI 和 kubelet 版本。
在 Amazon EKS 集群中使用相同的版本可缩短故障排除时间并提高集群一致性。亚马逊 EC2 映像生成器
使用亚马逊 EC2 映像生成器在 Windows 服务器版本、AWS Windows 服务器 AMI 发布日期、 and/or 操作系统构建版本之间进行选择。构建组件步骤允许您在现有的 EKS 优化的 Windows 工件和 kubelet 版本之间进行选择。欲了解更多信息:https://docs.aws.amazon.com/eks/latest/userguide/eks-custom-ami-windows.html
注意:在选择基础映像之前,请查阅 Windows Server 版本和许可证部分,了解与发布渠道更新有关的重要详细信息。
为自定义 EKS 优化的 AMI 配置更快的启动速度
使用经过Windows亚马逊EKS优化的自定义AMI时,通过启用快速启动功能,Windows工作节点的启动速度最多可提高65%。此功能保留了一组预先配置的快照,这些快照包括 Sysprep 专用、 Windows 开箱即用体验 (OOBE) 步骤和所需的重启已经完成。然后,这些快照将在后续启动时使用,从而缩短横向扩展或更换节点的时间。只能通过 EC2 控制台或 AWS CLI 为您拥有的 AMI 启用快速启动,并且维护的快照数量是可配置的。
注意:快速启动与默认 Amazon-provided EKS 优化的 AMI 不兼容,请在尝试启用之前按上述方式创建自定义 AMI。
欲了解更多信息:AWS Windows AMI-配置您的 AMI 以加快启动速度
在自定义 AMI 上缓存 Windows 基础层
Windows 容器镜像比 Linux 容器镜像大。如果您正在运行任何容器化.NET Framework-based 应用程序,则平均图像大小约为 8.24GB。在 Pod 调度期间,必须在 Pod 进入运行状态之前将容器镜像完全提取到磁盘中。
在此过程中,容器运行时 (containerd) 提取并提取磁盘中的整个容器镜像。拉取操作是一个并行过程,这意味着容器运行时会并行拉取容器镜像层。相比之下,提取操作是按顺序进行的,而且是 I/O 密集的。因此,容器镜像可能需要 8 分钟以上的时间才能完全提取并准备好供容器运行时 (containerd) 使用,因此,容器启动时间可能需要几分钟。
正如 “修补 Windows 服务器和容器” 主题中所述,可以选择使用 EKS 构建自定义 AMI。在 AMI 准备过程中,您可以添加额外的 EC2 映像生成器组件,在本地提取所有必需的 Windows 容器镜像,然后生成 AMI。此策略将大大缩短 Pod 进入运行状态的时间。
在 Amazon EC2 映像生成器上,创建一个组件来下载必要的图像并将其附加到映像配方中。以下示例从 ECR 存储库中提取特定图像。
name: ContainerdPull
description: This component pulls the necessary containers images for a cache strategy.
schemaVersion: 1.0
phases:
- name: build
steps:
- name: containerdpull
action: ExecutePowerShell
inputs:
commands:
- Set-ExecutionPolicy Unrestricted -Force
- (Get-ECRLoginCommand).Password | docker login --username AWS --password-stdin 111000111000.dkr.ecr.us-east-1.amazonaws.com
- ctr image pull mcr.microsoft.com/dotnet/framework/aspnet:latest
- ctr image pull 111000111000.dkr.ecr.us-east-1.amazonaws.com/myappcontainerimage:latest
为确保以下组件按预期运行,请检查 EC2 Image builder (EC2InstanceProfileForImageBuilder) 使用的 IAM 角色是否附带策略:
博客文章
在以下博客文章中,您将逐步了解如何为自定义 Amazon EKS Windows AMI 实施缓存策略:
使用 EC2 映像生成器和映像缓存策略加快 Windows 容器的启动时间