このページでは、クラスタが Kubernetes Pod の実行に使用するコンテナ ランタイムを指定する方法について説明します。コンテナ ランタイムを指定するには、クラスタ構成ファイルの containerRuntime
フィールドの値を設定します。
containerRuntime
フィールドの値は、クラスタのアップグレード時またはインストール時にのみ変更できます。このフィールドはオプションで、設定しない場合のデフォルト値は containerd
です。
Kubernetes 1.24 では Docker Engine のサポートが終了
Kubernetes の dockershim
コンポーネントを使用すると、クラスタノードで Docker Engine コンテナ ランタイムを使用できます。ただし、Kubernetes 1.24 では dockershim
コンポーネントが削除されました。ベアメタル バージョン 1.13 の Anthos クラスタは Kubernetes 1.24 で実行されるため、バージョン 1.13 以降のクラスタでは Docker Engine を使用できません。
クラスタをアップグレードまたは作成する際は、次のコンテナ ランタイム ルールに注意してください。
- バージョン 1.13 以降のクラスタには、
containerd
を使用する必要があります。Docker を使用する 1.12 クラスタをバージョン 1.13 にアップグレードすることはできません。 - Docker Engine コンテナ ランタイムを使用するバージョン 1.12 のクラスタは作成できません。
- Docker を使用する 1.11 クラスタは、Docker を使用する 1.12 クラスタにアップグレードできます。ただし、アップグレードする前に containerd に切り替えることを強くおすすめします。
開発でイメージの作成に使用する Docker のインストールは、Kubernetes クラスタ内にある Docker Engine コンテナ ランタイムとは関係ありません。Docker は、引き続きイメージの作成とアプリケーション コンテナのビルドに使用できます。そうしたコンテナは、クラスタ内で引き続き機能します。
Docker は、管理ワークステーションにインストールする必要があります。bmctl
コマンドでは、クラスタの作成などの操作に Docker が必要です。この Docker の使用も、dockershim
のサポート終了による影響を受けません。
クラスタで使用されるコンテナ ランタイムを指定する方法の詳細については、以降のセクションをご覧ください。
準備
クラスタで使用するコンテナ ランタイムを特定します。コンテナ ランタイム フィールドの値は、クラスタをアップグレードまたはインストールするときにのみ変更できます。
デプロイが
containerd
バージョン 1.4.6 以降をサポートしていることを確認します。ベアメタル版 Anthos クラスタは、以前にインストールされたcontainerd
のバージョンをこのバージョンで上書きインストールします。ベアメタル版 Anthos クラスタが、両方のランタイムにインストールされた次のファイルをインストールできることを確認します。
バイナリ ファイル
/usr/bin/containerd
/usr/bin/containerd-shim
/usr/bin/containerd-shim-runc-v1
/usr/bin/containerd-shim-runc-v2
/usr/bin/crictl
/usr/bin/ctr
/usr/local/sbin/runc
構成ファイル
/etc/crictl.yaml
/etc/systemd/system/containerd.service
/etc/containerd/config.toml
/etc/containerd/certs.d/
/etc/systemd/system/containerd.service.d/09-proxy.conf
このファイルは HTTP プロキシを構成する場合にのみインストールされます。
ベアメタル版 Anthos クラスタが、選択したランタイムに応じて次の証明書をノードにインストールできるようにします。
containerd
用:/etc/docker/certs.d/
/etc/containerd/certs.d/
- Docker 用:
/etc/docker/certs.d/
新しいクラスタのコンテナ ランタイムを構成する
新しいクラスタのコンテナ ランタイムを設定するには、クラスタ構成ファイルの spec
にある nodeConfig
セクションの containerRuntime
フィールドを設定します。ベアメタル版 Anthos クラスタでは、次の値がサポートされます。
containerd
docker
フィールドが空または未設定の場合、ベアメタル版 Anthos クラスタはデフォルトで containerd
を使用します。Docker を使用するには、構成内のエントリは次の例のようになる必要があります。
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
spec:
nodeConfig:
containerRuntime: docker
クラスタのアップグレード時にコンテナ ランタイムを構成する
Anthos clusters on bare metal を構成して、アップグレード時に別のコンテナ ランタイムを使用できます。コンテナ ランタイム フィールドの値は、クラスタをアップグレードまたはインストールするときにのみ変更できます。
要件
- ユーザー クラスタの前に管理クラスタをアップグレードする
- クラスタをアップグレードする前に、構成ファイルの
containerRuntime
フィールドの値を設定する
ランタイムを Docker に変更する
アップグレード中にコンテナ ランタイムを設定するには、クラスタ構成ファイルの spec
にある nodeConfig
セクションに containerRuntime
フィールドを設定します。ベアメタル版 Anthos クラスタでは、次の値がサポートされます。
containerd
docker
Docker を使用するには、構成ファイルを次の例のように変更します。
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
spec:
nodeConfig:
containerRuntime: docker
アップグレードの一環としてクラスタノードのコンテナ ランタイムを docker
に設定するには、次のコマンドを実行してクラスタをアップグレードします。
bmctl upgrade cluster
ランタイムに Docker を設定したクラスタの更新
コンテナ ランタイムを docker
に設定した場合、次のコマンドにより、/etc/containerd/certs.d/
のイメージ レジストリ証明書が更新されます。
bmctl update cluster
ランタイムに containerd を使用するクラスタをリセットする
デフォルトのコンテナ ランタイムを使用する場合、次のコマンドでは、構成、バイナリ ファイル、ディレクトリが削除されません。
bmctl reset cluster
リセットの際、containerd
サービスは引き続き実行されますが、Kubernetes によってスケジュールされたコンテナは停止され、containerd ランタイムから削除されます。
完全にリセットするには、次のバイナリ ファイルとディレクトリを削除します。
/etc/crictl.yaml
/etc/systemd/system/containerd.service
/etc/systemd/system/containerd.service.d/
/etc/containerd/config.toml
/etc/containerd/certs.d/
ランタイムとして Docker を使用する場合、リセット時にクリーンアップは行われません。
ランタイムのステータスを確認する
マシン ヘルスチェックの一環としてランタイムのステータスを確認するには、次のコマンドを実行します。
systemctl status RUNTIME
RUNTIME
は、選択したランタイム(containerd
または docker
)に置き換えます。