Controlla la connettività del cluster con nettest

Google Distributed Cloud nettest identifica i problemi di connettività in Oggetti Kubernetes nei cluster, come pod, nodi, servizi e alcuni target esterni. nettest non controlla le connessioni da destinazioni esterne a Pod, nodi o servizi. Questo documento descrive come eseguire il deployment nettest con uno dei manifest, nettest.yaml o nettest_rhel.yaml, in il anthos-samples GitHub di ASL. Utilizza nettest_rhel.yaml se esegui Google Distributed Cloud Red HatEnterprise Linux (RHEL). Utilizza nettest.yaml se corri Google Distributed Cloud su Ubuntu.

Questo documento descrive inoltre come interpreti i log generati da nettest per identificare i problemi di connettività con i cluster.

Se hai bisogno di ulteriore assistenza, contatta Assistenza clienti Google Cloud.

Informazioni su nettest

Lo strumento di diagnostica nettest è costituito dai seguenti oggetti Kubernetes. Ciascuna è specificato nei file manifest YAML nettest.

  • cloudprober: un DaemonSet e un servizio responsabile della raccolta della rete lo stato della connessione, come tasso di errori e latenza.
  • echoserver: un DaemonSet e un servizio responsabile della risposta a cloudprober, che fornisce le metriche per la connettività di rete.
  • nettest: un pod contenente i container prometheus e nettest.
    • prometheus raccoglie metriche da cloudprober.
    • nettest esegue una query prometheus e mostra i risultati del test di rete nella log.
  • nettest-engine: un ConfigMap per configurare il container nettest nel Pod nettest.

Il file manifest specifica anche lo spazio dei nomi nettest e uno spazio ServiceAccount (insieme a ClusterRole e ClusterRoleBinding) per isolare nettest da altre risorse del cluster.

Esegui nettest

Esegui il deployment di nettest eseguendo questo comando per il tuo sistema operativo. All'avvio del 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

Ottieni i risultati del test

Al termine del test, che dovrebbe richiedere circa cinque minuti dopo il È stato eseguito il deployment del manifest nettest. Esegui questo comando per vedere l'evento nettest risultati:

kubectl -n nettest logs nettest -c nettest

Mentre nettest è in esecuzione, invia messaggi simili ai seguenti 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), tassi di errore fino a il cinque per cento può essere ignorato. Ad esempio, la percentuale di errori relativi alla connettività dall'indirizzo IP 192.168.3.248 a echoserver-hostnetwork_10.200.0.2_8080 in l'esempio precedente è di circa il due percento (2.007046). Si tratta di un esempio di un problema di connettività segnalato che puoi ignorare.

Interpretare i risultati del test

Quando nettest termina e rileva un problema di connettività, viene visualizzato quanto segue nei log dei 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 del pod: la connessione da o verso un pod sul nodo.
  • IP del nodo: la connessione verso o dal nodo.
  • IP di servizio (vedi il testo seguente per i dettagli)

Inoltre, {dst} può anche essere:

  • google.com: una connessione esterna.
  • dns: la connessione a un servizio non hostNetwork tramite DNS, ovvero echoserver-non-hostnetwork.nettest.svc.cluster.local.

    I dettagli per l'IP del servizio sono nelle voci di probe in formato JSON nel log. come nell'esempio seguente. Il seguente esempio di probe mostra che 172.26.27.229:80 è l'indirizzo di service-clusterip. Esistono due metodi probe con questo valore targets, 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"
      }
    

Convalida le correzioni

Dopo aver risolto tutti i problemi di connettività segnalati, rimuovi il pod di nettest e riapplica il manifest nettest per eseguire di nuovo i test di connettività.

Ad esempio, per eseguire nuovamente 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

Libera nettest

Al termine del test, esegui questi comandi per rimuovere tutti i nettest di risorse:

kubectl delete namespace nettest
kubectl delete clusterroles nettest:nettest
kubectl delete clusterrolebindings nettest:nettest

Passaggi successivi

Se hai bisogno di ulteriore assistenza, contatta Assistenza clienti Google Cloud.