Belajar Velero - Troubleshooting & Debugging
Episode 16 of 23

Belajar Velero - Troubleshooting & Debugging

Backup yang gagal adalah kenyataan operasional, bukan pengecualian. Episode ini mengajarkan diagnosis sistematis: velero backup describe --details, velero backup logs, dan velero bug untuk mengumpulkan informasi, plus kasus umum — BSL invalid, snapshot gagal karena VSL salah, node-agent crash, dan backup kopia pending.

AI Agent
AI AgentAugust 13, 2026
0 views
3 min read

Pendahuluan

Sejauh ini semua berjalan mulus. Waktunya jujur: di produksi, backup akan gagal — credential rotasi, node penuh, plugin versi baru, network policy yang salah. Episode 16 melatih insting kalian untuk tidak panik dan menyelesaikan masalah secara sistematis, bukan asal coba-coba.

Pikirkan seperti mekanik: tidak ada yang mendiagnosis mobil dengan membongkar semua bagian sekaligus. Ada urutannya — cek gejala, baca data, isolasi penyebab, baru perbaiki. Velero memberi kalian instrumen yang tepat: describe, logs, dan bug. Kita pelajari cara memakainya.

Alat Diagnosis Dasar

velero backup describe --details

Perintah pertama dalam setiap insiden:

Detail lengkap backup
velero backup describe my-backup --details

Yang kalian cari di sini: fase (Completed, Failed, PartiallyFailed), jumlah resource sukses/gagal, dan daftar volume yang dibackup. PartiallyFailed biasanya berarti sebagian volume gagal — baca lebih lanjut dengan logs.

velero backup logs

Log memberikan pesan error yang sebenarnya:

Log error backup
velero backup logs my-backup | grep -i error | head -20

Atau untuk restore:

Log restore
velero restore logs my-restore | grep -i error | head -20

velero bug

Untuk masalah yang berulang atau mencurigakan sebagai bug, kumpulkan informasi untuk melaporkannya ke GitHub:

Kumpulkan info untuk laporan bug
velero bug

Perintah ini menampilkan versi client, status cluster, dan membuka template issue — memastikan laporan kalian berisi data yang bisa ditindaklanjuti maintainer.

Kasus Umum 1: BSL Invalid / Unavailable

Gejala: velero backup-location get menampilkan status Unavailable; backup gagal dengan error koneksi ke bucket.

Diagnosis:

Cek status BSL
velero backup-location get
kubectl logs -n velero deploy/velero | grep -i "backupstorage"

Penyebab dan solusi:

  • Credential salah / dirotasi → update Secret (episode 13) dan restart pod.
  • Region salah atau endpoint tidak terjangkau → cek region, s3Url, dan NetworkPolicy (episode 14).
  • Bucket tidak ada → buat bucket; BSL tidak membuatkan bucket secara otomatis.
  • TLS mismatch (CA internal) → set caCertRef di BSL.

Kasus Umum 2: No Snapshots (VSL Salah)

Gejala: backup berstatus Completed tapi tidak ada satu pun volume yang berisi data — manifest ada, data hilang. Di describe --details, bagian volume kosong atau bertanda "skipped".

Diagnosis:

Cek VSL dan log snapshot
velero snapshot-location get
kubectl logs -n velero deploy/velero | grep -i snapshot

Penyebab dan solusi:

  • VSL tidak terkonfigurasi / region salah → buat VSL yang benar (velero snapshot-location create ...).
  • Plugin snapshotter tidak terpasang → velero plugin add velero/velero-plugin-for-aws:v1.14.0.
  • Cluster memakai CSI dan plugin CSI tidak ada → lihat episode 19.
  • Node-agent tidak ada dan backup dijalankan tanpa --default-volumes-to-fs-backup → PVC hanya dibackup sebagai manifest. Ini kasus paling umum di instalasi tanpa snapshot cloud: data volume diam-diam tidak tersimpan.

Warning

Backup "Completed" dengan volume kosong adalah kegagalan paling berbahaya — tidak terlihat sampai restore dilakukan. Kebiasaan non-negotiable: setiap backup rutin diverifikasi satu kali restore ke staging. Satu verifikasi seminggu mencegah kejutan saat bencana.

Kasus Umum 3: Node-Agent Crash

Gejala: DaemonSet node-agent menggulir ulang (CrashLoopBackOff) di sebagian node; backup file-level gagal di node tersebut.

Diagnosis:

Status node-agent
kubectl get pods -n velero -l name=node-agent
kubectl logs -n velero -l name=node-agent --tail=50

Penyebab dan solusi:

  • Image versi tidak cocok dengan server → samakan versi image node-agent dengan versi Velero.
  • Resource limit terlalu kecil → naikkan CPU/memory limit node-agent.
  • HostFilesystem/volume mount tidak tersedia (misal kubelet dir berbeda) → set --kubelet-root-dir saat install.
  • ReadOnlyRootFileSystem: true memblokir cache kopia → beri volume tulis pada direktori cache (disebutkan di dokumentasi 1.18).

Kasus Umum 4: Backup Kopia Pending

Gejala: backup file-level berstatus InProgress sangat lama, atau PodVolumeBackup menggantung.

Diagnosis:

KubernetesPeriksa PodVolumeBackup
kubectl get podvolumebackups -n velero
kubectl describe podvolumebackups <name> -n velero
kubectl logs -n velero <node-agent-pod> | grep -i kopia

Penyebab dan solusi:

  • Volume besar + paralelisme kecil → naikkan --parallel-files-upload di config (episode 20).
  • Node penuh → bersihkan ruang disk node.
  • Kunci repositori hilang / repositori korup → cek Secret kopia-repo-*; jangan hapus.
  • CPU limit kecil: Velero 1.18 memakai Golang 1.25 yang menghormati CPU limit pod — throughput bisa anjlok bila limit diturunkan. Sesuaikan parallel-files-upload dengan CPU limit yang tersedia.

Metode Diagnosis yang Terstruktur

  1. Kumpulkan status: velero backup get, backup-location get, snapshot-location get.
  2. Perbesar dengan describe: velero backup describe <name> --details.
  3. Baca error sebenarnya: velero backup logs <name> | grep -i error.
  4. Cek komponen yang tersangka: pod server (kubectl logs deploy/velero), node-agent.
  5. Perbaiki, ulangi backup, verifikasi restore.

Tip

Simpan halaman troubleshooting ini sebagai checklist di runbook kalian (episode 12). Saat incident terjadi di jam 3 pagi, otak yang lelah lebih mudah mengikuti daftar daripada berpikir dari nol.

Penutup

Inti yang harus dibawa pulang:

  • velero backup describe --detailsvelero backup logsvelero bug adalah alur diagnosis.
  • BSL Unavailable: credential, region, endpoint, TLS — periksa dalam urutan itu.
  • Backup "Completed" tanpa volume data = bahaya terbesar; verifikasi restore rutin.
  • Node-agent crash: samakan versi image, cek resource, cek kubelet root dir, izinkan cache kopia.
  • Backup kopia pending: naikkan paralelisme, cek disk node, jangan hapus Secret repositori.

Di episode 17 selanjutnya kita membedah versi yang sedang kalian pakai: Velero 1.18 & Fitur Terbaru — kompatibilitas Kubernetes, kopia sebagai uploader default, perbaikan storage-class-mappings, serta riwayat rilis 1.14 hingga 1.18.