nettest
Google Distributed Cloud mengidentifikasi masalah konektivitas di
Objek Kubernetes di cluster Anda, seperti Pod, Node, Service, dan beberapa
target eksternal. nettest
tidak memeriksa koneksi dari target eksternal ke
Pod, Node, atau Service. Dokumen ini menjelaskan cara men-deploy dan menjalankan
nettest
dengan salah satu manifes, nettest.yaml
atau nettest_rhel.yaml
, di
tindakan
sampel-anthos
repositori GitHub ASL. Gunakan nettest_rhel.yaml
jika Anda menjalankan Google Distributed Cloud di
Red HatEnterprise Linux (RHEL). Gunakan nettest.yaml
jika Anda menjalankan
Google Distributed Cloud di Ubuntu.
Dokumen ini juga menjelaskan cara Anda menafsirkan log yang dibuat oleh nettest
untuk mengidentifikasi masalah konektivitas dengan cluster Anda.
Tentang nettest
Alat diagnostik nettest
terdiri dari objek Kubernetes berikut. Masing-masing
ditentukan dalam file manifes YAML nettest
.
cloudprober
: DaemonSet dan Service yang bertanggung jawab untuk mengumpulkan jaringan status koneksi, seperti tingkat error dan latensi.echoserver
: DaemonSet dan Service yang bertanggung jawab untuk meresponscloudprober
, yang menyediakan metrik untuk konektivitas jaringan.nettest
: Pod yang berisi containerprometheus
dannettest
.prometheus
mengumpulkan metrik daricloudprober
.nettest
mengkueriprometheus
dan menampilkan hasil pengujian jaringan dalam log.
nettest-engine
: ConfigMap untuk mengonfigurasi containernettest
di Podnettest
.
Manifes juga menentukan namespace nettest
dan atribut
ServiceAccount (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. Pengujian ini memerlukan waktu sekitar
lima menit untuk
menyelesaikan pesanan.
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 tes selesai, yang akan memakan waktu sekitar lima menit setelah
Manifes nettest
sudah di-deploy, jalankan perintah berikut untuk melihat nettest
hasil:
kubectl -n nettest logs nettest -c nettest
Saat nettest
berjalan, aplikasi ini akan mengirimkan 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 berjalan tanpa mengidentifikasi kegagalan konektivitas,
Anda akan melihat entri log berikut:
I0211 21:58:34.689290 1 validate_metrics.go:78] Metric validation passed!
Jika nettest
menemukan masalah koneksi, kode ini 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 batas defaultnya 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
inci
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 hal berikut
entri dalam 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:
echoserver
IP Pod: koneksi ke atau dari Pod di node.- IP Node: koneksi ke atau dari node.
- IP Layanan (lihat teks berikut untuk detailnya)
Selain itu, {dst}
juga dapat:
google.com
: koneksi eksternal.dns
: koneksi ke Layanan non-hostNetwork
melalui DNS, yaituechoserver-non-hostnetwork.nettest.svc.cluster.local
.Detail untuk IP Layanan ada dalam entri pencarian berformat JSON di log ini, seperti contoh berikut. Contoh {i>probe<i} berikut menunjukkan bahwa
172.26.27.229:80
adalah alamat untukservice-clusterip
. Ada dua pemeriksaan dengan nilaitargets
ini, 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 mengatasi semua masalah konektivitas yang dilaporkan, hapus Pod nettest
dan terapkan ulang manifes nettest
untuk menjalankan kembali pengujian konektivitas.
Misalnya, untuk menjalankan kembali 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
Bersihkan nettest
Setelah selesai menguji, jalankan perintah berikut untuk menghapus semua nettest
referensi:
kubectl delete namespace nettest
kubectl delete clusterroles nettest:nettest
kubectl delete clusterrolebindings nettest:nettest