コンテナ ランタイムを変更する

ベアメタル版 Anthos クラスタでは、オプションの containerRuntime 構成フィールドがクラスタ構成ファイルに追加されます。このフィールドを使用して、Kubernetes Pod のコンテナのスケジュール設定にクラスタノードが使用するコンテナ ランタイムを構成します。

kubeletContainer 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)に置き換えます。