Google Distributed Cloud nettest mengidentifikasi masalah konektivitas pada objek Kubernetes di cluster Anda, seperti Pod, Node, Layanan, dan beberapa target eksternal. nettest tidak memeriksa koneksi dari target eksternal ke Pod, Node, atau Layanan. Dokumen ini menjelaskan cara men-deploy dan menjalankan
nettest dengan salah satu manifes, nettest.yaml atau nettest_rhel.yaml, di
repositori GitHub
anthos-samples. Gunakan nettest_rhel.yaml jika Anda menjalankan Google Distributed Cloud di Red Hat Enterprise Linux (RHEL). Gunakan nettest.yaml jika Anda menjalankan
Google Distributed Cloud di Ubuntu.
Dokumen ini juga menjelaskan cara menafsirkan log yang dihasilkan oleh nettest
untuk mengidentifikasi masalah konektivitas dengan cluster Anda.
Tentang nettest
Alat diagnostik nettest terdiri dari objek Kubernetes berikut. Setiap
objek ditentukan dalam file manifes YAML nettest.
cloudprober: DaemonSet dan Layanan yang bertanggung jawab untuk mengumpulkan status koneksi jaringan, seperti tingkat error dan latensi.echoserver: DaemonSet dan Layanan yang bertanggung jawab untuk meresponscloudprober, yang menyediakan metrik untuk konektivitas jaringan.nettest: Pod yang berisi containerprometheusdannettest.prometheusmengumpulkan metrik daricloudprober.nettestmembuat kueriprometheusdan menampilkan hasil pengujian jaringan dalam log.
nettest-engine: ConfigMap untuk mengonfigurasi containernettestdi Podnettest.
Manifes juga menentukan namespace nettest dan ServiceAccount khusus (bersama dengan ClusterRole dan ClusterRoleBinding) untuk mengisolasi nettest dari resource cluster lainnya.
Jalankan nettest
Deploy nettest dengan menjalankan perintah berikut untuk sistem operasi Anda.
Saat Pod nettest dimulai, pengujian akan berjalan secara otomatis. Tes ini memerlukan waktu sekitar lima menit untuk diselesaikan.
Untuk Ubuntu:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/main/anthos-bm-utils/abm-nettest/nettest.yaml
Untuk RHEL:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/main/anthos-bm-utils/abm-nettest/nettest_rhel.yaml
Mendapatkan hasil pengujian
Setelah pengujian selesai, yang akan memakan waktu sekitar lima menit setelah manifes
nettest di-deploy, jalankan perintah berikut untuk melihat hasil nettest:
kubectl -n nettest logs nettest -c nettest
Saat nettest berjalan, nettest akan mengirim pesan seperti berikut ke stdout:
I0413 03:33:04.879141 1 collectorui.go:130] Listening on ":8999"
I0413 03:33:04.879258 1 prometheus.go:172] Running prometheus controller
E0413 03:33:04.879628 1 prometheus.go:178] Prometheus controller: failed to
retries probers: Get "http://127.0.0.1:9090/api/v1/targets": dial tcp 127.0.0.1:9090:
connect: connection refused
Jika nettest berhasil dijalankan tanpa mengidentifikasi kegagalan konektivitas apa pun,
Anda akan melihat entri log berikut:
I0211 21:58:34.689290 1 validate_metrics.go:78] Metric validation passed!
Jika nettest menemukan masalah koneksi, nettest akan menulis entri log seperti berikut:
E0211 06:40:11.948634 1 collector.go:65] Engine error: step validateMetrics failed:
"Error rate in percentage": probe from "10.200.0.3" to "172.26.115.210:80" has value 100.000000,
threshold is 1.000000
"Error rate in percentage": probe from "10.200.0.3" to "172.26.27.229:80" has value 100.000000,
threshold is 1.000000
"Error rate in percentage": probe from "192.168.3.248" to "echoserver-hostnetwork_10.200.0.2_8080"
has value 2.007046, threshold is 1.000000
Meskipun nilai minimum default adalah satu persen (1.000000), tingkat error hingga lima persen dapat diabaikan dengan aman. Misalnya, tingkat error untuk konektivitas
dari alamat IP 192.168.3.248 ke echoserver-hostnetwork_10.200.0.2_8080 dalam
contoh sebelumnya adalah sekitar dua persen (2.007046). Ini adalah
contoh masalah konektivitas yang dilaporkan yang dapat Anda abaikan.
Menafsirkan hasil pengujian
Saat nettest selesai dan menemukan masalah konektivitas, Anda akan melihat entri berikut di log Pod nettest:
"Error rate in percentage": probe from {src} to {dst} has value 100.000000, threshold is 1.000000
Di sini, {src} dan {dst} dapat berupa:
echoserverIP Pod: koneksi ke atau dari Pod di node.- IP Node: koneksi ke atau dari node.
- IP Layanan (lihat teks berikut untuk mengetahui detailnya)
Selain itu, {dst} juga dapat berupa:
google.com: koneksi eksternal.dns: koneksi ke Layanan non-hostNetworkmelalui DNS, yaituechoserver-non-hostnetwork.nettest.svc.cluster.local.Detail untuk IP Layanan ada dalam entri probe berformat JSON di log, seperti contoh berikut. Contoh pemeriksaan berikut menunjukkan bahwa
172.26.27.229:80adalah alamat untukservice-clusterip. Ada dua probe dengan nilaitargetsini, satu untuk Pod (pod-service-clusterip) dan satu untuk Node (node-service-clusterip).probe { name: "node-service-clusterip" … targets { host_names: "172.26.27.229:80" }
Memvalidasi perbaikan
Setelah Anda mengatasi semua masalah konektivitas yang dilaporkan, cabut nettest Pod
dan terapkan kembali manifes nettest untuk menjalankan kembali pengujian konektivitas.
Misalnya, untuk menjalankan ulang nettest untuk Ubuntu, jalankan perintah berikut:
kubectl -n nettest delete pod nettest
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/main/anthos-bm-utils/abm-nettest/nettest.yaml
Kosongkan nettest
Setelah selesai menguji, jalankan perintah berikut untuk menghapus semua resource nettest:
kubectl delete namespace nettest
kubectl delete clusterroles nettest:nettest
kubectl delete clusterrolebindings nettest:nettest
Langkah berikutnya
Jika Anda memerlukan bantuan tambahan, hubungi Layanan Pelanggan Cloud. Anda juga dapat melihat bagian Mendapatkan dukungan untuk mengetahui informasi selengkapnya tentang sumber dukungan, termasuk:
- Persyaratan untuk membuka kasus dukungan.
- Alat untuk membantu Anda memecahkan masalah, seperti konfigurasi lingkungan, log, dan metrik.
- Komponen yang didukung.