ベアメタル版 Anthos クラスタでは、オプションの containerRuntime
構成フィールドがクラスタ構成ファイルに追加されます。このフィールドを使用して、Kubernetes Pod のコンテナのスケジュール設定にクラスタノードが使用するコンテナ ランタイムを構成します。
kubelet
で Container Runtime Interface を直接呼び出すことができます。この方法を使用すると、Docker デーモンが必要なくなり、kubelet
と Docker を分離できます。
この変更は、Kubernetes の目的上必要とされるもので、Docker デーモンの使用は廃止され、containerd がデフォルトになります。Kubernetes では、Kubernetes バージョン 1.20 から警告を発信し、バージョン 1.24 でのサポート終了を予定しています。この変更は、containerd を GKE のデフォルトにするという予定済の変更と整合しています。
ベアメタル版 Anthos クラスタでは、新しい containerRuntime
フィールドを使用して kubelet
を構成し、Docker または containerd
を使用できます。デフォルトでは、kubelet
はコンテナ ランタイムに containerd を使用します。
始める前に
クラスタで使用するコンテナ ランタイムを特定します。コンテナ ランタイム フィールドの値は、クラスタをアップグレードまたはインストールするときにのみ変更できます。
デプロイが
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
)に置き換えます。