24.18. Activation de la multidiffusion pour un projet
24.18.1. À propos de la multidiffusion Copier lienLien copié sur presse-papiers!
Avec la multidiffusion IP, les données sont diffusées simultanément à de nombreuses adresses IP.
À l'heure actuelle, le multicast est utilisé de préférence pour la coordination ou la découverte de services à faible bande passante et non comme une solution à large bande passante.
Le trafic multicast entre les pods d'OpenShift Container Platform est désactivé par défaut. Si vous utilisez le plugin réseau OVN-Kubernetes, vous pouvez activer le multicast par projet.
24.18.2. Activation de la multidiffusion entre les pods Copier lienLien copié sur presse-papiers!
Vous pouvez activer le multicast entre les pods de votre projet.
Conditions préalables
-
Installez le CLI OpenShift (
oc
). -
Vous devez vous connecter au cluster avec un utilisateur ayant le rôle
cluster-admin
.
Procédure
Exécutez la commande suivante pour activer la multidiffusion pour un projet. Remplacez
<namespace>
par l'espace de noms du projet pour lequel vous souhaitez activer la multidiffusion.oc annotate namespace <namespace> \ k8s.ovn.org/multicast-enabled=true
$ oc annotate namespace <namespace> \ k8s.ovn.org/multicast-enabled=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AstuceVous pouvez également appliquer le YAML suivant pour ajouter l'annotation :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Vérification
Pour vérifier que la multidiffusion est activée pour un projet, suivez la procédure suivante :
Remplacez votre projet actuel par le projet pour lequel vous avez activé la multidiffusion. Remplacez
<project>
par le nom du projet.oc project <projet>
$ oc project <projet>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez un pod qui servira de récepteur multicast :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez un pod qui servira d'émetteur multicast :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Dans une nouvelle fenêtre ou un nouvel onglet de terminal, démarrez l'auditeur de multidiffusion.
Obtenir l'adresse IP du pod :
POD_IP=$(oc get pods mlistener -o jsonpath='{.status.podIP}')
$ POD_IP=$(oc get pods mlistener -o jsonpath='{.status.podIP}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Démarrez l'auditeur de multidiffusion en entrant la commande suivante :
oc exec mlistener -i -t -- \ socat UDP4-RECVFROM:30102,ip-add-membership=224.1.0.1:$POD_IP,fork EXEC:hostname
$ oc exec mlistener -i -t -- \ socat UDP4-RECVFROM:30102,ip-add-membership=224.1.0.1:$POD_IP,fork EXEC:hostname
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Démarrer l'émetteur de multidiffusion.
Obtenir la plage d'adresses IP du réseau de pods :
CIDR=$(oc get Network.config.openshift.io cluster \ -o jsonpath='{.status.clusterNetwork[0].cidr}')
$ CIDR=$(oc get Network.config.openshift.io cluster \ -o jsonpath='{.status.clusterNetwork[0].cidr}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pour envoyer un message multicast, entrez la commande suivante :
oc exec msender -i -t -- \ /bin/bash -c "echo | socat STDIO UDP4-DATAGRAM:224.1.0.1:30102,range=$CIDR,ip-multicast-ttl=64"
$ oc exec msender -i -t -- \ /bin/bash -c "echo | socat STDIO UDP4-DATAGRAM:224.1.0.1:30102,range=$CIDR,ip-multicast-ttl=64"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Si la multidiffusion fonctionne, la commande précédente renvoie le résultat suivant :
mlistener
mlistener
Copy to Clipboard Copied! Toggle word wrap Toggle overflow