Google Distributed Cloud nettest
identifica i problemi di connettività negli oggetti Kubernetes nei 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 ed eseguire
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.
Informazioni su nettest
Lo strumento di diagnostica nettest
è costituito dai seguenti oggetti Kubernetes. Ogni
oggetto è specificato nei file manifest YAML nettest
.
cloudprober
: un DaemonSet e un servizio responsabili della raccolta dello stato della connessione di rete, ad esempio tasso di errore e latenza.echoserver
: un DaemonSet e un servizio responsabili della risposta acloudprober
, fornendo le metriche per la connettività di rete.nettest
: un pod contenente i containerprometheus
enettest
.prometheus
raccoglie le metriche dacloudprober
.nettest
queryprometheus
e visualizza i risultati del test di rete nel log.
nettest-engine
: un ConfigMap per configurare il containernettest
nel podnettest
.
Il manifest specifica anche lo spazio dei nomi nettest
e un ServiceAccount 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 viene avviato il pod nettest
, 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
Ottenere 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
Durante l'esecuzione, nettest
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 le seguenti:
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 è dell'1% (1.000000
), i tassi di errore fino al 5% possono essere ignorati in 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 2% (2.007046
). Questo è un
esempio di problema di connettività segnalato che puoi ignorare.
Interpretare 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
In questo caso, {src}
e {dst}
possono essere:
echoserver
IP pod: la connessione a o da un pod sul nodo.- IP nodo: la connessione da o verso il nodo.
- IP del servizio (vedi il testo seguente per i dettagli)
Inoltre, {dst}
può anche essere:
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 contenuti nelle voci di probe in formato JSON nel log, come nel seguente esempio. L'esempio di probe 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 nuovamente i test di connettività.
Ad esempio, per eseguire di nuovo nettest
per Ubuntu, esegui questi 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. Puoi anche consultare la sezione Richiedere assistenza per ulteriori informazioni sulle risorse di assistenza, tra cui:
- Requisiti per l'apertura di una richiesta di assistenza.
- Strumenti per aiutarti a risolvere i problemi, ad esempio la configurazione dell'ambiente, i log e le metriche.
- Componenti supportati.