1
0
mirror of https://github.com/openshift/openshift-docs.git synced 2026-02-06 06:46:26 +01:00
Files
openshift-docs/modules/nw-enabling-multicast.adoc

141 lines
3.2 KiB
Plaintext

// Module included in the following assemblies:
//
// * networking/openshift_sdn/enabling-multicast.adoc
// * networking/ovn_kubernetes_network_provider/enabling-multicast.adoc
ifeval::["{context}" == "openshift-sdn-enabling-multicast"]
:namespace: netnamespace
:annotation: netnamespace.network.openshift.io/multicast-enabled=true
endif::[]
ifeval::["{context}" == "ovn-kubernetes-enabling-multicast"]
:namespace: namespace
:annotation: k8s.ovn.org/multicast-enabled=true
endif::[]
[id="nw-enabling-multicast_{context}"]
= Enabling multicast between pods
You can enable multicast between pods for your project.
.Prerequisites
* Install the OpenShift CLI (`oc`).
* You must log in to the cluster with a user that has the `cluster-admin` role.
.Procedure
* Run the following command to enable multicast for a project. Replace `<namespace>` with the namespace for the project you want to enable multicast for.
+
[source,terminal,subs="attributes+"]
----
$ oc annotate {namespace} <namespace> \
{annotation}
----
.Verification steps
To verify that multicast is enabled for a project, complete the following procedure:
. Change your current project to the project that you enabled multicast for. Replace `<project>` with the project name.
+
[source,terminal]
----
$ oc project <project>
----
. Create a Pod to act as a multicast receiver:
+
[source,terminal]
----
$ 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
----
. Create a Pod to act as a multicast sender:
+
[source,terminal]
----
$ 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
----
. Start the multicast listener.
.. Get the IP address for the Pod:
+
[source,terminal]
----
$ POD_IP=$(oc get pods mlistener -o jsonpath='{.status.podIP}')
----
.. To start the multicast listener, in a new terminal window or tab, enter the following command:
+
[source,terminal]
----
$ oc exec mlistener -i -t -- \
socat UDP4-RECVFROM:30102,ip-add-membership=224.1.0.1:$POD_IP,fork EXEC:hostname
----
. Start the multicast transmitter.
.. Get the Pod network IP address range:
+
[source,terminal]
----
$ CIDR=$(oc get Network.config.openshift.io cluster \
-o jsonpath='{.status.clusterNetwork[0].cidr}')
----
.. To send a multicast message, enter the following command:
+
[source,terminal]
----
$ oc exec msender -i -t -- \
/bin/bash -c "echo | socat STDIO UDP4-DATAGRAM:224.1.0.1:30102,range=$CIDR,ip-multicast-ttl=64"
----
+
If multicast is working, the previous command returns the following output:
+
----
mlistener
----
ifeval::["{context}" == "openshift-sdn-enabling-multicast"]
:!annotation:
:!namespace:
endif::[]
ifeval::["{context}" == "ovn-kubernetes-enabling-multicast"]
:!annotation:
:!namespace:
endif::[]