Google Distributed Cloud nettest
identifica i problemi di connettività negli oggetti Kubernetes dei tuoi cluster, come pod, nodi, servizi e alcuni target esterni. nettest
non controlla le connessioni da target esterni a pod, nodi o servizi. Questo documento descrive come eseguire il deployment e l'esecuzione di nettest
con uno dei manifest, nettest.yaml
o nettest_rhel.yaml
, nel repository GitHub anthos-samples. Utilizza nettest_rhel.yaml
se esegui Google Distributed Cloud su
Red Hat Enterprise Linux (RHEL). Utilizza nettest.yaml
se esegui Google Distributed Cloud su Ubuntu.
Questo documento descrive anche come interpretare i log generati da nettest
per identificare i problemi di connettività con i cluster.
Se hai bisogno di ulteriore assistenza, contatta l'assistenza clienti Google Cloud.
Informazioni su nettest
Lo strumento di diagnostica nettest
è costituito dai seguenti oggetti Kubernetes. Ogni
oggetto è specificato nei file manifest YAML di nettest
.
cloudprober
: un DaemonSet e un servizio responsabili della raccolta dello stato della connessione di rete, ad esempio il tasso di errore e la latenza.echoserver
: un DaemonSet e un servizio responsabili di rispondere acloudprober
, fornendo le metriche per la connettività di rete.nettest
: un pod contenente i containerprometheus
enettest
.prometheus
raccoglie le metriche dacloudprober
.nettest
queryprometheus
e mostra i risultati del test di rete nel log.
nettest-engine
: un ConfigMap per configurare il contenitorenettest
nelnettest
pod.
Il manifest specifica anche lo spazio dei nomi nettest
e un account di servizio dedicato (insieme a ClusterRole e ClusterRoleBinding) per isolare nettest
dalle altre risorse del cluster.
Esegui nettest
Esegui il deployment di nettest
eseguendo il seguente comando per il tuo sistema operativo.
Quando il pod nettest
si avvia, il test viene eseguito automaticamente. Il test richiede circa cinque minuti.
Per Ubuntu:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/main/anthos-bm-utils/abm-nettest/nettest.yaml
Per RHEL:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/main/anthos-bm-utils/abm-nettest/nettest_rhel.yaml
Visualizzare i risultati del test
Al termine del test, che dovrebbe richiedere circa cinque minuti dopo il deployment del manifest nettest
, esegui il seguente comando per visualizzare i risultati nettest
:
kubectl -n nettest logs nettest -c nettest
Mentre nettest
è in esecuzione, invia messaggi come il seguente a 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
Se nettest
viene eseguito correttamente senza identificare errori di connettività, viene visualizzata la seguente voce di log:
I0211 21:58:34.689290 1 validate_metrics.go:78] Metric validation passed!
Se nettest
ha rilevato problemi di connessione, scrive voci di log come la seguente:
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
Anche se la soglia predefinita è pari all'1% (1.000000
), i tassi di errore fino al
cinque percento possono essere ignorati in tutta sicurezza. Ad esempio, il tasso di errore per la connettività
dall'indirizzo IP 192.168.3.248
a echoserver-hostnetwork_10.200.0.2_8080
nell'esempio precedente è di circa il due percento (2.007046
). Questo è un
esempio di un problema di connettività segnalato che puoi ignorare.
Interpreta i risultati del test
Quando nettest
termina e rileva un problema di connettività, viene visualizzata la seguente voce nei log del pod nettest
:
"Error rate in percentage": probe from {src} to {dst} has value 100.000000, threshold is 1.000000
Qui, {src}
e {dst}
possono essere:
echoserver
IP del pod: la connessione a o da un pod sul nodo.- IP del nodo: la connessione al nodo o da questo.
- IP del servizio (per maggiori dettagli, leggi il testo seguente)
Inoltre, {dst}
può essere anche:
google.com
: una connessione esterna.dns
: la connessione a un servizio nonhostNetwork
tramite DNS, ovveroechoserver-non-hostnetwork.nettest.svc.cluster.local
.I dettagli dell'IP del servizio sono nelle voci di controllo in formato JSON nel log, come nell'esempio seguente. L'esempio di sonda seguente mostra che
172.26.27.229:80
è l'indirizzo diservice-clusterip
. Esistono due probe con questo valoretargets
, uno per il pod (pod-service-clusterip
) e uno per il nodo (node-service-clusterip
).probe { name: "node-service-clusterip" … targets { host_names: "172.26.27.229:80" }
Convalidare le correzioni
Dopo aver risolto tutti i problemi di connettività segnalati, rimuovi il pod nettest
e applica di nuovo il manifest nettest
per eseguire di nuovo i test di connettività.
Ad esempio, per eseguire di nuovo nettest
per Ubuntu, esegui i seguenti comandi:
kubectl -n nettest delete pod nettest
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/main/anthos-bm-utils/abm-nettest/nettest.yaml
Pulisci nettest
Al termine del test, esegui i seguenti comandi per rimuovere tutte le risorse nettest
:
kubectl delete namespace nettest
kubectl delete clusterroles nettest:nettest
kubectl delete clusterrolebindings nettest:nettest
Passaggi successivi
Se hai bisogno di ulteriore assistenza, contatta l'assistenza clienti Google Cloud.