|
Este documento ha sido traducido utilizando tecnología de traducción automática. Si bien nos esforzamos por proporcionar traducciones precisas, no ofrecemos garantías sobre la integridad, precisión o confiabilidad del contenido traducido. En caso de discrepancia, la versión original en inglés prevalecerá y constituirá el texto autorizado. |
Conectividad
Los comandos/pasos listados en esta página se pueden utilizar para comprobar problemas relacionados con la red en tu clúster.
Asegúrate de haber configurado el kubeconfig correcto (por ejemplo, export KUBECONFIG=$PWD/kube_config_cluster.yml para Rancher HA) o de estar utilizando el kubectl integrado a través de la interfaz de usuario.
Verifica si todos los puertos requeridos están abiertos en tu firewall (host)
Verifica si todos los puertos requeridos están abiertos en tu firewall (host). La red superpuesta utiliza UDP en comparación con todos los demás puertos requeridos que son TCP.
Verifica si la red superpuesta está funcionando correctamente
El pod puede ser programado en cualquiera de los hosts que utilizaste para tu clúster, pero eso significa que el controlador de ingreso NGINX necesita poder enrutar la solicitud de NODE_1 a NODE_2. Esto ocurre a través de la red superpuesta. Si la red superpuesta no está funcionando, experimentarás fallos intermitentes de conexión TCP/HTTP debido a que el controlador de ingreso NGINX no puede enrutar al pod.
Para probar la red superpuesta, puedes lanzar la siguiente definición de DaemonSet. Esto ejecutará un contenedor swiss-army-knife en cada host (la imagen fue desarrollada por ingenieros de Rancher y se puede encontrar aquí: https://github.com/rancherlabs/swiss-army-knife),) que utilizaremos para realizar una prueba de ping entre contenedores en todos los hosts.
|
El contenedor |
-
Guarda el siguiente archivo como
overlaytest.ymlapiVersion: apps/v1 kind: DaemonSet metadata: name: overlaytest spec: selector: matchLabels: name: overlaytest template: metadata: labels: name: overlaytest spec: tolerations: - operator: Exists containers: - image: rancherlabs/swiss-army-knife imagePullPolicy: Always name: overlaytest command: ["sleep", "infinity"] terminationMessagePath: /dev/termination-log -
Inícialo usando
kubectl create -f overlaytest.yml -
Espera hasta que
kubectl rollout status ds/overlaytest -wdevuelva:daemon set "overlaytest" successfully rolled out. -
Ejecuta el siguiente script, desde la misma ubicación. Tendrá cada contenedor
overlaytesten cada host haciendo ping entre sí:#!/bin/bash echo "=> Start network overlay test" kubectl get pods -l name=overlaytest -o jsonpath='{range .items[*]}{@.metadata.name}{" "}{@.spec.nodeName}{"\n"}{end}' | while read spod shost do kubectl get pods -l name=overlaytest -o jsonpath='{range .items[*]}{@.status.podIP}{" "}{@.spec.nodeName}{"\n"}{end}' | while read tip thost do kubectl --request-timeout='10s' exec $spod -c overlaytest -- /bin/sh -c "ping -c2 $tip > /dev/null 2>&1" RC=$? if [ $RC -ne 0 ] then echo FAIL: $spod on $shost cannot reach pod IP $tip on $thost else echo $shost can reach $thost fi done done echo "=> End network overlay test" -
Cuando este comando haya terminado de ejecutarse, mostrará el estado de cada ruta:
=> Start network overlay test Error from server (NotFound): pods "wk2" not found FAIL: overlaytest-5bglp on wk2 cannot reach pod IP 10.42.7.3 on wk2 Error from server (NotFound): pods "wk2" not found FAIL: overlaytest-5bglp on wk2 cannot reach pod IP 10.42.0.5 on cp1 Error from server (NotFound): pods "wk2" not found FAIL: overlaytest-5bglp on wk2 cannot reach pod IP 10.42.2.12 on wk1 command terminated with exit code 1 FAIL: overlaytest-v4qkl on cp1 cannot reach pod IP 10.42.7.3 on wk2 cp1 can reach cp1 cp1 can reach wk1 command terminated with exit code 1 FAIL: overlaytest-xpxwp on wk1 cannot reach pod IP 10.42.7.3 on wk2 wk1 can reach cp1 wk1 can reach wk1 => End network overlay test
Si ves un error en la salida, hay algún problema con la ruta entre los pods en los dos hosts. En la salida anterior, el nodo
wk2no tiene conectividad a través de la red superpuesta. Esto podría ser porque los puertos requeridos para la red superpuesta no están abiertos parawk2. -
Ahora puedes limpiar el DaemonSet ejecutando
kubectl delete ds/overlaytest.
Verifica si el MTU está configurado correctamente en los hosts y en los dispositivos/aparatos de emparejamiento/túnel.
Cuando el MTU está configurado incorrectamente (ya sea en hosts que ejecutan Rancher, nodos en clústeres creados/importados o en dispositivos/aparatos intermedios), se registrarán mensajes de error en Rancher y en los agentes, similar a:
-
websocket: bad handshake -
Failed to connect to proxy -
read tcp: i/o timeout
Consulta Google Cloud VPN: Consideraciones sobre el MTU para un ejemplo de cómo configurar correctamente el MTU al usar Google Cloud VPN entre Rancher y los nodos del clúster.