コンテナ ランタイムでの containerd の使用

10

コンテナ ランタイムは、Kubernetes ノード上のコンテナとコンテナ イメージを管理するソフトウェアです。containerd は、CNCF(Cloud Native Cloud Foundation)の段階的なコンテナ ランタイムです。Kubernetesをネイティブでサポートしており、Kubernetes 用の Docker Engine よりもリソース効率と安全性が高いと考えられます。Kubernetes 1.20 までは、Docker Engine がプライマリ コンテナ ランタイムでした。ただし、Kubernetes の Docker Engine 統合コードである Dockershim は、Kubernetes 1.20 で非推奨になり、Kubernetes 1.24 で削除されました。

今後は、クラスタで containerd を使用する必要があります。

管理クラスタでの containerd のサポート

Anthos clusters on VMware は、すべての管理クラスタノードに containerd を使用します。

ユーザー クラスタでの containerd のサポート

Anthos clusters on VMware は、ユーザー クラスタノード用に次の OS イメージタイプをサポートしています。

OS イメージのタイプコンテナ ランタイム
ubuntuDocker Engine
ubuntu_containerdcontainerd
coscontainerd
windowsDocker Engine または containerd

Windows ノードでの containerd の使用は、バージョン 1.10 のプレビュー機能です。

制限事項と推奨事項

  • バージョン 1.13.0 以降、Anthos clusters on VMware は ubuntu OS イメージタイプをサポートしなくなります。すべてのクラスタノードが containerd ランタイムを使用します。

  • Docker Engine を使用するクラスタをバージョン 1.13 にアップグレードすることはできません。

  • バージョン 1.12.0 以降、ubuntu OS イメージタイプを使用する新しいクラスタは作成できなくなります。つまり、Docker Engine コンテナ ランタイムを使用する新しいクラスタは作成できなくなります。

  • ユーザー クラスタを 1.11 から 1.12 にアップグレードすると、1.12 クラスタで Docker Engine ランタイムを引き続き使用できます。ただし 1.12 にアップグレードする前に、containerd ランタイムを使用するように 1.11 クラスタを更新しておくことを強くおすすめします。

Docker Engine を使用しているノードプールを特定する

Ubuntu

Docker Engine を使用する Ubuntu ノードプールをリストします。

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get onpremnodepools \
    -o json -A | jq -r '.items[] |select(.spec.osImageType == "ubuntu")|.metadata.name'

USER_CLUSTER_KUBECONFIG は、ユーザー クラスタ kubeconfig ファイルのパスに置き換えます。

出力例:

ubuntu-node-pool-1
ubuntu-node-pool-3

Windows

ユーザー クラスタ内のすべての Windows ノードプールで同じコンテナ ランタイムが使用されます。Windows ノードのランタイムは、ユーザー クラスタ構成ファイル内のフィールドである enableWindowsDataplaneV2 の値によって決まります。

enableWindowsDataplaneV2true の場合、ユーザー クラスタ内のすべての Windows ノードで containerd が使用されます。false の場合は、すべての Windows ノードで Docker Engine が使用されます。

次のコマンドを実行して、enableWindowsDataplaneV2false に設定されているユーザー クラスタを確認します。Windows ノードに Docker Engine を使用するように構成されているユーザー クラスタが示されます。

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get onpremuserclusters \
    -A -o json | jq -r '.items[] |select(.spec.enableWindowsDataplaneV2 == false)|.metadata.name'

出力には、Windows ノードに Docker Engine を使用するように構成されているすべてのユーザー クラスタが表示されます。例:

user-cluster-1

ユーザー クラスタに Windows ノードプールがあるかどうかにかかわらず、クラスタの enableWindowsDataplaneV2false に設定されている場合は、バージョン 1.13 にアップグレードできません。

containerd を使用するようにノードプールを更新する

ユーザー クラスタ構成ファイルの Linux ノードプールごとに、osImageType ubuntu_containerd または cos を設定します。

例:

nodePools
- name: "my-node-pool"
  osImageType: "ubuntu_containerd"

ユーザー クラスタを更新します。

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

以下を置き換えます。

  • ADMIN_CLUSTER_KUBECONFIG: 管理クラスタの kubeconfig ファイルのパス

  • USER_CLUSTER_CONFIG: ユーザー クラスタの構成ファイルのパス

Windows

Anthos clusters on VMware のバージョン 1.10 は、Windows ノードのコンテナ ランタイムを Docker Engine から containerd に更新することをサポートしていません。