コンテナ ランタイムは、Kubernetes ノード上のコンテナとコンテナ イメージを管理するソフトウェアです。containerd は、CNCF(Cloud Native Cloud Foundation)から移行したコンテナ ランタイムです。Kubernetes はネイティブでサポートされており、Kubernetes 向け Docker Engine よりもリソース効率と安全性が高いと考えられています。Kubernetes 1.20 までは、Docker Engine が主要なコンテナ ランタイムでした。しかし、Dockershim(Kubernetes の Docker Engine 統合コード)は、Kubernetes 1.20 で非推奨になり、Kubernetes 1.24 で削除されました。
今後は、クラスタでは containerd を使用する必要があります。
管理クラスタでの containerd のサポート
Google Distributed Cloud は、すべての管理クラスタノードに containerd を使用します。
ユーザー クラスタでの containerd のサポート
Google Distributed Cloud は、ユーザー クラスタノード用に次の OS イメージタイプをサポートしています。
| OS イメージのタイプ | コンテナ ランタイム |
|---|---|
ubuntu_cgv2 | containerd |
cos_cgv2 | containerd |
windows | containerd |
制限事項と推奨事項
バージョン 1.13.0 以降、Google Distributed Cloud は
ubuntuOS イメージタイプをサポートしなくなりました。すべてのクラスタノードは containerd ランタイムを使用します。Docker Engine を使用するクラスタをバージョン 1.13 にアップグレードすることはできません。1.13 にアップグレードする前に、containerd ランタイムを使用するためにクラスタを更新する必要があります。
バージョン 1.12.0 以降、
ubuntuOS イメージタイプを使用する新しいクラスタは作成できなくなりました。つまり、Docker Engine コンテナ ランタイムを使用する新しいクラスタは作成できなくなりました。
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 の値によって決定されます。
enableWindowsDataplaneV2 が true の場合、ユーザー クラスタ内のすべての Windows ノードで containerd が使用されます。false の場合は、すべての Windows ノードで Docker Engine が使用されます。
次のコマンドを実行して、enableWindowsDataplaneV2 が false に設定されているユーザー クラスタを特定します。これにより、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 ノードプールがあるかどうかにかかわらず、クラスタで enableWindowsDataplaneV2 が false に設定されている場合、バージョン 1.13 へのアップグレードはできません。
containerd を使用するようにノードプールを更新する
ユーザー クラスタ構成ファイルのノードプールごとに、osImageType を osImageType に設定し、ubuntu_cgv2 または cos_cgv2 に設定します。
例:
nodePools - name: "my-node-pool" osImageType: "ubuntu_cgv2"
ユーザー クラスタを更新します。
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
次のように置き換えます。
ADMIN_CLUSTER_KUBECONFIG: 管理クラスタの kubeconfig ファイルのパス
USER_CLUSTER_CONFIG: ユーザー クラスタの構成ファイルのパス
containerd を使用するように Windows ノードを更新する
ユーザー クラスタ構成ファイルで、enableWindowsDataplaneV2 を true に設定します。
enableWindowsDataplaneV2: true
ユーザー クラスタを更新します。
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
前述のコマンドは、クラスタ内のすべての Windows ノードに対してコンテナ ランタイムを containerd に設定します。