帮助改进此页面
想为本用户指南做出贡献? 滚动到页面底部,然后选择在 GitHub 上编辑此页面。您的贡献有助于我们的用户指南为每个人提供更充分的参考。
使用优化型 Amazon Linux AMI 创建节点
Amazon EKS 优化的 Amazon Linux AMI 基于 Amazon Linux 2(AL2)和 Amazon Linux 2023(AL2023)构建。配置作为 Amazon EKS 节点的基本映像。AMI 配置为与 Amazon EKS 搭配使用,它包含以下组件:
-
kubelet
-
Amazon IAM 身份验证器
-
Docker(Amazon EKS 版本
1.23
及更早版本) -
containerd
注意
-
您可以在 Amazon Linux 安全中心
跟踪 AL2 的安全和隐私事件,或订阅关联的 RSS 源 。安全和隐私事件包括问题的概述、受影响的程序包以及如何更新实例以解决问题。 -
在部署加速版或 Arm AMI 之前,请先查看 Amazon EKS 优化版加速型 Amazon Linux AMI 和 Amazon EKS 优化版 Arm Amazon Linux AMI 中的信息。
-
对于 Kubernetes 版本
1.23
,您可以使用可选引导标记测试从 Docker 迁移到containerd
。有关更多信息,请参阅 测试将 Amazon Linux 2 从 Docker 迁移到 containerd。 -
从 Kubernetes 版本
1.25
开始,您将无法再将 Amazon EC2P2
实例与现成的 Amazon EKS 优化加速 Amazon Linux AMI 结合使用。对于 Kubernetes 版本1.25
或更高版本,这些 AMI 将支持NVIDIA 525
系列或更高版本的驱动程序,这些驱动程序与P2
实例不兼容。但NVIDIA 525
系列或更高版本的驱动程序与P3
、P4
和P5
实例兼容,因此您可以通过 Kubernetes 版本1.25
或更高版本的 AMI 使用这些实例。请首先将所有P2
实例迁移到P3
、P4
和P5
实例,然后再将您的 Amazon EKS 集群升级到版本1.25
。您还应主动升级您的应用程序以支持NVIDIA 525
系列或更高版本。我们计划在 2024 年 1 月晚些时候将更新的NVIDIA 525
系列或更新驱动程度反向移植到 Kubernetes 版本1.23
和1.24
。 -
在版本
1.30
或更高版本中新创建的任何托管节点组都将自动默认使用 AL2023 作为节点操作系统。以前,新节点组将默认为 AL2。在创建新节点组时,您可以通过选择 AL2 作为 AMI 类型来继续使用 AL2。 -
对 AL2 的支持将于 2025 年 6 月 30 日结束。更多有关信息,请参阅 Amazon Linux 2 FAQs
。
Amazon EKS 优化版加速型 Amazon Linux AMI
注意
基于 AL2023 的 Amazon EKS 加速 AMI 将在以后的某个日期推出。如果您有加速工作负载,则应继续使用 AL2 加速的 AMI 或 Bottlerocket。
Amazon EKS 优化加速的 Amazon Linux AMI 建立在标准的 Amazon EKS 优化的 Amazon Linux AMI 之上。配置作为 Amazon EKS 节点的可选映像,以支持基于 GPU、Inferentia
除标准 Amazon EKS 优化版 AMI 配置外,加速 AMI 还包含:
-
NVIDIA 驱动程序
-
nvidia-container-runtime
-
Amazon Neuron 驱动程序
有关加速的 AMI 中包含的最新组件的列表,请参阅 GitHub 上的 amazon-eks-ami
版本
注意
-
Amazon EKS 优化版加速型 AMI 仅支持基于 GPU 和 Inferentia 的实例类型。务必在节点 Amazon CloudFormation 模板中指定这些实例类型。使用 Amazon EKS 优化加速型 AMI,即表明您同意 NVIDIA 云最终用户许可协议(EULA)
。 -
Amazon EKS 优化版加速型 AMI 以前称为带 GPU 支持的 Amazon EKS 优化版 AMI。
-
以前版本的 Amazon EKS 优化加速 AMI 安装
nvidia-docker
存储库。Amazon EKS AMI 版本v20200529
及更高版本中不再包含此存储库。
启用基于 Amazon Neuron(ML 加速器)的工作负载
有关在 Amazon EKS 中使用 Neuron 的训练和推理工作负载的详细信息,请参阅以下参考资料:
-
Amazon Neuron 文档中的容器 - Kubernetes - 入门
-
在 GitHub 上的 Amazon Neuron EKS 示例中进行训练
启用基于 GPU 的工作负载的步骤
以下步骤介绍如何使用 Amazon EKS 优化版加速型 AMI 在基于 GPU 的实例上运行工作负载。
-
当 GPU 节点加入集群后,您必须在您的集群上应用 适用于 Kubernetes 的 NVIDIA 设备插件
,以作为 DaemonSet 使用。将
替换为您需要的 NVIDIA/k8s-device-pluginvX.X.X
版本,然后运行以下命令。 kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/
vX.X.X
/deployments/static/nvidia-device-plugin.yml -
您可以使用以下命令验证节点是否具有可分配 GPU。
kubectl get nodes "-o=custom-columns=NAME:.metadata.name,GPU:.status.allocatable.nvidia\.com/gpu"
部署 Pod 以测试是否已正确配置 GPU 节点的步骤
-
使用以下内容创建名为
nvidia-smi.yaml
的文件。将
替换为您需要的tag
nvidia/cuda
标签。此清单会启动一个 NVIDIA CUDA 容器,该容器将在一个节点上运行 nvidia-smi
。apiVersion: v1 kind: Pod metadata: name: nvidia-smi spec: restartPolicy: OnFailure containers: - name: nvidia-smi image: nvidia/cuda:
tag
args: - "nvidia-smi" resources: limits: nvidia.com/gpu: 1 -
使用下面的命令应用清单。
kubectl apply -f nvidia-smi.yaml
-
Pod 运行完成后,使用下面的命令查看其日志。
kubectl logs nvidia-smi
示例输出如下。
Mon Aug 6 20:23:31 20XX
+-----------------------------------------------------------------------------+ | NVIDIA-SMIXXX.XX
Driver Version:XXX.XX
| |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla V100-SXM2... On | 00000000:00:1C.0 Off | 0 | | N/A 46C P0 47W / 300W | 0MiB / 16160MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+
Amazon EKS 优化版 Arm Amazon Linux AMI
Arm 实例可以为横向扩展和基于 Arm 的应用程序(例如 Web 服务器、容器化微服务、缓存队列以及分布式数据存储)节省大量成本。当将 Arm 节点添加到集群时,请查看以下注意事项。
注意事项
-
如果您的集群是在 2020 年 8 月 17 日之前部署的,则必须对关键集群附加组件清单进行一次性升级。这样,Kubernetes 可以为集群中使用的每个硬件架构提取正确映像。有关更新集群附加组件的更多信息,请参阅 更新 Amazon EKS 集群的 Kubernetes 版本。如果您在 2020 年 8 月 17 日或之后部署了集群,则您的 CoreDNS、
kube-proxy
和 Amazon VPC CNI plugin for Kubernetes 附加组件已经具备多架构功能。 -
部署到 Arm 节点的应用程序必须针对 Arm 进行编译。
-
如果您在现有集群中部署了 DaemonSets,或者希望将它们部署到同时要在其中部署 Arm 节点的新集群中,请验证您的 DaemonSet 是否可以在集群中的所有硬件架构上运行。
-
您可以在同一集群中运行 Arm 节点组和 x86 节点组。如果您这样操作,请考虑将多架构容器镜像部署到容器存储库(如 Amazon Elastic Container Registry),然后将节点选择器添加到清单中,以便 Kubernetes 知道可将 Pod 部署到哪个硬件架构上。有关更多信息,请参阅 Amazon ECR 用户指南中的推送多架构映像和 Amazon ECR 的多架构容器映像简介
博客文章。
更多信息
有关使用 Amazon EKS 优化版 Amazon Linux AMI 的更多信息,请参阅以下部分:
-
要将 Amazon Linux 与托管节点组一起使用,请参阅 使用托管式节点组简化节点生命周期。
-
要启动自行管理的 Amazon Linux 节点,请参阅 检索建议的 Amazon Linux AMI ID。
-
有关版本信息,请参阅 检索 Amazon Linux AMI 版本信息。
-
要检索 Amazon EKS 优化版 Amazon Linux AMI 的最新 ID,请参阅 检索建议的 Amazon Linux AMI ID。
-
要获取用于构建 Amazon EKS 优化版 AMI 的开源脚本,请参阅 使用脚本构建自定义 Amazon Linux AMI。