Utilizzo di containerd per il runtime del container

Il runtime container è un software responsabile della gestione dei container e delle immagini container su un nodo Kubernetes. containerd è un runtime container con stato di progetto laureato CNCF (Cloud Native Cloud Foundation). Supporta Kubernetes in modo nativo ed è considerato più efficiente in termini di risorse e più sicuro di Docker Engine per Kubernetes. Fino a Kubernetes 1.20, Docker Engine era il runtime container principale. Tuttavia, Dockershim, il codice di integrazione di Docker Engine in Kubernetes, è stato ritirato in Kubernetes 1.20 e rimosso in Kubernetes 1.24.

In futuro, dovresti utilizzare containerd nei tuoi cluster.

Supporto di containerd in un cluster di amministrazione

Google Distributed Cloud utilizza containerd per tutti i nodi del cluster di amministrazione.

Supporto di containerd in un cluster utente

Google Distributed Cloud supporta i seguenti tipi di immagini del sistema operativo per i nodi del cluster utente:

Tipo di immagine sistema operativoRuntime container
ubuntu_cgv2containerd
cos_cgv2containerd
windowscontainerd

Restrizioni e consigli

  • A partire dalla versione 1.13.0, Google Distributed Cloud non supporta più il tipo di immagine del sistema operativo ubuntu. Tutti i nodi del cluster devono utilizzare il runtime containerd.

  • Non puoi eseguire l'upgrade di un cluster che utilizza Docker Engine alla versione 1.13. Prima di eseguire l'upgrade alla versione 1.13, devi aggiornare il cluster in modo che utilizzi il runtime containerd.

  • A partire dalla versione 1.12.0, non puoi più creare nuovi cluster che utilizzano il tipo di immagine del sistema operativo ubuntu. Ciò significa che non puoi più creare nuovi cluster che utilizzano il runtime container Docker Engine.

Determinare quali node pool utilizzano Docker Engine

Ubuntu

Elenca i node pool Ubuntu che utilizzano Docker Engine:

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

Sostituisci USER_CLUSTER_KUBECONFIG con il percorso del file kubeconfig del cluster utente.

Output di esempio:

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

Windows

Tutti i node pool Windows in un cluster utente utilizzano lo stesso runtime container. Il runtime per i nodi Windows è determinato dal valore di enableWindowsDataplaneV2, che è un campo nel file di configurazione del cluster utente.

Se enableWindowsDataplaneV2 è true, tutti i nodi Windows nel cluster utente utilizzano containerd. Se è false, tutti i nodi Windows utilizzano Docker Engine.

Esegui il seguente comando per determinare quali cluster utente hanno enableWindowsDataplaneV2 impostato su false. In questo modo puoi sapere quali cluster utente sono configurati per utilizzare Docker Engine per i nodi Windows.

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

L'output elenca tutti i cluster utente configurati per utilizzare Docker Engine per i nodi Windows. Ad esempio:

user-cluster-1

Indipendentemente dal fatto che un cluster utente abbia o meno node pool Windows, se il cluster ha enableWindowsDataplaneV2 impostato su false, non potrai eseguire l'upgrade alla versione 1.13.

Aggiornare i node pool Linux in modo che utilizzino containerd

Per ogni pool di nodi nel file di configurazione del cluster utente, imposta osImageType imposta osImageType su ubuntu_cgv2 o cos_cgv2.

Esempio:

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

Aggiorna il cluster utente:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Sostituisci quanto segue:

  • ADMIN_CLUSTER_KUBECONFIG: il percorso del file kubeconfig del cluster di amministrazione

  • USER_CLUSTER_CONFIG: il percorso del file di configurazione del cluster utente

Aggiornare i nodi Windows in modo che utilizzino containerd

Nel file di configurazione del cluster utente, imposta enableWindowsDataplaneV2 su true.

enableWindowsDataplaneV2: true

Aggiorna il cluster utente:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Il comando precedente imposta il runtime container su containerd per tutti i nodi Windows nel cluster.