本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
自定义 AMI 支持
设置节点 AMI ID
该--node-ami
标志支持许多高级用例,例如使用自定义 AMI 或实时查询 AWS 以确定要使用哪个 AMI。该标志可用于非 GPU 和 GPU 映像。
该标志可以获取要明确使用的图像的 AMI 图像 ID。它也可以使用以下 “特殊” 关键字:
Keyword | 描述 |
---|---|
自动 |
表示应通过查询 AWS 来找到用于节点的 AMI EC2。这与 auto 解析器有关。 |
auto-ssm |
表示应通过查询 AWS SSM Parameter Store 来找到用于节点的 AMI。 |
注意
设置--node-ami
为 ID 字符串时,eksctl
将假设已请求自定义 AMI。对于 AmazonLinux 2 和 Ubuntu 节点(包括 EKS 托管和自我管理),这意味着overrideBootstrapCommand
这是必需的。 AmazonLinux2023 年,由于它停止使用/etc/eks/bootstrap.sh
脚本进行节点引导,因此不支持使用 nodeadm 初始化过程(欲了解更多信息,请参阅节点引导文档overrideBootstrapCommand
CLI 标志示例:
eksctl create cluster --node-ami=auto # with a custom ami id eksctl create cluster --node-ami=ami-custom1234
Config 文件示例:
nodeGroups: - name: ng1 instanceType: p2.xlarge amiFamily: AmazonLinux2 ami: auto - name: ng2 instanceType: m5.large amiFamily: AmazonLinux2 ami: ami-custom1234 managedNodeGroups: - name: m-ng-2 amiFamily: AmazonLinux2 ami: ami-custom1234 instanceType: m5.large overrideBootstrapCommand: | #!/bin/bash /etc/eks/bootstrap.sh <cluster-name>
该--node-ami
标志也可以与一起使用eksctl create nodegroup
。
设置节点 AMI 系列
--node-ami-family
可以采用以下关键字:
Keyword | 描述 |
---|---|
AmazonLinux2 |
表示应使用基于亚马逊 Linux 2 的 EKS AMI 镜像(默认)。 |
AmazonLinux2023 |
表示应使用基于亚马逊 Linux 2023 的 EKS AMI 镜像。 |
Ubuntu2004 |
表示应使用基于 Ubuntu 20.04 LTS(Focal)的 EKS AMI 镜像(EKS 1.29 支持)。 |
UbuntuPro2004 |
表示应使用基于 Ubuntu Pro 20.04 LTS(Focal)的 EKS AMI 图像(适用于 >= 1.27、1.29 的 EKS)。 |
Ubuntu2204 |
表示应使用基于 Ubuntu 22.04 LTS (Jammy) 的 EKS AMI 镜像(适用于 >= 1.29 的 EKS)。 |
UbuntuPro2204 |
表示应使用基于 Ubuntu Pro 22.04 LTS(Jammy)的 EKS AMI 镜像(适用于 >= 1.29 的 EKS)。 |
Ubuntu2404 |
表示应使用基于 Ubuntu 24.04 LTS(Noble)的 EKS AMI 镜像(适用于 >= 1.31 的 EKS)。 |
UbuntuPro2404 |
表示应使用基于 Ubuntu Pro 24.04 LTS(Noble)的 EKS AMI 镜像(适用于 >= 1.31 的 EKS)。 |
Bottlerocket |
表示应使用基于 Bottlerocket 的 EKS AMI 镜像。 |
WindowsServer2019 FullContainer |
表示应使用基于 Windows Server 2019 完整容器的 EKS AMI 镜像。 |
WindowsServer2019 CoreContainer |
表示应使用基于 Windows Server 2019 核心容器的 EKS AMI 镜像。 |
WindowsServer2022 FullContainer |
表示应使用基于 Windows Server 2022 完整容器的 EKS AMI 镜像。 |
WindowsServer2022 CoreContainer |
表示应使用基于 Windows Server 2022 核心容器的 EKS AMI 镜像。 |
CLI 标志示例:
eksctl create cluster --node-ami-family=AmazonLinux2
Config 文件示例:
nodeGroups: - name: ng1 instanceType: m5.large amiFamily: AmazonLinux2 managedNodeGroups: - name: m-ng-2 instanceType: m5.large amiFamily: Ubuntu2204
该--node-ami-family
标志也可以与一起使用eksctl create nodegroup
。 eksctl
每当使用自定义 AMI 时,都需要通过配置文件或 --node-ami-family
CLI 标志明确设置 AMI 系列。
注意
目前,EKS 托管节点组在使用自定义节点组时仅支持以下 AMI 系列 AMIs:AmazonLinux2023
、AmazonLinux2
、和 Ubuntu1804
Ubuntu2004
Ubuntu2204
Windows 自定义 AMI 支持
只有自我管理的 Windows 节点组才能指定自定义 AMI。 amiFamily
应设置为有效的 Windows AMI 系列。
以下 PowerShell 变量将可供引导脚本使用:
$EKSBootstrapScriptFile
$EKSClusterName
$APIServerEndpoint
$Base64ClusterCA
$ServiceCIDR
$KubeletExtraArgs
$KubeletExtraArgsMap: A hashtable containing arguments for the kubelet, e.g., @{ 'node-labels' = ''; 'register-with-taints' = ''; 'max-pods' = '10'}
$DNSClusterIP
$ContainerRuntime
Config 文件示例:
nodeGroups: - name: custom-windows amiFamily: WindowsServer2022FullContainer ami: ami-01579b74557facaf7 overrideBootstrapCommand: | & $EKSBootstrapScriptFile -EKSClusterName "$EKSClusterName" -APIServerEndpoint "$APIServerEndpoint" -Base64ClusterCA "$Base64ClusterCA" -ContainerRuntime "containerd" -KubeletExtraArgs "$KubeletExtraArgs" 3>&1 4>&1 5>&1 6>&1
Bottlerocket 自定义 AMI 支持
对于 Bottlerocket 节点,overrideBootstrapCommand
不支持。相反,要指定自己的引导容器,应使用该bottlerocket
字段作为配置文件的一部分。例如,
nodeGroups: - name: bottlerocket-ng ami: ami-custom1234 amiFamily: Bottlerocket bottlerocket: enableAdminContainer: true settings: bootstrap-containers: bootstrap: source: <MY-CONTAINER-URI>