启动自行管理的 Ubuntu 节点 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

帮助改进此页面

想为本用户指南做出贡献? 滚动到页面底部,然后选择在 GitHub 上编辑此页面。您的贡献有助于我们的用户指南为每个人提供更充分的参考。

启动自行管理的 Ubuntu 节点

注意

托管节点组可能会为您的使用案例带来一些优势。有关更多信息,请参阅 托管节点组

本主题描述如何启动向 Amazon EKS 集群注册的 Ubuntu on Amazon Elastic Kubernetes Service(EKS)Ubuntu Pro on Amazon Elastic Kubernetes Service(EKS)的自动扩缩组。适用于 EKS 的 Ubuntu 和 Ubuntu Pro 基于官方的 Ubuntu Minimal LTS,包括与 Amazon 共同开发并专门为 EKS 构建的自定义 Amazon 内核。Ubuntu Pro 通过支持 EKS 延长支持期、内核 livepatch、FIPS 合规性以及运行无限 Pro 容器的能力,增加了额外的安全保障。

在这些节点加入集群后,您可以向其部署容器化应用程序。有关更多信息,请访问有关 Amazon 上的 Ubuntu 的文档和 eksctl 文档中的自定义 AMI 支持

重要
  • Amazon EKS 节点是标准的 Amazon EC2 实例,您需要基于常规的 Amazon EC2 实例价格为其付费。有关更多信息,请参阅 Amazon EC2 定价

  • 您可以在 Ubuntu Outpost 上的 Amazon EKS 扩展集群中启动 Amazon 节点,但您无法在 Amazon Outpost 上的本地集群中启动它们。有关更多信息,请参阅 Amazon Outposts 上的 Amazon EKS

  • 您可以部署到采用 x86 或 Arm 处理器的 Amazon EC2 实例。但是,具有 Inferentia 芯片的实例可能需要先安装 Neuron SDK

使用 eksctl 启动用于 EKS 的 Ubuntu 或用于 EKS 节点的 Ubuntu Pro

此过程需要 eksctl 版本 0.183.0 或更高版本。可以使用以下命令来查看您的版本:

eksctl version

有关安装或升级 eksctl 的说明,请参阅 eksctl 文档中的 Installation

注意

此过程仅适用于使用 eksctl 创建的集群。

  1. 将以下内容复制到您的设备。将 my-cluster 替换为您的集群名称。名称只能包含字母数字字符(区分大小写)和连字符。该名称必须以字母字符开头,且不得超过 100 个字符。将 ng-ubuntu 替换为您的节点组名称。节点组名称的长度不能超过 63 个字符。它必须以字母或数字开头,但也可以包括其余字符的连字符和下划线。要在 Arm 实例上部署,请将 m5.large 替换为 Arm 实例类型。将 my-ec2-keypair-name 替换为 Amazon EC2 SSH 密钥对的名称,您可使用该密钥对来在节点启动后使用 SSH 连接到这些节点。如果还没有 Amazon EC2 密钥对,可以在 Amazon Web Services Management Console 中创建一个。有关更多信息,请参阅《Amazon EC2 用户指南》中的 Amazon EC2 密钥对。将所有剩余 example values 替换为您自己的值。完成替换后,运行修改后的命令以创建 ubuntu.yaml 文件。

    重要

    要将节点组部署到 Amazon Outposts、Amazon Wavelength 或 Amazon 本地区域子网,创建集群时不要传入 Amazon Outposts、Amazon Wavelength 或 Amazon 本地区域子网。您必须在以下示例中指定子网。有关更多信息,请参阅 eksctl 文档中的从配置文件创建节点组Config 文件架构region-code 替换为集群所在的 Amazon Web Services 区域。

    cat >ubuntu.yaml <<EOF --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code version: '1.30' iam: withOIDC: true nodeGroups: - name: ng-ubuntu instanceType: m5.large desiredCapacity: 3 amiFamily: Ubuntu22.04 ami: auto-ssm iam: attachPolicyARNs: - arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy - arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly - arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy ssh: allow: true publicKeyName: my-ec2-keypair-name EOF

    要创建 Ubuntu Pro 节点组,只需将 amiFamily 值更改为 UbuntuPro2204

  2. 使用以下命令部署您的节点。

    eksctl create nodegroup --config-file=ubuntu.yaml

    示例输出如下。

    创建节点时会输出几行。输出的最后几行类似于以下示例行。

    [✔]  created 1 nodegroup(s) in cluster "my-cluster"
  3. (可选)部署示例应用程序来测试您的 Ubuntu 节点。

  4. 如果满足以下条件,我们建议阻止 Pod 访问 IMDS:

    • 您计划将 IAM 角色分配到所有 Kubernetes 服务账户,以便 Pods 只具有所需的最低权限。

    • 集群中没有任何 Pods 需要出于其他原因(例如检索当前 Amazon Web Services 区域)访问 Amazon EC2 实例元数据服务(IMDS)。

    有关更多信息,请参阅限制对分配给工作节点的实例配置文件的访问