Google Distributed Cloud nettest
identifica problemas de conectividad en los objetos de Kubernetes de tus clústeres, como pods, nodos, servicios y algunos destinos externos. nettest
no comprueba las conexiones de destinos externos a pods, nodos o servicios. En este documento se describe cómo implementar y ejecutar nettest
con uno de los manifiestos, nettest.yaml
o nettest_rhel.yaml
, en el repositorio de GitHub anthos-samples. Usa nettest_rhel.yaml
si ejecutas Google Distributed Cloud en Red Hat Enterprise Linux (RHEL). Usa nettest.yaml
si ejecutas Google Distributed Cloud en Ubuntu.
En este documento también se describe cómo interpretar los registros generados por nettest
para identificar problemas de conectividad con sus clústeres.
Acerca de nettest
La herramienta de diagnóstico nettest
consta de los siguientes objetos de Kubernetes. Cada objeto se especifica en los archivos de manifiesto YAML nettest
.
cloudprober
: un DaemonSet y un servicio responsables de recoger el estado de la conexión de red, como la tasa de errores y la latencia.echoserver
: un DaemonSet y un servicio responsables de responder acloudprober
, proporcionándole las métricas de conectividad de red.nettest
: un pod que contiene los contenedoresprometheus
ynettest
.prometheus
recoge métricas decloudprober
.nettest
consultasprometheus
y muestra los resultados de la prueba de red en el registro.
nettest-engine
: un ConfigMap para configurar el contenedornettest
en el podnettest
.
El manifiesto también especifica el espacio de nombres nettest
y una cuenta de servicio dedicada (junto con ClusterRole y ClusterRoleBinding) para aislar nettest
de otros recursos del clúster.
Ejecutar nettest
Implementa nettest
ejecutando el siguiente comando para tu sistema operativo.
Cuando se inicie el nettest
Pod, la prueba se ejecutará automáticamente. La prueba tarda unos cinco minutos en completarse.
En Ubuntu:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/main/anthos-bm-utils/abm-nettest/nettest.yaml
Para RHEL:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/main/anthos-bm-utils/abm-nettest/nettest_rhel.yaml
Obtener los resultados de la prueba
Una vez que se haya completado la prueba (lo que debería llevar unos cinco minutos después de que se haya implementado el manifiesto nettest
), ejecuta el siguiente comando para ver los resultados nettest
:
kubectl -n nettest logs nettest -c nettest
Mientras nettest
está en ejecución, envía mensajes como el siguiente 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
Si nettest
se ejecuta correctamente sin identificar ningún fallo de conectividad,
verás la siguiente entrada de registro:
I0211 21:58:34.689290 1 validate_metrics.go:78] Metric validation passed!
Si nettest
encuentra problemas de conexión, escribe entradas de registro como las siguientes:
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
Aunque el umbral predeterminado es del 1 % (1.000000
), se pueden ignorar de forma segura las tasas de error de hasta el 5 %. Por ejemplo, la tasa de errores de conectividad de la dirección IP 192.168.3.248
a echoserver-hostnetwork_10.200.0.2_8080
en el ejemplo anterior es de aproximadamente el 2 % (2.007046
). Este es un ejemplo de un problema de conectividad notificado que puedes ignorar.
Interpretar los resultados de la prueba
Cuando nettest
termina y detecta un problema de conectividad, verás la siguiente entrada en los registros de nettest
Pod:
"Error rate in percentage": probe from {src} to {dst} has value 100.000000, threshold is 1.000000
Aquí, {src}
y {dst}
pueden ser:
echoserver
IP de Pod: la conexión hacia o desde un Pod en el nodo.- IP del nodo: la conexión hacia o desde el nodo.
- IP de servicio (consulta el texto siguiente para obtener más información)
Además, {dst}
también puede ser:
google.com
: una conexión externa.dns
: la conexión a un servicio que no es dehostNetwork
a través de DNS, es decir,echoserver-non-hostnetwork.nettest.svc.cluster.local
.Los detalles de la IP de servicio se encuentran en las entradas de sondeo con formato JSON del registro, como en el siguiente ejemplo. En el siguiente ejemplo de sondeo se muestra que
172.26.27.229:80
es la dirección deservice-clusterip
. Hay dos sondas con este valor detargets
: una para el pod (pod-service-clusterip
) y otra para el nodo (node-service-clusterip
).probe { name: "node-service-clusterip" … targets { host_names: "172.26.27.229:80" }
Validar las correcciones
Cuando hayas solucionado todos los problemas de conectividad notificados, quita el nettest
Pod
y vuelve a aplicar el manifiesto de nettest
para volver a ejecutar las pruebas de conectividad.
Por ejemplo, para volver a ejecutar nettest
en Ubuntu, ejecuta los siguientes comandos:
kubectl -n nettest delete pod nettest
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/main/anthos-bm-utils/abm-nettest/nettest.yaml
Limpiar nettest
Cuando hayas terminado de hacer pruebas, ejecuta los siguientes comandos para quitar todos los recursos nettest
:
kubectl delete namespace nettest
kubectl delete clusterroles nettest:nettest
kubectl delete clusterrolebindings nettest:nettest
Siguientes pasos
Si necesitas más ayuda, ponte en contacto con el servicio de atención al cliente de Cloud. También puedes consultar la sección Obtener asistencia para obtener más información sobre los recursos de asistencia, incluidos los siguientes:
- Requisitos para abrir un caso de asistencia.
- Herramientas para ayudarte a solucionar problemas, como la configuración de tu entorno, los registros y las métricas.
- Componentes admitidos.