Container Service for Kubernetes (ACK) menyediakan fitur Network Diagnosis untuk membantu Anda mengatasi masalah jaringan umum, seperti kegagalan koneksi antar pod, dari kluster ke Internet publik, atau dari Internet publik ke Layanan LoadBalancer. Topik ini menjelaskan cara kerja Network Diagnosis dan penggunaannya untuk menyelesaikan masalah konektivitas umum.
Saat menggunakan fitur diagnostik, sistem menjalankan agen pengumpulan data pada node kluster untuk mengumpulkan hasil diagnostik. Informasi yang dikumpulkan mencakup versi sistem, beban, status Docker dan Kubelet, serta pesan kesalahan utama dari log sistem. Agen pengumpulan data tidak mengumpulkan informasi bisnis atau data sensitif Anda.
Prasyarat
Kluster ACK yang dikelola telah dibuat.
Diagnosis jaringan
Konsol ACK menyediakan fitur Network Diagnosis yang memungkinkan Anda mendiagnosis masalah jaringan umum secara cepat dengan memberikan alamat sumber, alamat tujuan, port tujuan, dan protokol. Fitur ini dapat digunakan tanpa memerlukan keahlian mendalam dalam arsitektur jaringan kontainer yang kompleks, plug-in jaringan internal, atau operasi tingkat kernel.
Fitur Network Diagnosis didasarkan pada proyek open-source KubeSkoop. KubeSkoop menyediakan diagnostik satu klik untuk masalah jaringan kluster Kubernetes umum di berbagai plug-in jaringan dan penyedia IaaS, serta menggunakan eBPF untuk pemantauan dan analisis mendalam terhadap jalur kernel kritis. Topik ini hanya mencakup fitur Network Diagnosis. Untuk detail tentang pemantauan dan analisis mendalam, lihat Gunakan KubeSkoop untuk Troubleshooting Masalah Jaringan.
Cara kerja

-
Konstruksi topologi: Setelah Anda memberikan informasi diagnostik, Network Diagnosis membangun topologi akses untuk diagnosis berdasarkan detail yang diberikan dan informasi sumber daya yang dikumpulkan dari kluster, seperti pod, node, Services, dan NetworkPolicies.
-
Pengumpulan informasi: Network Diagnosis mengumpulkan informasi waktu proses, data stack jaringan, dan detail infrastruktur jaringan. Data ini digunakan untuk troubleshooting dan analisis jaringan.
-
Simulasi jalur: Network Diagnosis mengumpulkan informasi stack jaringan dari node atau kontainer yang relevan dengan menjalankan perintah pada Instance Elastic Compute Service (ECS) atau dengan men-deploy pod collector di dalam kluster. Informasi ini mencakup detail perangkat jaringan, parameter sysctl, iptables, dan IPVS. Alat ini juga mengumpulkan informasi infrastruktur cloud, seperti tabel rute, security group, dan gerbang NAT. Sistem kemudian membandingkan informasi yang dikumpulkan dengan konfigurasi yang diharapkan untuk mengidentifikasi salah konfigurasi. Proses ini mencakup simulasi aturan iptables dan routing, pemeriksaan status perangkat, serta validasi tabel rute cloud dan aturan security group.
-
Hasil Diagnostik: Setelah membandingkan konfigurasi aktual dengan kondisi yang diharapkan, alat ini menghasilkan topologi jaringan dan menyoroti node serta masalah yang tidak normal.
Menggunakan Diagnosis Jaringan
Batasan
-
Pod yang akan didiagnosis harus berada dalam status Running.
-
Koneksi dari Internet publik ke Layanan LoadBalancer hanya didukung untuk instans Classic Load Balancer (CLB) Lapisan 4 dengan 10 pod backend atau kurang.
-
Diagnosis saat ini tidak didukung untuk kluster ACK Serverless atau node virtual.
Prosedur
-
Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, klik Clusters.
-
Pada halaman Clusters, klik nama kluster target Anda. Di panel navigasi sebelah kiri, pilih .
-
Pada halaman Diagnostics, klik tab Network diagnostics, lalu klik Diagnose di sudut kiri atas.
-
Pada panel Access Information, masukkan Source IP Address, Target Address, dan Port, lalu pilih Protocol. Baca pemberitahuan, centang I understand and agree, lalu klik Diagnose.
Untuk informasi tentang parameter diagnosis, lihat Parameter diagnosis.
-
Pada halaman Diagnosis Result, Anda dapat melihat hasilnya. Bagian Full access path menampilkan tampilan end-to-end dari jalur koneksi yang didiagnosis.
Node yang tidak normal disorot dengan warna berbeda. Untuk informasi tentang hasil diagnostik umum, lihat Hasil dan solusi diagnostik umum.
Hasil diagnosis ditampilkan dalam tabel dengan tiga kolom: Level (misalnya FATAL), Node, dan Diagnosis result. Hal ini membantu Anda dengan cepat menemukan node yang tidak normal dan kesalahan routing spesifik. Jika hasil tersebut tidak menyelesaikan masalah Anda, klik tautan Submit Ticket atau Feedback pada halaman tersebut untuk bantuan lebih lanjut.
Parameter diagnosis
Skenario 1: Pod-ke-pod dan pod-ke-node
Jika Anda mengalami masalah konektivitas antar pod atau antara pod dan node, Anda dapat menggunakan Network Diagnosis untuk melakukan troubleshooting koneksi tersebut. Tabel berikut menjelaskan parameter-parameter tersebut.
|
Parameter |
Deskripsi |
|
Source address |
Alamat IP pod atau node. |
|
Target address |
Alamat IP pod atau node. |
|
Port |
Port yang akan didiagnosis. |
|
Protocol |
Protokol untuk diagnosis. |
Skenario 2: Pod dan node ke Service
Anda dapat mendiagnosis konektivitas ke Service dengan menggunakan IP kluster-nya sebagai tujuan. Alat ini memeriksa jalur jaringan dari pod atau node ke setiap titik akhir Service dan memverifikasi konfigurasi jaringan terkait. Tabel berikut menjelaskan parameter-parameter tersebut.
|
Parameter |
Deskripsi |
|
Source address |
Alamat IP pod atau node. |
|
Target address |
IP kluster dari Service tersebut. |
|
Port |
Port yang akan didiagnosis. |
|
Protocol |
Protokol untuk diagnosis. |
Skenario 3: Jalur DNS
Saat tujuannya adalah nama domain, Anda mungkin perlu memeriksa apakah DNS dalam kluster berfungsi dengan benar, selain memeriksa jalur dari sumber ke alamat IP tujuan. Gunakan Network Diagnosis untuk memeriksa konektivitas dari pod ke layanan DNS kluster (layanan kube-dns di namespace kube-system) guna mengidentifikasi potensi masalah resolusi DNS.
Jalankan perintah berikut untuk mendapatkan IP kluster layanan kube-dns di namespace kube-system:
kubectl get svc -n kube-system kube-dns
Contoh output:
NAME TYPE CLUSTER-IP EXTERNAL-IP <none> 53/UDP,53/TCP,9153/TCP 6d
Dalam output tersebut, 172.16.XX.XX adalah IP kluster layanan kube-dns. Gunakan IP ini sebagai alamat tujuan. Tabel berikut menjelaskan parameter-parameter tersebut.
|
Parameter |
Deskripsi |
|
Source address |
Alamat IP pod atau node. |
|
Target address |
IP kluster layanan kube-dns. |
|
Port |
53 |
|
Protocol |
udp |
Skenario 4: Pod dan node ke internet
Anda dapat menggunakan Network Diagnosis untuk memeriksa koneksi dari pod atau node ke alamat IP publik. Jika tujuannya adalah nama domain, Anda harus terlebih dahulu menyelesaikannya secara manual ke alamat IP publiknya. Tabel berikut menjelaskan parameter-parameter tersebut.
|
Parameter |
Deskripsi |
|
Source address |
Alamat IP pod atau node. |
|
Target address |
Alamat IP publik. |
|
Port |
Port yang akan didiagnosis. |
|
Protocol |
Protokol untuk diagnosis. |
Skenario 5: Internet ke Layanan LoadBalancer
Jika Anda tidak dapat mengakses Layanan LoadBalancer dari Internet publik, Anda dapat mendiagnosis koneksi tersebut dengan menggunakan IP publik sebagai sumber dan IP eksternal Layanan LoadBalancer sebagai tujuan. Tabel berikut menjelaskan parameter-parameter tersebut.
|
Parameter |
Deskripsi |
|
Source address |
Alamat IP publik. |
|
Target address |
Alamat IP eksternal Layanan LoadBalancer. |
|
Port |
Port yang akan didiagnosis. |
|
Protocol |
Protokol untuk diagnosis. |
Hasil dan solusi diagnostik umum
|
Hasil diagnostik |
Deskripsi |
Solusi |
|
pod container ... is not ready |
Kontainer dalam pod belum siap. |
Periksa status kesehatan pod dan perbaiki masalah tersebut. |
|
NetworkPolicy ... deny the packet from ... |
NetworkPolicy memblokir paket tersebut. |
Ubah aturan NetworkPolicy yang sesuai. |
|
no process listening on ... |
Tidak ada proses pada kontainer atau node yang mendengarkan pada port yang ditentukan dengan protokol yang ditentukan. |
Verifikasi bahwa proses target berjalan dengan benar. Periksa parameter diagnosis, termasuk port dan protokol. |
|
no route to host .../invalid route ... for packet ... |
Rute ke host tidak ditemukan, atau rute yang ada mengarah ke tujuan yang salah. |
Periksa apakah plug-in jaringan berfungsi dengan benar. |
|
... do not have same security group |
Security group kedua instans ECS tidak memiliki aturan yang mengizinkan trafik di antara keduanya, yang dapat menyebabkan kehilangan paket. |
Konfigurasikan instans ECS agar menggunakan security group yang sama. |
|
security group ... not allow packet ... |
Security group pada instans ECS memblokir paket tersebut. |
Periksa aturan security group dan izinkan trafik dari alamat yang diperlukan. |
|
Tabel rute cloud tidak berisi rute ke alamat IP tujuan. |
Periksa konfigurasi tabel rute cloud. Jika tujuannya adalah alamat IP publik, periksa konfigurasi gerbang NAT publik. |
|
Rute dalam tabel rute cloud tidak mengarah ke lompatan berikutnya yang diharapkan. |
Periksa konfigurasi tabel rute cloud. Jika tujuannya adalah alamat IP publik, periksa konfigurasi gerbang NAT publik. |
|
no snat entry on nat gateway ... |
Entri SNAT yang ditentukan tidak ditemukan pada gerbang NAT publik. |
Periksa konfigurasi aturan SNAT di gerbang NAT publik. |
|
backend ... health status for port ..., not "normal" |
Server backend instans CLB gagal dalam pemeriksaan kesehatan. |
Verifikasi bahwa titik akhir yang benar telah disambungkan ke instans CLB dan layanan backend pada titik akhir tersebut dalam kondisi sehat. |
|
cannot find listener port ... for slb ... |
Port pendengar yang ditentukan tidak ditemukan pada instans CLB. |
Periksa konfigurasi Layanan LoadBalancer dan verifikasi bahwa parameter diagnosis, termasuk port dan protokol, sudah benar. |
|
status of loadbalancer for ... port ... not "running" |
Pendengar pada instans CLB tidak dalam status Running. |
Periksa status pendengar pada instans CLB. |
|
Service ... has no valid endpoint |
Service tidak memiliki titik akhir yang valid. |
Periksa apakah pemilih label Service dikonfigurasi sesuai harapan dan verifikasi bahwa titik akhir yang sesuai ada dan dalam kondisi sehat. Untuk masalah terkait akses ke IP Layanan LoadBalancer dari dalam kluster, lihat Akses ke instans CLB dari dalam kluster gagal. |