ベアメタル版 Anthos クラスタでは、オプションの containerRuntime
構成フィールドがクラスタ構成ファイルに追加されます。このフィールドを使用して、Kubernetes Pod のコンテナのスケジュール設定にクラスタノードが使用するコンテナ ランタイムを構成します。
ベアメタル版 Anthos クラスタ 1.7 以降では、kubelet
を使用してコンテナ ランタイム インターフェースを直接呼び出せます。この方法を使用すると、Docker デーモンが必要なくなり、kubelet
と Docker を分離できます。
この変更は、Kubernetes の目的上必要とされるもので、Docker デーモンの使用は廃止され、containerd がデフォルトになります。Kubernetes では、Kubernetes バージョン 1.20 から警告を発信し、バージョン 1.24 でのサポート終了を予定しています。この変更は、containerd を GKE のデフォルトにするという予定済の変更と整合しています。
ベアメタル版 Anthos クラスタでは、新しい containerRuntime
フィールドを使用して kubelet
を構成し、Docker または containerd
を使用できます。
始める前に
クラスタで使用するコンテナ ランタイムを特定します。コンテナ ランタイム フィールドの値は、クラスタをアップグレードまたはインストールするときにのみ変更できます。
デプロイメントが
containerd
バージョン 1.4.3 以降をサポートしていることを確認します。ベアメタル版 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 クラスタが、選択したランタイムに応じて次の証明書をノードにインストールできるようにします。
- Docker 用:
/etc/docker/certs.d/
containerd
用:/etc/docker/certs.d/
/etc/containerd/certs.d/
- Docker 用:
新しいクラスタのコンテナ ランタイムを構成する
新しいクラスタのコンテナ ランタイムを設定するには、クラスタ構成ファイルの spec
にある nodeConfig
セクションの containerRuntime
フィールドを設定します。ベアメタル版 Anthos クラスタでは、次の値がサポートされます。
docker
containerd
フィールドが空または未設定の場合、ベアメタル版 Anthos クラスタはデフォルトで docker
を使用します。containerd
を使用するには、構成内のエントリは次の例のようになる必要があります。
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
spec:
nodeConfig:
containerRuntime: containerd
クラスタのアップグレード時にコンテナ ランタイムを構成する
次のいずれかのバージョンからアップグレードする場合は、ベアメタル版 Anthos クラスタを構成して、別のコンテナ ランタイムを使用できます。
- 1.6.0
- 1.6.1
- 1.6.2
コンテナ ランタイム フィールドの値は、クラスタをアップグレードまたはインストールするときにのみ変更できます。
要件
- ユーザー クラスタの前に管理クラスタをアップグレードする
- クラスタをアップグレードする前に、構成ファイルの
containerRuntime
フィールドの値を設定する
ランタイムを containerd に変更する
アップグレード中にコンテナ ランタイムを設定するには、クラスタ構成ファイルの spec
にある nodeConfig
セクションに containerRuntime
フィールドを設定します。ベアメタル版 Anthos クラスタでは、次の値がサポートされます。
docker
containerd
containerd
を使用するには、構成ファイルを次の例のように変更します。
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
spec:
nodeConfig:
containerRuntime: containerd
アップグレードの一環としてクラスタノードのコンテナ ランタイムを containerd
に設定するには、次のコマンドを実行してクラスタをアップグレードします。
bmctl upgrade cluster
コントロール プレーンに対するアップグレード後の変更点
アップグレードの際、ランタイムが containerd
に設定されていると、ベアメタル版 Anthos クラスタは、ロードバランサをサポートするためコントロール プレーン ノードで次のタスクを実行します。
docker.*.service
サービスの削除container.*.service
サービスのインストールhaproxy
およびkeepalived
システム サービスの再起動
docker
ランタイムを使用するクラスタは、アップグレード後も既存の haproxy
と keepalived
のシステム サービスを保持します。
ランタイムに containerd を設定したクラスタの更新
コンテナ ランタイムを containerd
に設定した場合、次のコマンドにより、/etc/containerd/certs.d/
のイメージ レジストリ証明書が更新されます。
bmctl update cluster
ランタイムに containerd を設定したクラスタのリセット
コンテナ ランタイムを 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/
containerd ランタイムのステータスを確認する
マシン ヘルスチェックの一部として containerd
のステータスを確認するには、次のコマンドを実行します。
systemctl status containerd