Ketika koneksi jaringan gagal di kluster ACK Anda, menemukan hop yang bermasalah biasanya memerlukan pemahaman mendalam tentang jaringan kontainer, plugin jaringan, dan routing tingkat kernel. Diagnostik Jaringan menghilangkan hambatan tersebut: cukup tentukan alamat sumber, alamat tujuan, port, dan protokol, lalu ACK secara otomatis melacak jalur paket, memeriksa setiap hop untuk kesalahan konfigurasi, serta menyoroti masalah beserta solusi yang disarankan.
Saat menjalankan diagnosis, ACK akan men-deploy program pengumpulan data di setiap node untuk mengumpulkan informasi tingkat sistem, seperti versi sistem, beban, Docker, dan Kubelet. Program ini tidak mengumpulkan informasi bisnis atau data sensitif.
Skenario yang didukung
Diagnostik Jaringan mendukung skenario berikut. Identifikasi situasi Anda, lalu ikuti panduan parameter yang sesuai di Parameter berdasarkan skenario.
Konektivitas pod-ke-pod atau pod-ke-node — diagnosa jalur jaringan langsung antar pod atau antara pod dan node.
Pod atau node ke Service — verifikasi apakah pod atau node dapat mencapai Service Kubernetes dan periksa konfigurasi jaringan Service tersebut.
Resolusi DNS — periksa apakah sebuah pod dapat mencapai Service kube-dns di namespace
kube-system.Pod atau node ke Internet — diagnosa konektivitas arah keluar dari pod atau node ke alamat IP publik.
Internet ke LoadBalancer Service — diagnosa konektivitas arah masuk ke LoadBalancer Service yang diekspos melalui instans Classic Load Balancer (CLB).
Cara kerja
Diagnostik Jaringan melacak jalur paket antara sumber dan tujuan, memeriksa setiap hop untuk kesalahan konfigurasi. Diagnosis berjalan dalam empat tahap:

Membangun topologi — fitur ini memetakan jalur jaringan menggunakan informasi dari kluster, termasuk pod, node, Service, dan kebijakan jaringan.
Mengumpulkan status runtime — mengumpulkan informasi stack jaringan dan infrastruktur dari node dan kontainer yang relevan.
Meniru rute — menjalankan perintah pada instans Elastic Compute Service (ECS) atau men-deploy pod collector untuk mengumpulkan detail stack jaringan (perangkat jaringan, sysctl, iptables, IPVS) dan informasi lapisan cloud (tabel rute, security group, gateway NAT). Fitur ini kemudian mensimulasikan alur paket yang diharapkan dan membandingkannya dengan konfigurasi aktual.
Menampilkan anomali — hop yang abnormal disorot dalam tampilan topologi, lengkap dengan deskripsi masalah dan solusi yang disarankan.
Diagnostik Jaringan dibangun di atas KubeSkoop, sebuah alat diagnostik jaringan Kubernetes open source yang mendukung berbagai plugin jaringan dan penyedia Infrastruktur sebagai Layanan (IaaS), serta menggunakan Extended Berkeley Packet Filter (eBPF) untuk memantau jalur paket tingkat kernel. Untuk pemantauan dan analisis mendalam di luar diagnosis, lihat Gunakan ACK Net Exporter untuk mengatasi masalah jaringan.
Batasan
Pod yang akan didiagnosis harus berada dalam status Running.
Untuk skenario Internet-ke-LoadBalancer, hanya instans CLB Lapisan 4 yang didukung, dan LoadBalancer Service tidak boleh memiliki lebih dari 10 pod backend.
Kluster ACK Serverless dan node virtual tidak mendukung Diagnostik Jaringan.
Jalankan diagnosis
Sebelum memulai: Anda harus memiliki kluster ACK yang dikelola.
Masuk ke ACK console. Di panel navigasi sebelah kiri, klik Clusters.
Di halaman Clusters, klik nama kluster yang ingin Anda diagnosa. Di panel navigasi sebelah kiri, pilih Inspections and Diagnostics > Diagnostics.
Di halaman Diagnosis, klik Network diagnosis. Di halaman Network diagnosis, klik Diagnosis.
Di panel Network, isi Source address, Destination address, Destination port, dan Protocol. Untuk nilai parameter, lihat Parameter berdasarkan skenario. Baca peringatan tersebut, pilih I know and agree, lalu klik Create diagnosis.

Pada halaman Diagnosis result, tinjau hasil diagnosis. Bagian Packet paths menampilkan semua hop yang telah didiagnosis, dengan hop abnormal ditandai. Untuk bantuan dalam menafsirkan hasil tersebut, lihat Hasil diagnosis umum dan solusinya.

Parameter berdasarkan skenario
Konektivitas pod-ke-pod atau pod-ke-node
| Parameter | Nilai |
|---|---|
| Source address | Alamat IP pod atau node |
| Destination address | Alamat IP pod atau node lainnya |
| Destination port | Port yang akan didiagnosis |
| Protocol | Protokol untuk diagnosis |
Pod atau node ke Service
Tentukan cluster IP suatu Service untuk memeriksa apakah pod atau node dapat mencapainya dan memverifikasi konfigurasi jaringan Service tersebut.
| Parameter | Nilai |
|---|---|
| Source address | Alamat IP pod atau node |
| Destination address | Cluster IP dari Service |
| Destination port | Port yang akan didiagnosis |
| Protocol | Protokol Diagnostik |
Resolusi DNS
Ketika tujuannya adalah nama domain, Anda juga perlu memverifikasi bahwa pod dapat mencapai Service kube-dns. Jalankan perintah berikut untuk mendapatkan cluster IP kube-dns:
kubectl get svc -n kube-system kube-dnsOutput yang diharapkan:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 172.16.XX.XX <none> 53/UDP,53/TCP,9153/TCP 6dGunakan cluster IP yang ditampilkan di kolom CLUSTER-IP sebagai alamat tujuan.
| Parameter | Nilai |
|---|---|
| Source address | Alamat IP pod atau node |
| Destination address | Cluster IP kube-dns (misalnya, 172.16.XX.XX) |
| Destination port | 53 |
| Protocol | udp |
Pod atau node ke Internet
Jika tujuannya adalah nama domain, terlebih dahulu ubah menjadi alamat IP publik.
| Parameter | Value |
|---|---|
| Source address | Alamat IP dari sebuah Pod atau node |
| Destination address | Alamat IP publik |
| Destination port | Port yang akan didiagnosis |
| Protocol | Protokol yang akan didiagnosis |
Internet ke LoadBalancer Service
Jika traffic eksternal tidak dapat mencapai LoadBalancer Service, tentukan alamat IP publik sebagai alamat sumber dan alamat IP eksternal LoadBalancer Service sebagai alamat tujuan.
| Parameter | Nilai |
|---|---|
| Source address | Alamat IP publik |
| Destination address | Alamat IP eksternal LoadBalancer Service |
| Destination port | Port yang akan didiagnosis |
| Protocol | Protokol untuk diagnosis |
Hasil diagnosis umum dan solusinya
| Hasil diagnosis | Deskripsi | Solusi |
|---|---|---|
pod container ... is not ready | Kontainer di dalam pod belum siap. | Periksa status kesehatan pod dan perbaiki pod tersebut. |
network policy ... deny the packet from ... | Kebijakan jaringan memblokir paket. | Ubah kebijakan jaringan agar mengizinkan traffic tersebut. |
no process listening on ... | Tidak ada proses yang mendengarkan pada port yang ditentukan menggunakan protokol yang ditentukan. | Pastikan proses pendengar sedang berjalan. Verifikasi port dan protokol dalam parameter diagnosis. |
no route to host .../invalid route ... for packet ... | Tidak ada rute yang tersedia, atau rute tersebut tidak mengarah ke tujuan yang diharapkan. | Periksa apakah plugin jaringan berfungsi dengan benar. |
... do not have same security group | Dua instans ECS berada di security group yang berbeda; paket mungkin dibuang. | Konfigurasikan instans ECS agar menggunakan security group yang sama. |
security group ... not allow packet ... | Security group pada instans ECS memblokir paket. | Ubah aturan grup keamanan agar mengizinkan paket dari alamat IP sumber. |
no route entry for destination ip ... / no next hop for destination ip ... | Tabel rute tidak memiliki rute ke tujuan. | Jika tujuannya adalah alamat IP publik, periksa konfigurasi Gateway NAT Internet. |
error route next hop for destination ip ... / expect next hop for destination ip ... | Rute dalam tabel rute tidak mengarah ke tujuan yang diharapkan. | Jika tujuannya adalah alamat IP publik, periksa konfigurasi Gateway NAT Internet. |
no snat entry on nat gateway ... | Tidak ditemukan entri SNAT pada Gateway NAT Internet. | Periksa konfigurasi SNAT Gateway NAT Internet. |
backend ... health status for port ..., not "normal" | Satu atau beberapa pod backend gagal dalam pemeriksaan kesehatan pada instans CLB. | Verifikasi bahwa pod backend telah dikaitkan dengan benar ke instans CLB dan aplikasi di dalam pod tersebut dalam kondisi sehat. |
cannot find listener port ... for slb ... | Port yang ditentukan tidak memiliki pendengar pada instans CLB. | Periksa konfigurasi LoadBalancer Service dan verifikasi port serta protokol dalam parameter diagnosis. |
status of loadbalancer for ... port ... not "running" | Pendengar CLB tidak dalam status Running. | Periksa apakah port pendengar berfungsi normal. |
service ... has no valid endpoint | Service tidak memiliki endpoint. | Periksa pemilih label Service, pastikan endpoint tersedia, dan konfirmasi bahwa endpoint tersebut sehat. Untuk masalah akses ke LoadBalancer Service dari dalam kluster, lihat Instans CLB tidak dapat diakses dari dalam kluster. |
Langkah selanjutnya
Gunakan ACK Net Exporter untuk mengatasi masalah jaringan — pantau dan analisis jalur paket tingkat kernel dengan eBPF untuk visibilitas jaringan yang lebih mendalam.