24.18. Activation de la multidiffusion pour un projet
24.18.1. À propos de la multidiffusion
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
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
AstuceVous pouvez également appliquer le YAML suivant pour ajouter l'annotation :
apiVersion: v1 kind: Namespace metadata: name: <namespace> annotations: k8s.ovn.org/multicast-enabled: "true"
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>
Créez un pod qui servira de récepteur multicast :
$ cat <<EOF| oc create -f - apiVersion: v1 kind: Pod metadata: name: mlistener labels: app: multicast-verify spec: containers: - name: mlistener image: registry.access.redhat.com/ubi8 command: ["/bin/sh", "-c"] args: ["dnf -y install socat hostname && sleep inf"] ports: - containerPort: 30102 name: mlistener protocol: UDP EOF
Créez un pod qui servira d'émetteur multicast :
$ cat <<EOF| oc create -f - apiVersion: v1 kind: Pod metadata: name: msender labels: app: multicast-verify spec: containers: - name: msender image: registry.access.redhat.com/ubi8 command: ["/bin/sh", "-c"] args: ["dnf -y install socat && sleep inf"] EOF
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}')
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
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}')
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"
Si la multidiffusion fonctionne, la commande précédente renvoie le résultat suivant :
mlistener