Kubernetes 1.33 を実行している Container Service for Kubernetes (ACK) クラスターは、デフォルトで containerd 2.1 を使用します。これにより、イメージのセキュリティ、パフォーマンス、安定性が向上します。
機能
主要な機能のみを記載しています。詳細は「containerd のリリースノート」をご参照ください。
-
Node Resource Interface (NRI) がサポートされており、デフォルトで有効になっています。
-
Container Device Interface (CDI) がサポートされており、デフォルトで有効になっています。
-
Sandbox API がサポートされています。
非推奨の機能と API
主要な非推奨項目のみを記載しています。詳細は「containerd のリリースノート」をご参照ください。
-
registry.auths、registry.configs、および registry.mirrors は非推奨になりました。詳細については、「ノードプールの containerd パラメーターのカスタマイズ」をご参照ください。
-
Docker Schema 1 イメージはサポートされなくなりました。
application/vnd.docker.distribution.manifest.v1+jsonまたはapplication/vnd.docker.distribution.manifest.v1+prettyjwsマニフェストを持つイメージはプルできません。これらを特定するには、Docker Schema 1 イメージの特定をご参照ください。 -
デフォルトの seccomp プロファイルから
io_uring_*syscall が削除されました。コンテナはデフォルトでio_uring_*syscall を呼び出せなくなります。 -
CRI v1alpha2 API は削除されました。この API は Kubernetes 1.26 以降非推奨となっていましたが、containerd 2.1 で完全に削除されます。
-
AUFS スナップショッターは削除されました。
-
[plugins."io.containerd.internal.v1".tracing]パラメーターは削除されました。
アップグレードに関する注意事項
-
containerd 2.1 では CRI v1alpha2 API はサポートされなくなりました。この API を使用している場合は、CRI v1 に移行してください。
-
アップグレードする前に、非推奨 API を特定してください。コンソールから事前チェックを実行するには、クラスターの詳細ページで 操作 > クラスターのアップグレード を選択し、事前チェック を実行します。
-
アップグレードプロセスでは、非推奨 API が自動的にチェックされ、いずれかが検出されると中断されます。
非推奨 API の特定
kubectl の使用
クラスター内で containerd 関連のディレクトリが Pod にマウントされているかどうかを確認します:
kubectl と jq がインストールされている必要があります。yum install jq で 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 の使用
ctr deprecations list を使用して非推奨 API をリスト表示します:
ctr deprecations list
Docker Schema 1 イメージの特定
ctr --namespace k8s.io images list 'labels."io.containerd.image/converted-docker-schema1"'
アップグレード方法
まず、「ACK クラスターを手動でアップグレード」して、コントロールプレーンを Kubernetes 1.33 以降に更新します。次に、「ノードプールを更新」して containerd をアップグレードします。
よくある質問
アップグレードはビジネスに影響しますか。
containerd をアップグレードするには、「ノードプールを更新」します。ノードプールのアップグレードでは、デフォルトでインプレース更新が実行され、コンテナは再起動されません。
containerd を V1.6 から V2.1 にアップグレードした後、ロールバックできますか。
いいえ、できません。containerd V2.1 では shim-v3 API が導入されており、V1.6 の shim-v2 と互換性がありません。
containerd を V1.6 から V2.1 にアップグレードする際、データ損失は発生しますか。
「ノードプールを更新」して containerd をアップグレードする場合、デフォルトでインプレース更新が実行され、元のデータディレクトリが使用されます。データ損失は発生しません。