跳至内容

为什么我无法更新从 Amazon EKS 优化型 AMI 启动的 Amazon EC2 实例的内核和软件包?

1 分钟阅读
0

我使用 Amazon Elastic Kubernetes Service (Amazon EKS) 优化型 Amazon Machine Image (AMI) 来启动我的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。但是,即使有更高版本可用,我也无法更新内核或软件包。我收到 "Nothing to do" 和 "No packages marked for update" 的消息。

简短描述

通常,Amazon EKS 优化型 AMI 会阻止软件包更新,因为 yum-versionlock 插件锁定了特定的软件包版本并将所有其他版本排除在外。该插件将软件包锁定在其定义的版本,以防意外更新到不兼容的版本。

要解决此问题,最佳做法是更新 AMI 而非内核。但是,如果您使用的是包含锁定软件包的自定义 AMI,则可以移除版本锁定并升级该软件包。

解决方法

**注意:**在进行故障排除或更改之前,最佳做法是备份您的 EC2 实例和数据。创建实例的 AMI,或创建 Amazon Elastic Block Store (Amazon EBS) 卷的快照

验证您的 AMI 是否存在版本锁定

要检查您的实例正在运行的内核版本,请运行以下命令:

uname -r

要检查软件包是否锁定到特定的内核版本,请运行以下命令:

yum versionlock list

如果 yum-versionlock 已激活版本锁定,您会收到与以下示例类似的输出:

kernel-devel-1:6.1.155-176.282.amzn2023.*
kernel-headers-1:6.1.155-176.282.amzn2023.*
kernel-1:6.1.155-176.282.amzn2023.*
kernel-libbpf-1:6.1.155-176.282.amzn2023.*
kernel-srpm-macros-0:1.0-14.amzn2023.0.3.*
kernel-livepatch-repo-s3-0:2023.9.20251014-0.amzn2023.*
amazon-ec2-net-utils-0:2.7.1-1.amzn2023.0.1.*
containerd-2:1.7.27-1.eks.amzn2023.0.4.*

更新存在版本锁定的 AMI

升级 Amazon EKS 优化型 AMI 以使用最新版本。由于您仅使用经过验证的内核版本,此更改可保持系统稳定。

移除版本锁定,然后升级软件包

**重要事项:**更新后的软件包与 containerd 等其他组件之间可能存在兼容性问题。锁定更新尚未经过兼容性测试。

要升级自定义 AMI 的软件包,请完成以下步骤:

  1. 运行以下命令查看锁定的软件包列表:

    sudo yum versionlock list:
  2. 要移除特定软件包的版本锁定,请运行以下命令:

    sudo yum versionlock delete package_name

    **注意:**请将 package_name 替换为要解锁的软件包。
    要移除所有软件包的版本锁定,请运行以下命令:

    sudo yum versionlock clear
  3. 运行以下命令验证版本是否已解锁:

    sudo yum versionlock list
  4. 将软件包更新到存储库中可用的最新版本。

相关信息

Amazon Linux 2 常见问题

Amazon Linux 2023 常见问题

通过 AL2023 上的版本控制存储库实现确定性升级

AWS 官方已更新 5 个月前