25.12. Activation de la multidiffusion pour un projet
25.12.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 de OpenShift Container Platform est désactivé par défaut. Si vous utilisez le plugin réseau OpenShift SDN, vous pouvez activer le multicast par projet.
Lors de l'utilisation du plugin réseau OpenShift SDN en mode d'isolation networkpolicy
:
-
Les paquets de multidiffusion envoyés par un pod seront distribués à tous les autres pods du projet, indépendamment des objets
NetworkPolicy
. Les modules peuvent être en mesure de communiquer par multidiffusion même s'ils ne peuvent pas communiquer par monodiffusion. -
Les paquets de multidiffusion envoyés par un pod dans un projet ne seront jamais transmis aux pods d'un autre projet, même s'il existe des objets
NetworkPolicy
qui permettent la communication entre les projets.
Lors de l'utilisation du plugin réseau OpenShift SDN en mode d'isolation multitenant
:
- Les paquets de multidiffusion envoyés par un pod seront distribués à tous les autres pods du projet.
- Les paquets multicast envoyés par un pod dans un projet seront délivrés aux pods dans d'autres projets seulement si chaque projet est joint et que le multicast est activé dans chaque projet joint.
25.12.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 netnamespace <namespace> \ netnamespace.network.openshift.io/multicast-enabled=true
$ oc annotate netnamespace <namespace> \ netnamespace.network.openshift.io/multicast-enabled=true
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