Memahami dan Mengonfigurasi Pengumpulan Sampah Kubernetes

  • Post author:
  • Post category:Tutorial

Garbage collection adalah proses dimana Kubernetes menghapus objek dependen setelah Anda menghapus resource. Ini juga menangani pembersihan otomatis item yang berlebihan di cluster Anda. Wadah yang sudah jadi dan gambar yang tidak digunakan secara berkala dihapus untuk mencegah sejumlah besar sumber daya yang tidak perlu terakumulasi dari waktu ke waktu.

Beberapa strategi pengumpulan sampah dapat diterapkan tergantung pada jenis objek yang sedang dihapus. Pengumpulan sampah dari sumber daya yang tidak digunakan dapat dikonfigurasi dengan pengaturan Kubelet pada node pekerja cluster Anda. Dalam artikel ini, kami akan menjelaskan berbagai bentuk pengumpulan sampah dan bagaimana Anda dapat menyesuaikan pengaturan pembersihan.

Basic Garbage Collection

Pengumpulan sampah Kubernetes menangani penghapusan objek dependen, wadah lama, dan gambar yang tidak digunakan. Kubelet menjalankan operasi pembersihan secara berkala saat layanannya aktif. Ini akan menghapus wadah yang dihentikan, seperti yang berasal dari Pekerjaan yang sudah selesai, dan menghapus gambar yang tidak digunakan setelah ambang penggunaan disk tertentu tercapai.

Pengumpulan sampah sumber daya cluster sebagai respons terhadap penghapusan objek menggunakan mekanisme bertingkat. Ini memastikan anak-anak objek dihapus di sampingnya, mencegah anak yatim dari yang ada. Anda dapat mengontrol proses ini dengan meminta urutan kaskade tertentu saat Anda memulai deletion.

Owner References

Hubungan induk-anak diekspresikan oleh referensi pemilik Kubernetes. Pemilik bertanggung jawab atas objek yang bersarang di dalamnya. Ini membuat grafik ketergantungan yang menginformasikan proses pengumpulan sampah.

Kubernetes menggunakan data referensi pemilik untuk menetapkan sumber daya mana yang harus dihapus sebelum target dihapus. Sebagai contoh, Pod yang merupakan bagian dari ReplicaSet akan memiliki referensi pemilik yang mendefinisikan link ini. Menghapus ReplicaSet akan otomatis menghapus Pod di dalamnya juga. Referensi

Owner diatur pada objek di bidang manifes metadata.ownerReference mereka. Anda biasanya tidak perlu memeriksa atau mengubah kolom ini secara manual karena referensi pemilik secara otomatis dikelola oleh controllers Kubernetes.

Children dapat memblokir penghapusan induknya dengan menyetel kolom metadata.blockOwnerDeletion ke nilai boolean true. Ini akan mencegah orang tua dalam rantai referensi pemilik objek dihapus hingga objek itu sendiri telah dihapus.

Mekanisme Penghapusan Berjenjang

Rantai referensi pemilik berarti ada dua cara di mana penghapusan objek dapat dilanjutkan:

Penghapusan latar belakang: Objek target dihapus terlebih dahulu, lalu tanggungannya .Penghapusan latar depan: Tanggungan dihapus terlebih dahulu, lalu objek target.

Pertimbangkan perintah penghapusan seperti berikut:

$ kubectl delete deployment/demo-app

Metode penghapusan latar belakang akan segera menghapus objek Deployment aplikasi-demo. Ini akan membuat Pod-nya tetap berjalan di cluster Anda. Mereka akan dibersihkan secara otomatis di latar belakang sebagai bagian dari proses pengumpulan sampah.

Penghapusan latar depan dimulai dengan menandai Deployment aplikasi-demo sebagai “penghapusan sedang berlangsung”. Itu kemudian menghapus semua objek dependen yang ada di dalamnya. Deployment aplikasi demo akan tetap terlihat di cluster Anda sampai Pod-nya dihapus. Deployment akan dibersihkan setelah tanggungan hilang. Cascading

Background adalah mekanisme default. Ini menawarkan hasil langsung yang menghapus objek target dari cluster Anda tanpa penundaan. Penghapusan latar depan bisa lebih diinginkan dalam beberapa skenario, seperti ketika Anda ingin Deployment atau ReplicaSet dihapus hanya setelah Pod-nya dihancurkan. Ini menghindari periode singkat di mana Pod secara efektif menjadi yatim piatu, dengan pemiliknya ReplicaSet sudah hilang.

Anda dapat memilih untuk menghapus latar depan dengan meneruskan flag –cascade=foreground ke perintah kubectl delete:

$ kubectl delete deployment/demo- app –cascade=foreground

Pod akan dihapus, kemudian penerapan demo-app.

Menonaktifkan Pengumpulan Sampah Tanggungan

Ada opsi kaskade ketiga: abaikan pengumpulan sampah dependen sama sekali. Ini akan menghilangkan semua tanggungan objek, meninggalkannya di cluster Anda tetapi dengan referensi pemiliknya dihapus.

$ kubectl delete deployment/demo-app –cascade=orphan

Perintah ini segera menghapus Deployment aplikasi-demo tetapi membiarkan Pod-nya tetap utuh. Mereka akan terus berjalan di cluster Anda hingga dihapus secara terpisah, sebagai bagian dari perintah lain. Meskipun perilaku ini jarang diinginkan, akan sangat membantu jika Anda memutuskan Pod tidak perlu lagi berada di Deployment atau ReplicaSet.

Garbage Collection dan Finalizers

Finalizers juga memengaruhi cara kerja pengumpulan sampah. Mereka mencegah penghapusan terjadi sampai kondisi tertentu terpenuhi.

Banyak penghapusan yang tampaknya “macet” disebabkan oleh finalizer yang tertunda. Finalizer yang tidak ditandai sebagai selesai akan mencegah objek dihapus dari cluster Anda. Setelah finalizer dibersihkan, control plane Kubernetes akan melanjutkan penghapusan.

Beberapa finalizer disertakan dengan Kubernetes, seperti perlindungan pv-protection terhadap penghapusan volume yang digunakan secara aktif. Lainnya mungkin ditambahkan oleh pengontrol pihak ketiga yang Anda tambahkan ke cluster Anda. Mengganti finalizer tidak disarankan karena dapat membuat status salah yang mengarah ke perilaku yang tidak terduga.

Menyesuaikan Kumpulan Sampah dari Sumber Daya yang Tidak Digunakan

Pengumpulan sampah dari wadah dan gambar yang berlebihan terjadi secara otomatis di node pekerja Anda. Lima parameter tersedia untuk menyesuaikan ambang penghapusan:

maximum-dead-containers – Jumlah maksimum container lama yang dapat terus ada setelah pengumpulan sampah dijalankan. Default dari -1 menghilangkan limit.maximum-dead-containers-per-container – Mengatur jumlah maksimum container lama yang dipertahankan pada basis per-container. Ini mengontrol berapa banyak versi penampung sebelumnya yang tetap berada di kluster, setelah penggantian baru dimulai.minimum-container-ttl-duration – Container menjadi memenuhi syarat untuk pengumpulan sampah beberapa menit setelah dihentikan. Nilai default 0 menonaktifkan delay.image-gc-high-threshold – Ketika penggunaan disk mencapai persentase ini Kubelet akan mencoba untuk memisahkan gambar yang tidak digunakan…image-gc-low-threshold – …untuk menurunkan penggunaan ke level ini.

Ini parameter ditetapkan sebagai tanda peluncuran Kubelet. Bendera biasanya ditempatkan di /var/lib/kubelet/kubeadm-flags.env:

KUBELET_KUBEADM_ARGS=”–image-gc-high-threshold=60 –image-gc-low-threshold=50 –minimum-container-ttl -duration=5″

Konfigurasi ini akan mengizinkan penghapusan otomatis kontainer yang telah redundan setidaknya selama lima menit. Setiap pass pengumpulan sampah juga akan mencoba untuk memangkas gambar lama setelah 60% pemanfaatan disk tercapai, yang bertujuan untuk mengurangi konsumsi hingga 50%.

Anda harus memulai ulang proses Kubelet setelah Anda melakukan perubahan ini:

$ sudo systemctl daemon-reload $ sudo systemctl restart kubelet

Karena pengaturan adalah bagian dari Kubelet, Anda harus menerapkannya ke setiap node pekerja di cluster Anda jika Anda ingin konfigurasi konsisten di semuanya.

Summary

Memahami berbagai bentuk pengumpulan sampah Kubernetes membantu Anda memutuskan yang benar strategi saat menghapus objek dari cluster Anda. Kaskade latar belakang dan latar depan memengaruhi urutan pembersihan sumber daya yang bergantung. Hubungan antar objek diidentifikasi oleh rantai referensi pemiliknya. Kubernetes juga membersihkan wadah dan gambar yang tidak digunakan di latar belakang. Ambang batas untuk perilaku ini dapat disesuaikan menggunakan pengaturan Kubelet.

Untuk hasil terbaik, Anda harus tetap berpegang pada mekanisme yang disediakan Kubernetes. Proyek ini memperingatkan agar tidak menggunakan alat pengumpulan sampah pihak ketiga karena ini dapat membuat inkonsistensi status yang menyebabkan masalah di cluster.

Anda

Itulah berita seputar Memahami dan Mengonfigurasi Pengumpulan Sampah Kubernetes, semoga bermanfaat. Disadur dari HowToGeek.com.