Memigrasikan node ke cgroupv2 Linux


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

  • Periksa mode cgroup yang dijalankan oleh node cluster Anda, dan apakah workload Anda mungkin terpengaruh oleh transisi antara mode cgroup.
  • Memigrasikan node cluster Autopilot GKE atau node pool cluster Standard ke cgroupv2.
  • Menonaktifkan sementara migrasi otomatis node GKE dari cgroupv1 ke cgroupv2. Ikuti petunjuk ini jika cluster Anda menjalankan workload yang mungkin terpengaruh oleh transisi antar-mode cgroup.

Anda dapat melewati membaca halaman ini jika Anda tahu bahwa workload Anda berjalan sesuai harapan 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 sebuah 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 Standar, lihat Opsi konfigurasi mode cgroup Linux.

Cara GKE bertransisi ke cgroupv2

Tinjau linimasa berikut untuk memahami cara GKE mentransisikan cluster yang ada agar menggunakan cgroupv2:

  • Untuk versi sebelum 1.26, cgroupv1 adalah 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 mengetahui 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 melakukan 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.

Periksa mode cgroup node cluster

Mode cgroup default bergantung pada jenis cluster atau node pool, 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. Anda tidak dapat menyetel mode cgroup selama pembuatan cluster Autopilot. Untuk node baru yang disediakan otomatis, Anda tidak dapat menyetel mode yang berbeda dari mode cgroup default berdasarkan versi minor.
  • Untuk node pool cluster Standard yang dibuat secara manual tanpa penyediaan otomatis node, mode cgroup didasarkan pada versi node pool awal, atau konfigurasi sistem node yang disesuaikan.

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.

Standar

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, Memigrasikan ke cgroup v2, untuk memastikan 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.

    Standar

    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 sudah 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 menghindari migrasi otomatis node yang menjalankan cgroupv1 ke cgroupv2 dengan versi minor 1.33 dan yang lebih baru untuk sementara, Anda harus menetapkan cgroupv1 secara eksplisit. Anda juga dapat menggunakan petunjuk ini untuk kembali ke cgroupv1 untuk sementara jika memigrasikan node ke cgroupv2 menyebabkan masalah pada workload cluster Anda.

Autopilot

Jalankan perintah berikut untuk cluster yang awalnya Anda buat menggunakan versi 1.25 atau yang lebih lama. Jika cluster Anda dibuat dengan menjalankan versi 1.26 atau yang lebih baru, Anda tidak dapat menyetel 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.

Standar

Untuk terus menjalankan cgroupv1 dengan node pool cluster Standard GKE 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 dibuat dengan penyediaan otomatis node menggunakan cgroupv1. Jika cluster Anda dibuat dengan menjalankan versi 1.26 atau yang lebih baru, Anda tidak dapat menyetel 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, perbarui 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.