コンテナ ランタイムは、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 イメージのタイプ | コンテナ ランタイム |
---|---|
ubuntu | Docker Engine |
ubuntu_containerd | containerd |
cos | containerd |
windows | Docker 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
の値によって決まります。
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 を使用するようにノードプールを更新する
ユーザー クラスタ構成ファイルの 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 に更新することをサポートしていません。