Menggunakan containerd untuk runtime container

Tujuan runtime container adalah perangkat lunak yang bertanggung jawab untuk mengelola container dan image container node Kubernetes. containerd adalah CNCF (Cloud Native Cloud Foundation) telah lulus dan runtime container. Mendukung Kubernetes secara native, dan dianggap lebih lebih efisien dan aman dibandingkan Docker Engine untuk Kubernetes. Sampai Kubernetes 1.20, Docker Engine adalah dan runtime container utama. Namun, Dockershim, integrasi Docker Engine kode di Kubernetes, tidak digunakan lagi di Kubernetes 1.20, dan telah dihapus Kubernetes 1.24.

Ke depannya, Anda harus menggunakan containerd di cluster Anda.

Dukungan untuk containerd di cluster admin

Google Distributed Cloud menggunakan container untuk semua node cluster admin.

Dukungan untuk containerd dalam cluster pengguna

Google Distributed Cloud mendukung Jenis OS image untuk node cluster pengguna:

Jenis OS imageRuntime container
ubuntu_containerdcontainerd
coscontainerd
windowscontainerd

Pembatasan dan rekomendasi

  • Mulai versi 1.13.0, Google Distributed Cloud tidak lagi mendukung jenis OS image ubuntu. Semua node cluster harus menggunakan runtime yang ada dalam container.

  • Anda tidak dapat mengupgrade cluster yang menggunakan Docker Engine ke versi 1,13. Anda harus mengupdate cluster agar dapat menggunakan runtime dalam container sebelum upgrade ke versi 1.13.

  • Mulai versi 1.12.0, Anda tidak lagi dapat membuat cluster baru yang menggunakan Jenis image OS ubuntu. Artinya, Anda tidak lagi dapat membuat klaster baru yang menggunakan dan runtime container Docker Engine.

Menentukan kumpulan node mana yang menggunakan Docker Engine

Ubuntu

Buat daftar kumpulan node Ubuntu yang menggunakan Docker Engine:

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

Ganti USER_CLUSTER_KUBECONFIG dengan jalur cluster pengguna {i>kubeconfig<i}.

Contoh output:

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

Windows

Semua kumpulan node Windows dalam cluster pengguna menggunakan runtime container yang sama. Tujuan untuk {i>runtime<i} untuk {i>node<i} Windows ditentukan oleh nilai enableWindowsDataplaneV2, yang merupakan kolom di cluster pengguna konfigurasi_file.

Jika enableWindowsDataplaneV2 adalah true, semua node Windows di cluster pengguna gunakan containerd. Jika false, semua node Windows akan menggunakan Docker Engine.

Jalankan perintah berikut untuk menentukan klaster pengguna mana yang memiliki enableWindowsDataplaneV2 ditetapkan ke false. Ini memberi tahu Anda klaster pengguna mana dikonfigurasi untuk menggunakan Docker Engine untuk node Windows.

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

Outputnya mencantumkan semua cluster pengguna yang dikonfigurasi untuk menggunakan Docker Engine pada Node Windows. Contoh:

user-cluster-1

Terlepas dari apakah cluster pengguna memiliki kumpulan node Windows, jika cluster memiliki enableWindowsDataplaneV2 yang disetel ke false, Anda tidak akan dapat mengupgrade ke versi 1.13.

Memperbarui kumpulan node Linux untuk menggunakan container

Untuk setiap kumpulan node dalam file konfigurasi cluster pengguna, tetapkan osImageType ubuntu_containerd atau cos.

Contoh:

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

Perbarui cluster pengguna:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Ganti kode berikut:

  • ADMIN_CLUSTER_KUBECONFIG: jalur kubeconfig admin file

  • USER_CLUSTER_CONFIG: jalur konfigurasi cluster pengguna file

Mengupdate node Windows untuk menggunakan container

Di file konfigurasi cluster pengguna, tetapkan enableWindowsDataplaneV2 ke true.

enableWindowsDataplaneV2: true

Perbarui cluster pengguna:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Perintah sebelumnya menetapkan runtime container ke containerd untuk semua Windows node lainnya di cluster.