

 **協助改進此頁面** 

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

若要為本使用者指南貢獻內容，請點選每個頁面右側面板中的**在 GitHub 上編輯此頁面**連結。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 混合節點的修補程式安全更新
<a name="hybrid-nodes-security"></a>

本主題會說明針對混合節點上執行的特定套件和相依性，就地執行安全更新修補的程序。基於最佳實務，我們建議您定期更新您的混合節點，以接收 CVE 和安全修補程式。

如需升級 Kubernetes 版本的步驟，請參閱 [升級叢集的混合節點](hybrid-nodes-upgrade.md)。

可能需要安全修補的軟體範例之一是 `containerd`。

## `Containerd`
<a name="_containerd"></a>

 `containerd` 是 EKS 混合節點的標準 Kubernetes 容器執行時期和核心相依性，可用於管理容器生命週期，包括提取映像和管理容器執行。在混合節點上，您可以透過 [nodeadm CLI](https://docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-nodeadm.html) 或手動安裝 `containerd`。視節點的作業系統而定，`nodeadm` 會從作業系統分散式套件或 Docker 套件安裝 `containerd`。

當 `containerd` 中的 CVE 發布後，您可透過下列選項將您混合節點上的 `containerd` 升級至修補程式版本。

## 步驟 1：檢查修補程式是否已發布至套件管理工具
<a name="_step_1_check_if_the_patch_published_to_package_managers"></a>

您可以參考對應的安全公告，檢查 CVE `containerd` 修補程式是否已發布至每個各自的作業系統套件管理工具：
+  [Amazon Linux 2023](https://alas.aws.amazon.com/alas2023.html) 
+  [RHEL](https://access.redhat.com/security/security-updates/security-advisories) 
+  [Ubuntu 20.04](https://ubuntu.com/security/notices?order=newest&release=focal) 
+  [Ubuntu 22.04](https://ubuntu.com/security/notices?order=newest&release=jammy) 
+  [Ubuntu 24.04](https://ubuntu.com/security/notices?order=newest&release=noble) 

如果您使用 Docker 儲存庫作為 `containerd` 的來源，您可以檢查 [Docker 安全公告](https://docs.docker.com/security/security-announcements/)，以識別 Docker 儲存庫中提供的修補版本。

## 步驟 2：選擇安裝修補程式的方法
<a name="_step_2_choose_the_method_to_install_the_patch"></a>

您可以透過三種方法來在節點上就地修補和安裝安全升級。您可使用哪種方法取決於套件管理工具中的作業系統是否提供該修補程式：

1. 使用發布至套件管理工具的 `nodeadm upgrade` 安裝修補程式，請參閱[步驟 2 a](#hybrid-nodes-security-nodeadm)。

1. 使用套件管理工具直接安裝修補程式，請參閱[步驟 2 b](#hybrid-nodes-security-package)。

1. 安裝尚未在套件管理工具中發布的自訂修補程式。請注意，對於 `containerd` 的自訂修補程式，存在特殊考量，請參閱[步驟 2 c](#hybrid-nodes-security-manual)。

## 步驟 2 a：使用 `nodeadm upgrade` 進行修補
<a name="hybrid-nodes-security-nodeadm"></a>

確認 `containerd` CVE 修補程式已發布至作業系統或 Docker 儲存庫 (Apt 或 RPM) 後，您可以使用 `nodeadm upgrade` 命令升級至 `containerd` 的最新版本。由於這並非 Kubernetes 版本升級，您必須將目前的 Kubernetes 版本傳遞至 `nodeadm` 升級命令。

```
nodeadm upgrade K8S_VERSION --config-source file:///root/nodeConfig.yaml
```

## 步驟 2 b：使用作業系統套件管理工具進行修補
<a name="hybrid-nodes-security-package"></a>

或者，您也可以透過各自的套件管理工具進行更新，並使用它來升級 `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 修補程式
<a name="hybrid-nodes-security-manual"></a>

如果 `containerd` 的修補程式版本僅可透過套件管理工具以外的其他方式獲得，例如在 GitHub 發行版本中，則您可以從官方 GitHub 網站安裝 `containerd`。

1. 如果機器已將叢集加入為混合節點，則需要執行 `nodeadm uninstall` 命令。

1. 安裝官方 `containerd` 二進位檔。您可以使用 GitHub 上的步驟[官方安裝步驟](https://github.com/containerd/containerd/blob/main/docs/getting-started.md#option-1-from-the-official-binaries)。

1. 執行 `nodeadm install` 命令，並將 `--containerd-source` 引數設定為 `none`，因此可透過 `nodeadm` 略過 `containerd` 安裝。對於節點正在執行的任何作業系統，您可以使用 `containerd` 來源中的 `none` 值。

   ```
   nodeadm install K8S_VERSION --credential-provider CREDS_PROVIDER --containerd-source none
   ```