Memigrasikan node ke cgroupv2 Linux


Mulai versi 1.33, Google Kubernetes Engine (GKE) memigrasikan cluster yang menjalankan cgroupv1 ke cgroupv2. Halaman ini memberi tahu Anda cara melakukan hal berikut:

  • Periksa mode cgroup yang dijalankan oleh node cluster Anda, dan apakah workload Anda mungkin terpengaruh oleh transisi antar-mode cgroup.
  • Migrasikan node cluster GKE Autopilot atau node pool cluster Standard ke cgroupv2.
  • Untuk sementara, pilih untuk tidak mengizinkan GKE memigrasikan node secara otomatis menggunakan cgroupv1 ke cgroupv2. Ikuti petunjuk ini jika cluster Anda menjalankan beban kerja yang mungkin terpengaruh oleh transisi antar-mode cgroup.

Anda dapat melewati halaman ini jika tahu bahwa beban kerja Anda berjalan seperti yang diharapkan di cgroupv2, atau tidak terpengaruh oleh konfigurasi mode cgroup. GKE secara otomatis memigrasikan cluster yang menjalankan cgroupv1 ke cgroupv2 dengan versi 1.33 dan yang lebih baru.

Tentang grup kontrol Linux

Kubelet dan runtime container menggunakan grup kontrol (cgroup) kernel Linux untuk pengelolaan resource, seperti membatasi jumlah CPU atau memori yang dapat diakses oleh setiap container di Pod. Ada dua mode subsistem cgroup dalam kernel: cgroupv1 dan cgroupv2. Dukungan Kubernetes untuk cgroupv2 diperkenalkan sebagai alfa di Kubernetes versi 1.18, beta di 1.22, dan GA di 1.25. Untuk mengetahui detail selengkapnya, lihat dokumentasi cgroups v2 Kubernetes.

Untuk mempelajari cara mengonfigurasi mode cgroup untuk cluster Standard, lihat Opsi konfigurasi mode cgroup Linux.

Cara GKE bertransisi ke cgroupv2

Tinjau linimasa berikut untuk memahami cara GKE melakukan transisi cluster yang ada untuk menggunakan cgroupv2:

  • Untuk versi sebelum 1.26, cgroupv1 adalah setelan default untuk node. Untuk versi 1.26 atau yang lebih baru, cgroupv2 adalah default untuk node baru. Tidak ada perubahan pada node yang ada. Untuk mempelajari lebih lanjut mode cgroup yang dijalankan cluster GKE Anda secara default, lihat Memeriksa mode cgroup node cluster.
  • Dengan versi minor 1.31, GKE menghentikan penggunaan cgroupv1.
  • Mulai versi 1.33, GKE memigrasikan cluster yang menjalankan cgroupv1 ke cgroupv2. Anda dapat mencegah migrasi otomatis ini untuk sementara dengan menentukan secara eksplisit bahwa node pool menggunakan cgroupv1.
  • Dengan versi minor 1.35, GKE menghapus dukungan untuk cgroupv1.

Untuk perkiraan waktu upgrade otomatis ke versi minor yang lebih baru seperti 1.31 dan 1.33, lihat Perkiraan jadwal untuk saluran rilis.

Sebelum memulai

Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:

  • Aktifkan Google Kubernetes Engine API.
  • Aktifkan Google Kubernetes Engine API
  • Jika ingin menggunakan Google Cloud CLI untuk tugas ini, instal lalu lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan gcloud components update.

Memeriksa mode cgroup node cluster

Mode cgroup default bergantung pada jenis cluster atau kumpulan node, dan versinya. Dengan versi 1.26 atau yang lebih baru, defaultnya adalah cgroupv2. Dengan versi 1.25 atau yang lebih lama, defaultnya adalah cgroupv1:

  • Untuk cluster Autopilot dan node pool cluster Standard baru yang dibuat dengan penyediaan otomatis node, mode cgroup didasarkan pada versi cluster awal.
  • Untuk node pool cluster Standard yang dibuat secara manual tanpa penyediaan otomatis node, mode cgroup didasarkan pada versi node pool awal.

Untuk memeriksa mode cgroup, ikuti petunjuk berdasarkan mode cluster Anda.

Autopilot

Jalankan perintah berikut:

gcloud container clusters describe CLUSTER_NAME \
    --format='value(nodePools[0].config.effectiveCgroupMode)'

Ganti CLUSTER_NAME dengan nama cluster Anda.

Jika outputnya adalah EFFECTIVE_CGROUP_MODE_V2, cluster berjalan di cgroupv2. Jika outputnya adalah EFFECTIVE_CGROUP_MODE_V1, cluster berjalan di cgroupv1.

Cluster GKE Autopilot yang awalnya dibuat dengan GKE versi 1.25 atau yang lebih lama menjalankan cgroupv1 hingga Anda memigrasikannya.

Standard

Dengan cluster GKE Standard, mode cgroup ditetapkan di level node pool. Untuk memeriksa mode setiap node pool, ikuti petunjuk untuk Memverifikasi konfigurasi cgroup. Jika node cluster Anda sudah menggunakan cgroupv2, Anda tidak perlu melakukan tindakan lebih lanjut.

Memigrasikan node ke cgroupv2

Sebaiknya migrasikan node yang ada sebelum GKE memigrasikannya secara otomatis di versi 1.33 atau yang lebih baru.

Lakukan langkah-langkah berikut untuk memigrasikan node yang menjalankan cgroupv1:

  1. Periksa mode cgroup node. Jika node cluster Anda sudah menggunakan cgroupv2, Anda tidak perlu melakukan tindakan lebih lanjut.
  2. Tinjau pertimbangan tentang migrasi, Migrasi ke cgroup v2, untuk memastikan bahwa workload Anda siap menggunakan API versi baru.
  3. Migrasikan node untuk cluster Anda.

    Autopilot

    Tetapkan node cluster Anda secara eksplisit untuk menggunakan cgroupv2:

    gcloud container clusters update CLUSTER_NAME \
        --autoprovisioning-cgroup-mode=v2
    

    Ganti CLUSTER_NAME dengan nama cluster Anda.

    Standard

    1. Jika Anda menggunakan penyediaan otomatis node untuk cluster, jalankan perintah berikut untuk memastikan bahwa node pool yang ada dan yang akan dibuat dengan penyediaan otomatis node menggunakan cgroupv2:

      gcloud container clusters update CLUSTER_NAME \
          --autoprovisioning-cgroup-mode=v2
      

      Ganti CLUSTER_NAME dengan nama cluster Anda.

    2. Untuk node pool yang ada yang dibuat tanpa penyediaan otomatis node, perbarui node pool untuk menambahkan hal berikut ke konfigurasi sistem node:

      linuxConfig:
        cgroupMode: 'CGROUP_MODE_V2'
      

      Untuk mempelajari lebih lanjut, lihat Menyesuaikan konfigurasi sistem node.

      Saat Anda membuat node pool baru secara manual tanpa penyediaan otomatis node, GKE akan menggunakan cgroupv2 secara default.

Memilih tidak ikut migrasi otomatis ke cgroupv2 untuk sementara

Untuk sementara menghindari migrasi otomatis node yang menjalankan cgroupv1 ke cgroupv2 dengan versi minor 1.33 dan yang lebih baru, Anda harus menetapkan cgroupv1 secara eksplisit. Anda juga dapat menggunakan petunjuk ini untuk sementara kembali ke cgroupv1 jika memigrasikan node ke cgroupv2 menyebabkan masalah pada beban kerja cluster Anda.

Autopilot

Jalankan perintah berikut untuk cluster yang awalnya Anda buat menggunakan versi 1.25 atau yang lebih lama. Jika cluster dibuat dengan menjalankan versi 1.26 atau yang lebih baru, Anda tidak dapat menetapkan mode cgroup ke cgroupv1.

Tetapkan node cluster Anda secara eksplisit untuk menggunakan cgroupv1:

gcloud container clusters update CLUSTER_NAME \
    --autoprovisioning-cgroup-mode=v1

Ganti CLUSTER_NAME dengan nama cluster Anda.

Standard

Untuk terus menjalankan cgroupv1 dengan node pool cluster GKE Standard yang menjalankan versi 1.33 atau yang lebih baru, lakukan langkah-langkah berikut:

  1. Jika Anda menggunakan penyediaan otomatis node, dan cluster Anda dibuat dengan menjalankan versi 1.25 atau yang lebih lama, gunakan perintah berikut untuk memastikan bahwa node pool yang ada dan yang akan datang yang dibuat dengan penyediaan otomatis node menggunakan cgroupv1. Jika cluster Anda dibuat dengan menjalankan versi 1.26 atau yang lebih baru, Anda tidak dapat menetapkan mode cgroup ke cgroupv1:

    gcloud container clusters update CLUSTER_NAME \
        --autoprovisioning-cgroup-mode=v1
    

    Ganti CLUSTER_NAME dengan nama cluster Anda.

  2. Untuk node pool Standard yang ada, update node pool untuk menambahkan hal berikut ke konfigurasi sistem node:

    linuxConfig:
      cgroupMode: 'CGROUP_MODE_V1'
    

    Anda juga harus menetapkan konfigurasi node ini untuk node pool baru yang Anda buat secara manual tanpa penyediaan otomatis node.

    Untuk mempelajari lebih lanjut, lihat Menyesuaikan konfigurasi sistem node.