选择 Amazon EC2 实例类型 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

选择 Amazon EC2 实例类型

每个 Amazon EC2 实例类型提供不同的计算、内存、存储和网络功能,并按照这些功能分组到实例系列。

在为节点组选择实例类型之前,要考虑以下条件。

  • 节点组中的实例数:一般来说,数量较少、规模较大的实例更好,当您有很多 Daemonsets 时更是如此。每个实例都需要对 API 服务器进行 API 调用,因此您拥有的实例越多,API 服务器上的负载就越多。

  • 操作系统:查看 LinuxWindowsBottlerocket 支持的实例类型。在创建 Windows 实例之前,请查看 Windows 支持

  • 硬件架构:您需要 x86 还是 Arm? 您只能在 Arm 上部署 Linux。在部署 Arm 实例之前,请查看 Amazon EKS 优化版 Arm Amazon Linux AMI。您需要基于 Nitro System(LinuxWindows)构建或是拥有 Accelerated 功能的实例吗? 如果您需要加速功能,则只能将 Linux 与 Amazon EKS 结合使用。

  • 容器组的最大数量 - 由于每个容器组都分配了自己的 IP 地址,因此实例类型支持的 IP 地址数量是决定实例上可以运行的容器组数量的因素之一。AmazonNitro System 实例类型可选择性地支持比非 Nitro System 实例类型多得多的 IP 地址。但是,并非为实例分配的所有 IP 地址都可用于容器组。要确定实例类型支持多少个容器组,请参阅 Amazon EKS 建议每种 Amazon EC2 实例类型的最大容器组数量。要为您的实例分配大量的 IP 地址,您必须在集群中安装 1.9.0 版或更高版本的 Amazon VPC CNI 附加组件并进行适当配置。有关更多信息,请参阅 提高 Amazon EC2 节点的可用 IP 地址数量。要为实例分配最大数量的 IP 地址,您必须在 1.21 版或更高版本的群集中安装 1.10.1 版或更高版本的 Amazon VPC CNI 附加组件,然后使用 IPv6 系列部署集群。

  • IP 系列 - 为集群使用 IPv4 系列时,您可以使用任何受支持的实例类型,这允许您的集群为容器组和服务分配私有 IPv4 地址;但如果您想为集群使用 IPv6 系列,则必须使用运行 Linux 的 Amazon Nitro 系统实例类型。Windows 实例仅支持 IPv4。您的集群必须是运行 1.10.1 版或更高版本 Amazon VPC CNI 附加组件的新 1.21 版或更高版本的集群。有关使用 IPv6 的更多信息,请参阅 将 IPv6 地址分配给容器和服务

  • 您正在运行的 Amazon VPC CNI 附加组件的版本:最新版本的适用于 Kubernetes 的 Amazon VPC CNI 插件支持这些实例类型。您可能需要更新 Amazon VPC CNI 附加组件版本来利用最新的受支持的实例类型。有关更多信息,请参阅 更新 Amazon VPC CNI 自行管理附加组件。最新版本支持与 Amazon EKS 一起使用的最新功能。以前版本并不支持所有功能。您可以在 GitHub 上的 Changelog 中查看不同版本支持的功能。

  • 您要在其中创建节点的 Amazon Web Services 区域 – 并非所有实例类型都在所有 Amazon Web Services 区域中可用。

  • 您使用的是否为容器组的安全组 - 如果使用容器组的安全组,则仅支持特定实例类型。有关更多信息,请参阅 Amazon EC2 支持的实例和分支网络接口

Amazon EKS 建议每种 Amazon EC2 实例类型的最大容器组数量

Amazon EKS 提供了一个脚本,您可以下载并运行该脚本,以确定 Amazon EKS 建议在每种实例类型上运行的最大容器组数量。该脚本使用每个实例的硬件属性和配置选项来确定最大容器组数量。

  1. 下载一个您可以用来计算每种实例类型的最大容器组数量的脚本。

    curl -o max-pods-calculator.sh https://raw.githubusercontent.com/awslabs/amazon-eks-ami/master/files/max-pods-calculator.sh
  2. 将脚本标记为您计算机上的可执行文件。

    chmod +x max-pods-calculator.sh
  3. 运行脚本,请将 m5.large 替换为您计划部署的实例类型,并将 1.9.0-eksbuild.1 替换为您的 Amazon VPC CNI 附加组件版本。有关一些可能实例类型的列表,请参阅 GitHub 上的 eni-max-pods.txt。要确定附加组件版本,请参阅 管理 Amazon VPC CNI 附加组件 中的更新过程。

    ./max-pods-calculator.sh --instance-type m5.large --cni-version 1.9.0-eksbuild.1

    输出

    29

    您可以向脚本添加以下选项,以查看使用可选功能时支持的最大容器组数量。

    • --cni-custom-networking-enabled:如果要从不同于实例的子网分配 IP 地址,请使用此选项。有关更多信息,请参阅 CNI 自定义网络。将此选项添加到具有相同示例值的上一个脚本中会生成 20

您也可以使用运行带有 --help 选项的脚本以查看所有可用的选项。