All Products
Search
Document Center

Container Service for Kubernetes:Migrasi node ke cgroup v2

Last Updated:Dec 24, 2025

cgroup v2 menggunakan hierarki terpadu dan mekanisme manajemen memori yang ditingkatkan, serta kompatibel dengan fitur-fitur lanjutan di versi Kubernetes mendatang. Migrasi node Anda ke sistem operasi yang lebih baru yang mengaktifkan cgroup v2 secara default meningkatkan stabilitas kluster dan efisiensi manajemen resource.

Panduan versi cgroup

Kernel Linux menyediakan dua versi cgroup: cgroup v1 dan cgroup v2. Cgroup membatasi, mencatat, dan mengisolasi resource fisik yang digunakan oleh kelompok proses, seperti CPU, memori, dan I/O. cgroup v2 adalah antarmuka cgroup generasi berikutnya yang menyelesaikan masalah hierarki pengontrol ganda pada cgroup v1 serta menyediakan kontrol resource yang lebih konsisten. Kedua versi ini berbeda dalam antarmuka umum dan cara subsistem diorganisasi. Aplikasi yang mengakses langsung sistem file cgroup harus diperbarui agar kompatibel.

Untuk informasi selengkapnya, lihat Perbedaan antara cgroup v1 dan cgroup v2.

Mulai dari versi 1.31, Kubernetes telah memindahkan dukungan cgroup v1 ke mode maintenance. Oleh karena itu, migrasi ke cgroup v2 sangat disarankan. Keunggulan utama cgroup v2 meliputi hal-hal berikut:

  • Stabilitas yang lebih baik: cgroup v2 menggunakan model pencatatan memori terpadu untuk mengelola Page Cache secara efektif. Ini menyelesaikan masalah pada cgroup v1 di mana aplikasi dengan I/O disk tinggi merebut memori, sehingga menyebabkan aplikasi lain dihentikan oleh event out-of-memory (OOM).

  • Hierarki terpadu: Semua pengontrol resource, seperti CPU dan memori, diorganisasi dalam satu hierarki. Hal ini menghindari konflik konfigurasi dan kompleksitas manajemen akibat hierarki ganda pada cgroup v1, serta menyederhanakan tampilan resource dan definisi kebijakan.

  • Observabilitas resource yang ditingkatkan: cgroup v2 memperkenalkan Pressure Stall Information (PSI). PSI mengukur waktu suatu aplikasi diblokir saat menunggu resource CPU, memori, atau I/O, sehingga menyediakan metrik detail halus untuk menganalisis bottleneck performa.

Periksa versi cgroup pada sebuah node

Sebelum melakukan migrasi, login ke node tersebut dan jalankan perintah berikut untuk memeriksa versi cgroup saat ini.

# Jalankan perintah ini setelah login ke node target
stat -fc %T /sys/fs/cgroup/

# Expected output:
# cgroup2fs  --> Menunjukkan cgroup v2
# tmpfs      --> Menunjukkan cgroup v1

Langkah-langkah migrasi

Tingkat node: Ubah sistem operasi

Versi cgroup pada node kluster ACK ditentukan oleh sistem operasinya. Untuk melakukan migrasi, Anda harus mengubah sistem operasi pada tingkat node pool ke versi yang lebih baru yang mendukung cgroup v2. Di ACK, sistem operasi yang menggunakan cgroup v2 secara default meliputi Alibaba Cloud Linux 3.2104 LTS 64-bit Container-Optimized Edition, Alibaba Cloud Linux 4 LTS 64-bit Container-Optimized Edition, ContainerOS 3.3 dan versi lebih baru, RHEL 9 dan versi lebih baru, serta Ubuntu 22 dan versi lebih baru.

Untuk informasi selengkapnya, lihat Ubah sistem operasi.

Tingkat aplikasi: Pastikan kompatibilitas beban kerja

Karena struktur sistem file dan nama parameter pada cgroup v1 dan v2 tidak kompatibel, setiap aplikasi yang membaca langsung path /sys/fs/cgroup harus diverifikasi atau ditingkatkan agar mendukung cgroup v2.

Kategori

Deskripsi

Aplikasi Java

  • DragonWell: 11.0.16.12, 8.15.16-GA dan versi lebih baru.

  • OpenJDK/HotSpot: jdk8u372, 11.0.16, 15 dan versi lebih baru.

  • IBM Semeru Runtimes: 8.0.382.0, 11.0.20.0, 17.0.8.0 dan versi lebih baru.

  • IBM Java: 8.0.8.6 dan versi lebih baru.

Aplikasi Go

Jika Anda menggunakan paket uber-go/automaxprocs, tingkatkan ke v1.5.1 atau versi lebih baru.

cAdvisor

Jika Anda menggunakan cAdvisor sebagai DaemonSet mandiri untuk memantau Pod dan kontainer, perbarui ke v0.43.0 atau versi lebih baru.

Nginx Ingress

Versi lama mungkin gagal mengurai informasi core CPU dengan benar di cgroup v2. Hal ini dapat menyebabkan penggunaan memori berlebihan dan memicu event OOM. Tingkatkan ke v1.11.2 atau versi lebih baru. Untuk informasi selengkapnya, lihat GitHub Issue #9665.

Saat Anda meningkatkan Nginx Ingress Controller ACK, lihat Tingkatkan komponen Nginx Ingress Controller.
Aplikasi dan komponen lain yang perlu diperhatikan
  • Agen monitoring dan APM pihak ketiga: Alat seperti Prometheus Node Exporter, Datadog Agent, dan SkyWalking bergantung pada sumber data cgroupfs untuk mengumpulkan metrik node atau kontainer. Versi yang tidak kompatibel dengan cgroup v2 dapat menyebabkan data hilang atau tidak normal. Periksa dokumentasi resmi dan tingkatkan ke versi yang secara eksplisit mendukung cgroup v2.

  • Alat keamanan dan auditing: Alat seperti Falco dan Sysdig menggunakan informasi cgroup untuk mengaitkan event dengan sumbernya. Jika versi komponen tidak kompatibel, aturan deteksi mungkin gagal atau menghasilkan positif palsu. Tingkatkan ke versi yang kompatibel dan verifikasi efektivitas aturan tersebut di lingkungan staging.

  • Aplikasi sensitif performa dan skrip kustom: Beberapa skrip startup aplikasi membaca file cgroup untuk penyetelan otomatis, seperti menentukan jumlah thread berdasarkan kuota CPU. Logika ini gagal di bawah cgroup v2 karena perubahan path. Tinjau skrip terkait dan perbarui agar membaca data dengan cara yang kompatibel dengan cgroup v2.

Rekomendasi untuk lingkungan produksi

  • Kompatibilitas aplikasi

    Tinjau aplikasi atau skrip kustom Anda untuk memastikan tidak bergantung pada sistem file cgroup v1, seperti cpu.cfs_quota_us. Karena antarmuka sistem file tidak kompatibel, logika ini akan gagal di bawah cgroup v2 dan harus diperbarui.

  • Konfigurasi node kustom

    Mengubah sistem operasi akan mereset node. Semua modifikasi kustom harus dipertahankan menggunakan fitur node pool. Jika tidak, modifikasi tersebut akan hilang setelah node dibangun ulang. Untuk metode konfigurasi terkait dan catatan penting, lihat:

  • Pemantauan dan peringatan: Aktifkan Alibaba Cloud Prometheus Monitoring untuk terus memantau kesehatan keseluruhan kluster dan tren penggunaan resource kontainer kritis. Hal ini membantu Anda mendeteksi anomali sedini mungkin.