Menganalisis kegagalan layanan kontainer menjadi sulit karena lapisan mesin kontainer tidak transparan bagi pengguna. Untuk mengatasi hal ini, Container Service for Kubernetes (ACK) memperkenalkan SysOM. SysOM meningkatkan observabilitas masalah memori kontainer dengan menyediakan data pemantauan di tingkat kernel sistem operasi. Ini memungkinkan Anda mendiagnosis masalah pada lapisan mesin kontainer secara lebih transparan dan membantu migrasi aplikasi berbasis kontainer secara efisien. Topik ini menjelaskan cara menggunakan SysOM untuk mengidentifikasi masalah memori kontainer.
Prasyarat
Sebuah ACK managed cluster telah dibuat atau sebuah ACK Serverless cluster telah dibuat setelah Oktober 2021, dengan versi Kubernetes kluster minimal 1.18.8. Untuk informasi lebih lanjut tentang pembuatan kluster, lihat Buat ACK Managed Cluster dan Buat ACK Serverless Cluster. Untuk panduan pembaruan kluster, lihat Tingkatkan ACK Kluster Secara Manual.
Managed Service for Prometheus telah diaktifkan. Untuk detailnya, lihat Aktifkan Managed Service for Prometheus.
ack-sysom-monitor telah diaktifkan. Untuk informasi lebih lanjut, lihat Aktifkan ack-sysom-monitor.
Penagihan ack-sysom-monitor
Setelah komponen ack-sysom-monitor diaktifkan, metrik pemantauan secara otomatis dikirim ke Managed Service for Prometheus sebagai metrik kustom, yang dikenai biaya.
Sebelum mengaktifkan fitur ini, kami sarankan Anda membaca Ikhtisar Penagihan untuk memahami aturan penagihan metrik kustom. Biaya dapat bervariasi tergantung pada ukuran kluster dan jumlah aplikasi. Anda dapat mengikuti langkah-langkah dalam Lihat Penggunaan Sumber Daya untuk memantau dan mengelola konsumsi sumber daya.
Skenario
Kontainerisasi telah menjadi praktik terbaik dalam arsitektur TI perusahaan karena keunggulan biaya rendah, efisiensi tinggi, fleksibilitas, dan skalabilitasnya.
Namun, kontainerisasi mengorbankan transparansi lapisan mesin kontainer, yang dapat menyebabkan penggunaan memori berlebihan atau bahkan melewati batas, sehingga memicu masalah Out of Memory (OOM).
Tim Container Service for Kubernetes (ACK), berkolaborasi dengan tim Alibaba Cloud GuestOS, telah mengimplementasikan manajemen memori presisi melalui kemampuan pemantauan kontainer di lapisan kernel sistem operasi guna mencegah masalah OOM.
Memori Kontainer
Memori kontainer terdiri dari memori aplikasi, memori kernel, dan memori bebas.
Kategori Memori | Subkategori Memori | Deskripsi |
Memori Aplikasi | Memori aplikasi terdiri dari jenis-jenis berikut:
| Memori yang ditempati oleh aplikasi yang sedang berjalan. |
Memori Kernel | Memori kernel terdiri dari jenis-jenis berikut:
| Memori yang digunakan oleh kernel OS. |
Memori Bebas | Tidak ada. | Memori yang tidak digunakan. |
Cara Kerja
Kubernetes menggunakan working sets memori untuk memantau dan mengelola penggunaan memori kontainer. Ketika memori yang digunakan oleh kontainer melebihi batas atas yang ditentukan atau node menghadapi tekanan memori, Kubernetes menentukan apakah akan mengusir atau menghentikan kontainer berdasarkan working set. Dengan memantau working set pod melalui SysOM, Anda dapat memperoleh analisis memori yang lebih komprehensif dan akurat, membantu personel O&M serta pengembang menemukan dan menyelesaikan masalah dengan cepat.
Working set memori adalah memori aktual yang digunakan oleh kontainer dalam rentang waktu tertentu, yaitu memori yang diperlukan untuk operasi saat ini. Rumus perhitungannya adalah: Working set = InactiveAnon + ActiveAnon + ActiveFile. InactiveAnon dan ActiveAnon mewakili total memori anonim aplikasi, sedangkan ActiveFile mewakili ukuran active file cache aplikasi. Dengan memantau dan menganalisis, personel O&M dapat mengelola sumber daya secara lebih efektif untuk memastikan operasi aplikasi yang stabil.
Gunakan Fitur SysOM
Dasbor tingkat kernel OS SysOM memungkinkan Anda melihat metrik sistem seperti memori, jaringan, dan penyimpanan dari pod dan node secara real-time. Untuk informasi lebih lanjut tentang metrik SysOM, lihat Pemantauan Kontainer Tingkat Kernel Berbasis SysOM.
Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel sebelah kiri, pilih .
Di halaman Prometheus Monitoring, pilih SysOM > SysOM - Pods untuk melihat data memori pod pada dasbor.
Analisis bagaimana mengidentifikasi masalah memori hilang berdasarkan rumus perhitungan.
Total memori Pod = RSS resident memory + Cache ≈ inactive_anon + active_anon + inactive_file + active_file
Working set = inactive_anon + active_anon + active_file
Di bagian Pod Memory Monitor, sesuai dengan rumus total memori pod, Anda dapat membagi memori pod menjadi cache dan memori RSS terlebih dahulu. Kemudian, bagi cache menjadi tiga jenis: active_file, inactive_file, dan shmem (shared memory), serta bagi memori RSS menjadi dua jenis: active_anon dan inactive_anon.
Seperti ditunjukkan pada gambar berikut, inactive_anon memiliki proporsi terbesar.

Di bagian Pod Resource Analysis, gunakan perintah top untuk menemukan pod yang menempati memori InactiveAnon paling banyak di kluster.
Pod arms-prom menempati memori InactiveAnon paling banyak, seperti ditunjukkan pada gambar berikut.

Di bagian Pod Memory Details, Anda dapat melihat detail penggunaan memori pod. Berdasarkan metrik memori pod yang ditampilkan pada dasbor, seperti pod cache, InactiveFile, InactiveAnon, dan Dirty Memory, Anda dapat mengidentifikasi masalah memori hilang umum di pod.

Di bagian Pod File Cache, identifikasi penyebab memori cache yang besar.
Ketika pod menempati sejumlah besar memori, working set memori pod mungkin melebihi ukuran memori yang digunakan secara aktual. Masalah memori hilang ini mempengaruhi performa aplikasi tempat pod tersebut berada.

Perbaiki masalah memori hilang.
Anda dapat menggunakan fitur penjadwalan granular yang disediakan oleh ACK untuk memperbaiki masalah memori hilang. Untuk informasi lebih lanjut, lihat Aktifkan QoS Memori.
Referensi
Untuk informasi lebih lanjut tentang metrik SysOM, lihat Pemantauan Kontainer Tingkat Kernel Berbasis SysOM.
Untuk informasi lebih lanjut tentang fitur kualitas layanan (QoS) memori kontainer, lihat Ikhtisar Fitur dan Antarmuka Kernel.