全部產品
Search
文件中心

Container Service for Kubernetes:containerd2.1介紹

更新時間:May 29, 2025

ACK 1.33 版本預設使用containerd 2.1。containerd 2.1在鏡像安全、效能、穩定性方面均有所提升。本文介紹containerd 2.1的主要變更說明,包括功能特性變更、廢棄功能、廢棄API等。

功能特性

下文僅介紹主要功能特性,詳細資料請參見containerd發布記錄
  • 支援NRI (Node Resource Interface) 能力,已在containerd配置中預設啟用。

  • 支援CDI (Container Device Interface) 能力,已在containerd配置中預設啟用。

  • 支援Sandbox API。

廢棄功能和API

下文僅介紹主要廢棄功能和API,詳細資料請參見containerd發布記錄
  • 廢棄配置 registry.auths、registry.configs、registry.mirrors。建議參見自訂節點池containerd配置,通過控制台自訂containerd參數。

  • 不再支援Docker Schema 1鏡像,例如application/vnd.docker.distribution.manifest.v1+json 或 application/vnd.docker.distribution.manifest.v1+prettyjws,拉取時會被拒絕。請參見識別Docker Schema 1鏡像進行識別。

  • io_uring_* 從containerd的預設Seccomp設定檔中移除。容器預設沒有許可權進行io_uring_*系統調用。

  • 移除CRI v1alpha2 API。Kubernetes自1.26起開始棄用該API,containerd 2.1隨之同步移除。

  • 移除AUFS snapshotter。

  • 移除[plugins."io.containerd.internal.v1".tracing]配置項。

升級注意事項

  • containerd 2.1不再支援CRI v1alpha2 API。如依賴該版本API,需切換至CRI v1版本API以確保相容性。

  • 建議在升級前參見識別廢棄 API進行自檢。您也可以在叢集資訊頁面的左側導覽列,選擇營運管理 > 叢集升級,觸發前置檢查以完成自動檢查。

  • 升級過程中,系統會進行廢棄 API 檢測,若檢測到使用棄用 API,升級過程將中斷。

識別廢棄 API

使用 kubectl

參見以下代碼,檢查叢集下是否有Pod掛載了containerd 相關目錄。

需提前安裝kubectl和jq命令列工具。jq可通過yum install jq命令安裝。
kubectl get pods --all-namespaces -o json |
jq -r '.items[] |
  select(.spec.volumes[]?.hostPath.path as $p |
    ["/", "/var", "/var/","/var/run", "/var/run/",
     "/var/run/containerd", "/var/run/containerd/",
     "/var/run/containerd/containerd.sock",
     "/run", "/run/", "/run/containerd", "/run/containerd/",
     "/run/containerd/containerd.sock"] | index($p)) |
  .metadata.namespace + "/" + .metadata.name'

使用ctr

若當前 containerd 執行個體中存在已棄用的 API,執行ctr deprecations list命令將列出所有廢棄API。

ctr deprecations list

識別Docker Schema 1鏡像

ctr --namespace k8s.io images list 'labels."io.containerd.image/converted-docker-schema1"'

升級方式

升級至 containerd 2.1 前,請先參見手動升級叢集將叢集控制面版本升級至1.33及以上版本,然後參見升級節點池升級容器運行時版本。

FAQ

升級過程中,業務是否會受影響?

請參見升級節點池完成containerd版本的升級。通過此方式升級時,預設採取原地升級,容器不會重啟,業務可正常運行。

從containerd 1.6升級至containerd 2.1後還支援回退嗎?

不支援回退。containerd 2.1 版本引入了 shim-v3 API,不支援回退至 containerd 1.6 的 shim-v2 API。

將containerd 1.6升級至containerd 2.1的過程中,節點資料會丟失嗎?

參見升級節點池升級containerd時預設採取原地升級,containerd 2.1 仍舊使用原資料目錄,不會丟失。

相關文檔