🐳 Kubernetes Update: Ubah CPU/RAM Pod Tanpa Restart? Akhirnya Bisa!



Pernah ngalamin sakit kepalanya tuning resource di Kubernetes? Mau nambah RAM dikit aja, Pod-nya harus restart. Kalau itu aplikasi Java (JVM) atau Database, downtime-nya berasa banget. 😫

Palark membahas fitur yang mengubah aturan main ini: In-place Pod Resizing. Ini bedahannya:

1. ⚠️ Problem Statement (Masalah)
* The “Restart” Tax: Cara lama mengubah resources.limits atau requests mengharuskan Kubernetes mematikan container lama dan membuat yang baru.
* Cold Starts: Untuk aplikasi berat (seperti Database atau aplikasi Java Enterprise), restart berarti cache hilang, koneksi putus, dan butuh waktu lama buat “panas” lagi.
* VPA (Vertical Pod Autoscaler) Dilemma: Banyak yang takut pakai VPA di production karena VPA kerjanya merestart Pod melulu saat mengubah ukuran.

2. 🛠️ Metodologi & Solusi
Fitur In-place Resources Update (Stable di K8s 1.27+).
* Dynamic Cgroups: Kubelet sekarang bisa berkomunikasi dengan Container Runtime (seperti containerd) untuk mengubah batas cgroups (CPU/Memory) secara langsung di kernel Linux tanpa mematikan proses.
* Resize Policy: Kita bisa mendefinisikan kebijakan: apakah perubahan ini butuh restart atau tidak.
* Seamless: Aplikasi terus berjalan seolah tidak terjadi apa-apa, tapi tiba-tiba kapasitas RAM/CPU-nya bertambah.

3. 📈 Findings & Hasil
* ⚡ Zero Downtime Scaling: Kita bisa menaikkan atau menurunkan resource (vertical scaling) secara live tanpa gangguan trafik.
* 🧠 Better VPA: Vertical Pod Autoscaler menjadi tool yang sangat powerful dan aman dipakai karena tidak lagi mengganggu ketersediaan layanan.
* 💰 Cost Efficiency: Tidak perlu lagi over-provisioning (kasih RAM kegedean di awal) “jaga-jaga biar gak perlu restart”. Kita bisa mulai kecil dan membesar seiring kebutuhan.

4. 💡 Key Takeaways
* Game Changer for Stateful Sets: Database di Kubernetes adalah pemenang terbesar fitur ini.
* No More Disruptions: Ops team bisa tidur nyenyak melakukan tuning tanpa perlu menjadwalkan maintenance window.
* Modernize your Stack: Pastikan cluster K8s dan Container Runtime kamu sudah versi terbaru untuk menikmati fitur ini.

💻 How to Use / Implementation
Fitur ini sudah stable di Kubernetes versi 1.27 ke atas.
1. Cek Versi:
Pastikan Cluster Kubernetes v1.27+ dan Container Runtime mendukung (CRI-O / containerd terbaru).
2. Ubah Manifest (YAML):
Tambahkan field resizePolicy di dalam spec container:
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
– name: app-container
image: nginx
resources:
limits:
cpu: “1”
memory: “500Mi”
requests:
cpu: “500m”
memory: “200Mi”
# Ini kuncinya! 👇
resizePolicy:
– resourceName: cpu
restartPolicy: NotRequired
– resourceName: memory
restartPolicy: NotRequired
3. Apply Perubahan:
Jalankan perintah patch atau edit seperti biasa:
kubectl patch pod my-app –patch ‘{“spec”:{“containers”:[{“name”:”app-container”, “resources”:{“requests”:{“cpu”:”800m”}}}]}}’
Hasilnya: CPU naik jadi 800m, Pod TIDAK restart! 🎉

🔗 Baca Penjelasan Deep Dive-nya:
https://palark.com/blog/in-place-pod-resizing-kubernetes/

#Kubernetes #K8s #DevOps #SRE #CloudNative #Infrastructure #Docker #Container #Palark #SysAdmin

Leave a Comment