クラスタではコンテナ ランタイムを使用して、Kubernetes Pod の作成と実行を行います。Anthos clusters on bare metal のバージョン 1.13 より前のバージョンでは、コンテナ ランタイムは Docker Engine
または containerd
のいずれかでした。ただし、コンテナ ランタイムとして使用できるのは、Anthos clusters on bare metal バージョン 1.13 以降の containerd
のみです。
クラスタでコンテナ ランタイムとして Docker Engine
を使用している場合は、コンテナ ランタイムを containerd
に変更する必要があります。このページでは、コンテナ ランタイムを containerd
に設定する方法について説明します。
コンテナ ランタイムを指定するには、クラスタ構成ファイルの containerRuntime
フィールドの値を設定します。ただし、このフィールドの値を設定または変更するだけでは不十分です。変更を有効にするには、新しいクラスタを作成するか、既存のクラスタをアップグレードする必要があります。つまり、コンテナ ランタイムを変更できるのは、新しいクラスタを作成する場合と既存のクラスタをアップグレードする場合のみです。
Kubernetes 1.24 では Docker Engine のサポートが終了
Kubernetes の dockershim
コンポーネントを使用すると、クラスタノードで Docker Engine コンテナ ランタイムを使用できます。ただし、Kubernetes 1.24 では dockershim
コンポーネントが削除されました。Anthos clusters on bare metal バージョン 1.13 は Kubernetes 1.24 で実行されるため、バージョン 1.13 以降のクラスタでは Docker Engine をコンテナ ランタイムとして使用できなくなりました。
クラスタをアップグレードまたは作成する際は、次のコンテナ ランタイムに関するルールに注意してください。
- バージョン 1.13 以降のクラスタには、
containerd
を使用する必要があります。 - Docker Engine コンテナ ランタイムを使用するバージョン 1.12 のクラスタは作成できません。
- Docker Engine を使用する 1.11 クラスタを、Docker Engine を使用する 1.12 クラスタにアップグレードできます。ただし、アップグレードする前に
containerd
に切り替えることを強くおすすめします。
開発でイメージの作成に使用する Docker のインストールは、Kubernetes クラスタ内にある Docker Engine コンテナ ランタイムとは関係ありません。Docker は、引き続きイメージの作成とアプリケーション コンテナのビルドに使用できます。そうしたコンテナは、クラスタ内で引き続き機能します。
bmctl
コマンドでは、クラスタの作成などのオペレーションに Docker が必要になるため、引き続き管理ワークステーションに Docker をインストールする必要があります。この Docker の使用も、dockershim
のサポート終了による影響を受けません。
コンテナのランタイムを docker
から containerd
に変更する方法について詳しくは、以下の各セクションをご覧ください。
始める前に
クラスタをアップグレードする際は、ユーザー クラスタをアップグレードする前に、管理クラスタをアップグレードする必要があります。
デプロイが
containerd
バージョン 1.4.6 以降をサポートしていることを確認します。ベアメタル版 Anthos クラスタは、以前にインストールされたcontainerd
のバージョンをこのバージョンで上書きインストールします。Anthos clusters on bare metal が次のファイルをインストールできることを確認します。
バイナリ ファイル
/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 clusters on bare metal がノードに
/etc/containerd/certs.d/
証明書をインストールできることを確認します。
新しいクラスタのコンテナ ランタイムとして containerd
を設定する
クラスタ構成ファイルの spec.nodeConfig
セクションが空であるか設定されていない場合は、新しいクラスタが作成されると、クラスタのコンテナ ランタイムが自動的に containerd
に設定されます。
ただし、新しいクラスタのコンテナ ランタイムとして containerd
を明示的に設定するには、クラスタ構成ファイルの spec.nodeConfig
セクションで containerRuntime フィールドを containerd
に設定します。これを行うと、クラスタ構成は次のようになります。
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
spec:
nodeConfig:
containerRuntime: containerd
このクラスタ構成ファイルを使用して新しいクラスタを作成すると、コンテナ ランタイムは containerd
になります。
クラスタのアップグレード時に、コンテナ ランタイムを docker
から containerd
に変更する
クラスタのアップグレード時にコンテナ ランタイムを docker
から containerd
に変更するには、次の手順を行います。
クラスタ構成ファイルの
spec.nodeConfig
セクションで、containerRuntime フィールドをdocker
からcontainerd
に変更します。これを行うと、クラスタ構成は次のようになります。apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: cluster1 namespace: cluster-cluster1 spec: nodeConfig: containerRuntime: containerd
次のコマンドを実行して、クラスタをアップグレードします。
bmctl upgrade cluster -c CLUSTER_NAME --kubeconfig=ADMIN_KUBECONFIG
以下を置き換えます。
- CLUSTER_NAME は、更新するクラスタの名前に置き換えます。
- ADMIN_KUBECONFIG は、管理クラスタの kubeconfig ファイルのパスに置き換えます。
コンテナ ランタイムのステータスを確認する
次のコマンドを実行して、コンテナ ランタイムのステータスを確認します。
systemctl status containerd
クラスタのアップグレード時に、コンテナ ランタイムを containerd
から docker
に変更する
Anthos clusters on bare metal をバージョン 1.11 から 1.12 にアップグレードする場合は、いずれかのコンテナ ランタイムを使用できます。ただし、Docker Engine
コンテナ ランタイムはバージョン 1.13.0 以降ではサポートされていないため、containerd
を使用することを強くおすすめします。