協助改進此頁面
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
混合節點的修補程式安全更新
本主題會說明針對混合節點上執行的特定套件和相依性,就地執行安全更新修補的程序。基於最佳實務,我們建議您定期更新您的混合節點,以接收 CVE 和安全修補程式。
如需升級 Kubernetes 版本的步驟,請參閱 升級叢集的混合節點。
可能需要安全修補的軟體範例之一是 containerd。
Containerd
containerd 是 EKS 混合節點的標準 Kubernetes 容器執行時期和核心相依性,可用於管理容器生命週期,包括提取映像和管理容器執行。在混合節點上,您可以透過 nodeadm CLI 或手動安裝 containerd。視節點的作業系統而定,nodeadm 會從作業系統分散式套件或 Docker 套件安裝 containerd。
當 containerd 中的 CVE 發布後,您可透過下列選項將您混合節點上的 containerd 升級至修補程式版本。
步驟 1:檢查修補程式是否已發布至套件管理工具
您可以參考對應的安全公告,檢查 CVE containerd 修補程式是否已發布至每個各自的作業系統套件管理工具:
如果您使用 Docker 儲存庫作為 containerd 的來源,您可以檢查 Docker 安全公告
步驟 2:選擇安裝修補程式的方法
您可以透過三種方法來在節點上就地修補和安裝安全升級。您可使用哪種方法取決於套件管理工具中的作業系統是否提供該修補程式:
步驟 2 a:使用 nodeadm upgrade 進行修補
確認 containerd CVE 修補程式已發布至作業系統或 Docker 儲存庫 (Apt 或 RPM) 後,您可以使用 nodeadm upgrade 命令升級至 containerd 的最新版本。由於這並非 Kubernetes 版本升級,您必須將目前的 Kubernetes 版本傳遞至 nodeadm 升級命令。
nodeadm upgradeK8S_VERSION--config-source file:///root/nodeConfig.yaml
步驟 2 b:使用作業系統套件管理工具進行修補
或者,您也可以透過各自的套件管理工具進行更新,並使用它來升級 containerd 套件,如下所示。
Amazon Linux 2023
sudo yum update -y sudo yum install -y containerd
RHEL
sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo sudo yum update -y sudo yum install -y containerd
Ubuntu
sudo mkdir -p /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update -y sudo apt install -y --only-upgrade containerd.io
步驟 2 c:套件管理工具中尚未發布的 Containerd CVE 修補程式
如果 containerd 的修補程式版本僅可透過套件管理工具以外的其他方式獲得,例如在 GitHub 發行版本中,則您可以從官方 GitHub 網站安裝 containerd。
-
如果機器已將叢集加入為混合節點,則需要執行
nodeadm uninstall命令。 -
安裝官方
containerd二進位檔。您可以使用 GitHub 上的步驟官方安裝步驟。 -
執行
nodeadm install命令,並將--containerd-source引數設定為none,因此可透過nodeadm略過containerd安裝。對於節點正在執行的任何作業系統,您可以使用containerd來源中的none值。nodeadm installK8S_VERSION--credential-providerCREDS_PROVIDER--containerd-source none