コンテナ ランタイムは、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_containerd | containerd |
cos | containerd |
windows | containerd |
制限事項と推奨事項
バージョン 1.13.0 以降、Google Distributed Cloud は
ubuntu
OS イメージタイプをサポートしなくなりました。すべてのクラスタノードは containerd ランタイムを使用します。Docker Engine を使用するクラスタをバージョン 1.13 にアップグレードすることはできません。1.13 にアップグレードする前に、containerd ランタイムを使用するためにクラスタを更新する必要があります。
バージョン 1.12.0 以降、
ubuntu
OS イメージタイプを使用する新しいクラスタは作成できなくなりました。つまり、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 を 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: ユーザー クラスタの構成ファイルのパス
containerd を使用するように Windows ノードを更新する
ユーザー クラスタ構成ファイルで、enableWindowsDataplaneV2 を true
に設定します。
enableWindowsDataplaneV2: true
ユーザー クラスタを更新します。
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
前述のコマンドは、クラスタ内のすべての Windows ノードに対してコンテナ ランタイムを containerd に設定します。