跳至內容

為什麼我無法更新從 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 個月前