|
Ce document a été traduit à l'aide d'une technologie de traduction automatique. Bien que nous nous efforcions de fournir des traductions exactes, nous ne fournissons aucune garantie quant à l'exhaustivité, l'exactitude ou la fiabilité du contenu traduit. En cas de divergence, la version originale anglaise prévaut et fait foi. |
Réseautique
Les commandes/étapes listées sur cette page peuvent être utilisées pour vérifier les problèmes liés au réseau dans votre cluster.
Assurez-vous d’avoir configuré le bon kubeconfig (par exemple, export KUBECONFIG=$PWD/kube_config_cluster.yml pour Rancher HA) ou d’utiliser le kubectl intégré via l’interface utilisateur.
Vérifiez à nouveau si tous les ports requis sont ouverts dans votre passerelle de périmètre de sécurité (hôte)
Vérifiez à nouveau si tous les ports requis sont ouverts dans votre passerelle de périmètre de sécurité (hôte). Le réseau superposé utilise UDP par rapport à tous les autres ports requis qui sont TCP.
Vérifiez si le réseau superposé fonctionne correctement
Le pod peut être programmé sur n’importe lequel des hôtes que vous avez utilisés pour votre cluster, mais cela signifie que le contrôleur d’entrée NGINX doit être capable de router la demande de NODE_1 à NODE_2. Cela se produit via le réseau superposé. Si le réseau superposé ne fonctionne pas, vous rencontrerez des échecs de connexion TCP/HTTP intermittents en raison du fait que le contrôleur d’entrée NGINX ne peut pas router vers le pod.
Pour tester le réseau superposé, vous pouvez lancer la définition suivante DaemonSet. Cela exécutera un conteneur swiss-army-knife sur chaque hôte (l’image a été développée par les ingénieurs de Rancher et peut être trouvée ici : https://github.com/rancherlabs/swiss-army-knife),, que nous utiliserons pour effectuer un test ping entre les conteneurs sur tous les hôtes).
|
Le conteneur |
-
Enregistrez le fichier suivant sous
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 -
Lancez-le en utilisant
kubectl create -f overlaytest.yml -
Attendez que
kubectl rollout status ds/overlaytest -wrevienne :daemon set "overlaytest" successfully rolled out. -
Exécutez le script suivant, depuis le même emplacement. Chaque conteneur
overlaytestsur chaque hôte va se pinguer mutuellement :#!/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" -
Lorsque cette commande a terminé son exécution, elle affichera l’état de chaque route :
=> 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 vous voyez une erreur dans la sortie, il y a un problème avec la route entre les pods sur les deux hôtes. Dans la sortie ci-dessus, le nœud
wk2n’a pas de connectivité sur le réseau superposé. Cela pourrait être dû au fait que les ports requis pour le réseau superposé ne sont pas ouverts pourwk2. -
Vous pouvez maintenant nettoyer le DaemonSet en exécutant
kubectl delete ds/overlaytest.
Vérifiez si le MTU est correctement configuré sur les hôtes et sur les appareils/dispositifs de peering/tunnel.
Lorsque le MTU est mal configuré (soit sur les hôtes exécutant Rancher, les nœuds dans les clusters créés/importés ou sur les appareils/dispositifs intermédiaires), des messages d’erreur seront enregistrés dans Rancher et dans les agents, similaires à :
-
websocket: bad handshake -
Failed to connect to proxy -
read tcp: i/o timeout
Voir Considérations sur le MTU de Google Cloud VPN pour un exemple de configuration correcte du MTU lors de l’utilisation de Google Cloud VPN entre Rancher et les nœuds du cluster.