Google Distributed Cloud nettest identifica problemas de conectividad en los objetos de Kubernetes de tus clústeres, como Pods, nodos, Services y algunos objetivos externos. nettest no verifica las conexiones de los destinos externos a los Pods, los nodos o los Services. 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 anthos-samples de GitHub. 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 que genera nettest para identificar problemas de conectividad con los 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 de nettest.
cloudprober: Es un DaemonSet y un Service responsable de recopilar el estado de la conexión de red, como la tasa de error y la latencia.echoserver: Es un DaemonSet y un Service responsable de responder acloudprober, que le proporcionan las métricas para la conectividad de red.nettest: Es un Pod que incluye los contenedoresprometheusynettest.prometheusrecopila métricas decloudprober.nettestconsultaprometheusy muestra los resultados de la prueba de red en el registro.
nettest-engine: Es un ConfigMap para configurar el contenedornettesten el Podnettest.
El manifiesto también especifica el espacio de nombres nettest y una ServiceAccount dedicada (junto con ClusterRole y ClusterRoleBinding) para aislar nettest de otros recursos del clúster.
Ejecuta nettest
Implementa nettest mediante la ejecución del siguiente comando en tu sistema operativo.
Cuando se inicia el Pod nettest, la prueba se ejecuta de forma automática. La prueba toma unos cinco minutos en completarse.
Para 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
Obtén los resultados de la prueba
Una vez finalizada la prueba, lo que debería tomar alrededor de cinco minutos después de que se implementa el manifiesto nettest, ejecuta el siguiente comando para ver los resultados de nettest:
kubectl -n nettest logs nettest -c nettest
Mientras nettest se está ejecutando, envía mensajes como los siguientes 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 de forma correcta sin identificar ninguna falla de conectividad, verás la siguiente entrada de registro:
I0211 21:58:34.689290 1 validate_metrics.go:78] Metric validation passed!
Si nettest encontró 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 uno por ciento (1.000000), las tasas de error de hasta el cinco por ciento se pueden ignorar de forma segura. Por ejemplo, la tasa de error de la conectividad de la dirección IP 192.168.3.248 a la echoserver-hostnetwork_10.200.0.2_8080 en el ejemplo anterior es de alrededor del dos por ciento (2.007046). Este es un ejemplo de un problema de conectividad informado que puedes ignorar.
Interpreta los resultados de la prueba
Cuando nettest finalice y encuentre un problema de conectividad, verás la siguiente entrada en los registros del Pod nettest:
"Error rate in percentage": probe from {src} to {dst} has value 100.000000, threshold is 1.000000
Aquí, {src} y {dst} pueden ser de la siguiente manera:
echoserver: Es la conexión al Pod desde o hacia el Pod en el nodo.- IP del nodo: Es la conexión desde o hacia el nodo.
- IP del servicio (consulta el siguiente texto para obtener más información)
Además, {dst} también puede ser:
google.com: Es una conexión externa.dns: Es la conexión a un Service que no eshostNetworka través de DNS, es decir,echoserver-non-hostnetwork.nettest.svc.cluster.local.Los detalles de la IP de servicio se encuentran en entradas de sondeo con formato JSON en el registro, como se muestra en el siguiente ejemplo. En el siguiente ejemplo de sondeo, se muestra que
172.26.27.229:80es la dirección deservice-clusterip. Hay dos sondeos con este valortargets, uno para el Pod (pod-service-clusterip) y otro para el nodo (node-service-clusterip).probe { name: "node-service-clusterip" … targets { host_names: "172.26.27.229:80" }
Valida tus correcciones
Cuando hayas resuelto todos los problemas de conectividad informados, quita el Pod nettest y vuelve a aplicar el manifiesto de nettest para volver a ejecutar las pruebas de conectividad.
Por ejemplo, si quieres volver a ejecutar nettest para 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
Limpia nettest
Cuando termines de realizar las pruebas, ejecuta los siguientes comandos para quitar todos los recursos de nettest:
kubectl delete namespace nettest
kubectl delete clusterroles nettest:nettest
kubectl delete clusterrolebindings nettest:nettest
¿Qué sigue?
Si necesitas asistencia adicional, comunícate con Atención al cliente de Cloud. También puedes consultar Cómo 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 compatibles