Belajar Calico - Performance & Troubleshooting
Episode 19 of 23

Belajar Calico - Performance & Troubleshooting

Episode ini membahas troubleshooting Calico: diagnosa dengan calicoctl, log Felix dan typha, kasus umum seperti pod tidak bisa komunikasi, policy menolak traffic, BGP tidak up, masalah IPAM, dan upgrade versi.

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

Pendahuluan

Semua episode sebelumnya membangun kemampuan, tapi di dunia nyata yang paling sering kalian butuhkan adalah kemampuan memperbaiki. Episode 19 adalah gudang teknik troubleshooting Calico: dari membaca log sampai menyelesaikan kasus yang paling umum ditemui di lapangan.

Pendekatan kita berurutan dan metodis: kumpulkan informasi, persempit lapisan masalah (API, BGP, dataplane, IPAM), lalu terapkan perbaikan. Kebanyakan insiden Calico sebenarnya sederhana — masalahnya adalah kita tidak tahu cara melihat gejalanya dengan benar.

Alat Diagnosa Inti

calicoctl untuk Inspeksi

Kumpulan perintah pertama yang selalu dipakai saat insiden:

Alat diagnosa dasar
calicoctl node status
calicoctl get nodes
calicoctl get ippool -o wide
calicoctl get workloadendpoints -A -o wide
calicoctl get networkpolicy -A -o wide

calicoctl get workloadendpoints -A -o wide menampilkan endpoint pod. Kalau pod tidak muncul di sini, Calico belum melihat pod tersebut — masalahnya di kubelet/CNI, bukan policy.

Log Felix dan Typha

Saat status aman tapi traffic bermasalah, periksa log Felix:

Log Felix dan Typha
kubectl logs -n calico-system ds/calico-node | grep -iE "error|warn|felix" | tail -50
kubectl logs -n calico-system deploy/typha --tail=50

Grep "error|warn|felix" di log calico-node adalah jalan tercepat menemukan pesan dataplane. Typha yang banyak error menandakan masalah komunikasi API server.

Menyelidiki Policy yang Diterapkan

Untuk kasus "policy menolak traffic", cek apa yang melekat pada pod:

Cek policy pada pod
kubectl get pods -o wide
kubectl describe networkpolicy -n <namespace>
calicoctl get workloadendpoints -n <namespace> -o wide

kubectl describe networkpolicy menunjukkan rule yang cocok dengan selector pod tertentu.

Kasus Umum dan Solusinya

Pod Tidak Bisa Saling Komunikasi

Urutan pemeriksaan: pastikan kedua pod tampil di workloadendpoints, pastikan ada route di node tujuan, dan pastikan tidak ada policy yang menolak. Tes koneksi langsung lalu bandingkan dengan policy:

Tes koneksi dan cek route
kubectl exec <client> -- ping -c 3 <ip-target>
kubectl exec -n calico-system ds/calico-node -- ip route | grep <cidr-target>

Jika ping gagal tapi route ada, tersangka berikutnya adalah policy. Jika route tidak ada, masalahnya di BGP atau IPAM.

Policy Menolak Traffic yang Seharusnya Lolos

Kemungkinan besar penyebabnya: selector salah, policy deny di tier lebih atas, atau rule FQDN/DNS yang belum diizinkan. Periksa urutan tiers dan aksi yang diambil:

Cek urutan tiers dan aksi
calicoctl get tiers
calicoctl get globalnetworkpolicy -o wide
kubectl logs -n calico-system ds/calico-node | grep -iE "deny|drop" | tail -20

Baris "deny|drop" di log Felix menunjukkan aksi dataplane terhadap paket yang ditolak.

BGP Tidak Up

BGP yang tidak Established biasanya karena salah IP peer, AS number tidak cocok, atau port 179 diblokir. Verifikasi:

Diagnosa BGP
calicoctl node status | grep -A3 BGP
calicoctl get bgppeer -o wide
kubectl exec -n calico-system ds/calico-node -- \
  sh -c "ss -tn | grep 179"

ss -tn | grep 179 memastikan koneksi TCP ke port BGP berjalan. Jika tidak ada, cek firewall di antara node.

Masalah IPAM

IP habis atau salah pool biasanya terlihat dari pod yang stuck di ContainerCreating dengan event kubelet. Periksa:

Diagnosa IPAM
kubectl describe pod <pod> | grep -i -E "failed|ipam"
calicoctl ipam show --show-blocks
calicoctl ipam release --show-ip 192.168.0.10

calicoctl ipam show --show-blocks menunjukkan sisa alamat per blok; kalau blok penuh, Calico akan minta blok baru dari IPPool.

Upgrade Versi dengan Aman

Prinsip Upgrade

Upgrade Calico dilakukan lewat operator: perbarui versi operator, lalu operator mengupgrade komponen. Ikuti langkah resmi dan cek release notes untuk versi yang dilompati:

Upgrade via Helm
helm repo update
helm upgrade calico projectcalico/tigera-operator --version v3.32.1
kubectl get tigerastatus

helm upgrade ... --version v3.32.1 mengganti image operator, dan kubectl get tigerastatus memantau progres upgrade komponen.

Rollback

Jika upgrade bermasalah, kembali ke versi sebelumnya dengan cara yang sama, lalu periksa datastore tetap kompatibel. Selalu backup resource Calico sebelum upgrade:

Backup resource Calico
calicoctl get --export -o yaml > calico-backup.yaml
kubectl get crd | grep projectcalico.org | wc -l

Penutup

Episode 19 melengkapi kalian dengan naluri troubleshooting: membaca status dengan calicoctl, menyelidiki log Felix dan typha, dan menyelesaikan kasus umum mulai dari konektivitas pod hingga upgrade versi.

Inti yang harus dibawa pulang:

  • Diagnosa berurutan: status, endpoint, route, baru policy.
  • Pod yang tidak muncul di workloadendpoints berarti masalah kubelet/CNI.
  • Log Felix memuat aksi deny/drop untuk kasus policy.
  • BGP tidak up: cek IP peer, AS number, dan port 179.
  • IPAM: ipam show --show-blocks untuk melihat alokasi dan sisa alamat.
  • Upgrade via operator; backup resource sebelum setiap upgrade.

Di episode 20 selanjutnya kita membahas fitur stabil terbaru — penyempurnaan Calico v3.31 dan v3.32, termasuk ClusterNetworkPolicy, peningkatan observability, migrasi dari Flannel, dan dukungan VM baru.

Belajar Calico - Performance & Troubleshooting | Belajar Calico