从 Amazon Linux 2 升级到 Amazon Linux 2023
Amazon EKS 优化的 AMI 有两个基于 AL2 和 AL2023 的系列可供选择。AL2023 是一款新的基于 Linux 的操作系统,旨在为您的云应用程序提供安全、稳定和高性能的环境。它是 Amazon Web Services 推出的下一代 Amazon Linux,适用于所有支持的 Amazon EKS 版本,包括扩展支持中的版本 1.23
和 1.24
。
AL2023 比 AL2 提供了多项改进。有关完整比较,请参阅《Amazon Linux 2023 用户指南》中的比较 AL2 和 Amazon Linux 2023。已在 AL2 中添加、升级和移除了多个程序包。强烈建议在升级之前使用 AL2023 测试您的应用程序。有关 AL2023 中所有程序包更改的列表,请参阅《Amazon Linux 2023 发行说明》中的 Amazon Linux 2023 的程序包更改。
除了这些更改之外,您还应了解以下事项:
-
AL2023 引入了使用 YAML 配置架构的新节点初始化流程
nodeadm
。如果您使用的是自行管理的节点组或带有启动模板的 AMI,则在创建新节点组时,现在需要明确提供其它集群元数据。以下是最低必需参数的示例,其中 apiServerEndpoint
、certificateAuthority
和服务cidr
是必需的:--- apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: my-cluster apiServerEndpoint: https://example.com certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk= cidr: 10.100.0.0/16
在 AL2 中,来自这些参数的元数据是从 Amazon EKS
DescribeCluster
API 调用中发现的。使用 AL2023,这种行为发生了变化,因为在大型节点纵向扩展期间,额外的 API 调用有节流风险。如果您使用的是没有启动模板的托管节点组或者正在使用 Karpenter,则此更改不会影响您。有关certificateAuthority
和服务cidr
的更多信息,请参阅《Amazon EKS API 参考》中的 DescribeCluster。 -
在 AL2023 中不支持所有受支持的 Amazon EKS 版本的 Docker。在 AL2 中,对 Docker 的支持已结束,已在 Amazon EKS 版本
1.24
或更高版本中移除。有关弃用的更多信息,请参阅 从 dockershim 迁移到 containerd。 -
AL2023 需要 Amazon VPC CNI 版本
1.16.2
或更高版本。 -
默认情况下,AL2023 需要
IMDSv2
。IMDSv2
有多项益处,可助于改善安全状况。它使用面向会话的身份验证方法,需要在简单的 HTTP PUT 请求中创建密钥令牌才能启动会话。会话令牌的有效时间可以介于 1 秒到 6 小时之间。有关如何从IMDSv1
转换到IMDSv2
的更多信息,请参阅转换到使用实例元数据服务版本 2 和获取 IMDSv2 的全部优势并在 AWS 基础设施中禁用 IMDSv1。如果您想使用 IMDSv1
,则您仍然可以通过使用实例元数据选项启动属性手动覆盖设置来做到这一点。注意
对于
IMDSv2
,托管节点组的默认跳数设置为 1。这意味着,容器无法使用 IMDS 访问节点的凭证。如果您需要容器访问节点的凭证,则您仍然可以通过手动覆盖自定义 Amazon EC2 启动模板中的HttpPutResponseHopLimit
,将其增加到 2 来做到这一点。或者,您可以使用 Amazon EKS 容器组身份来提供凭证,而不是IMDSv2
。 -
AL2023 采用下一代统一控制组层次结构(
cgroupv2
)。cgroupv2
用于实施容器运行时,并由systemd
实施。虽然 AL2023 仍然包含可以使用cgroupv1
使系统运行的代码,但这不是建议或支持的配置。此配置将在未来的 Amazon Linux 主要版本中完全移除。 -
eksctl
需要eksctl
版本0.176.0
或更高版本才能支持 AL2023。
对于以前存在的托管节点组,您可以执行就地升级或蓝/绿升级,具体取决于您所使用的启动模板的方式:
-
如果您在托管节点组中使用自定义 AMI,则可以通过交换启动模板中的 AMI ID 来执行就地升级。在执行此升级策略之前,您应确保您的应用程序和所有用户数据首先传输到 AL2023。
-
如果您将托管节点组与标准启动模板或未指定 AMI ID 的自定义启动模板结合使用,则需要使用蓝/绿策略升级。蓝/绿升级通常更复杂,需要创建一个全新的节点组,在其中指定 AL2023 作为 AMI 类型。然后,需要小心配置新的节点组,以确保来自 AL2 节点组的所有自定义数据都与新操作系统兼容。在您的应用程序中对新节点组进行测试和验证后,Pods 可以从旧节点组迁移到新的节点组。迁移完成之后,您就可以删除旧节点组。
如果您正在使用 Karpenter 并想使用 AL2023,则需要使用 AL2023 修改该 EC2NodeClass
amiFamily
字段。默认情况下,偏差在 Karpenter 中启用。这意味着,amiFamily
字段更改后,Karpenter 将自动将您的 Worker 节点更新为最新的 AMI(如果有)。