containerd2.2介绍
概述
CCE 节点已支持 containerd 2.2.5,支持的集群 Kubernetes 版本为 v1.26 及以上版本。containerd 2.2 在 containerd 2.1 的基础上,于镜像安全、性能、稳定性方面均有进一步提升。本文档介绍 containerd 2.2 的主要变更说明,包括功能特性变更、废弃功能、废弃 API 及升级注意事项,并提供升级前检查方法。
功能特性
下文仅介绍主要功能特性,详细信息请参见Containerd版本发布说明。
- 镜像安全增强:进一步收紧镜像拉取与解包链路的安全默认值,减少攻击面。
- 性能与稳定性优化:优化镜像拉取、容器启动路径的资源占用与耗时,降低高并发场景下的抖动。
- 修复 containerd 2.1 系列版本中的已知问题与安全漏洞(CVE)。
废弃功能和API
下文仅介绍主要废弃功能和 API,详细信息请参见 Containerd版本发布说明。
-
废弃 Docker Schema 1 镜像支持:
application/vnd.docker.distribution.manifest.v1+jsonapplication/vnd.docker.distribution.manifest.v1+prettyjws
-
废弃
io_uring相关接口:io_uring_*
-
废弃 tracing 配置:
[plugins."io.containerd.internal.v1".tracing]
升级注意事项
从 containerd 1.6/1.7 或 2.1 升级至 containerd 2.2 前,请先完成以下检查。
识别废弃API
使用 kubectl
参见以下代码,检查集群下是否有 Pod 挂载了 containerd 相关目录。
需提前安装 kubectl 和 jq 命令行工具。jq 可通过 yum install jq 命令安装。
1kubectl get pods --all-namespaces -o json |
2jq -r '.items[] |
3 select(.spec.volumes[]?.hostPath.path as $p |
4 ["/", "/var", "/var/","/var/run", "/var/run/",
5 "/var/run/containerd", "/var/run/containerd/",
6 "/var/run/containerd/containerd.sock",
7 "/run", "/run/", "/run/containerd", "/run/containerd/",
8 "/run/containerd/containerd.sock"] | index($p)) |
9 .metadata.namespace + "/" + .metadata.name'
使用ctr
若当前 containerd 实例中存在已弃用的 API,执行 ctr deprecations list 命令将列出所有废弃 API。
1ctr deprecations list
识别Docker Schema 1镜像
1ctr --namespace k8s.io images list 'labels."io.containerd.image/converted-docker-schema1"'
FAQ
升级过程中,业务是否会受影响?
请参见升级节点组完成 containerd 版本的升级。通过此方式升级时,默认采取原地升级,容器不会重启,业务可正常运行。
从 containerd 1.6/1.7/2.1 升级至 containerd 2.2 后还支持回退吗?
不支持回退。containerd 2.2 版本引入了 shim-v3 API,不支持回退至 containerd 1.6/1.7/2.1 的 shim-v2 API。
将 containerd 1.6/1.7/2.1 升级至 containerd 2.2 的过程中,节点数据会丢失吗?
参见升级节点组,升级 containerd 时默认采取原地升级,需要进行节点排水。containerd 2.2 仍旧使用原数据目录,节点数据不会丢失。
评价此篇文章
