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

164 lines
3.6 KiB
Plaintext

// Module included in the following assemblies:
//
// * 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::[]
:_mod-docs-content-type: PROCEDURE
[id="nw-enabling-multicast_{context}"]
= Enabling multicast between pods
[role="_abstract"]
You can enable multicast between pods for your project.
.Prerequisites
* Install the {oc-first}.
* You must log in to the cluster with a user that has the `cluster-admin`
ifdef::openshift-rosa,openshift-dedicated[]
or the `dedicated-admin`
endif::[]
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}
----
ifeval::["{context}" == "ovn-kubernetes-enabling-multicast"]
+
[TIP]
====
You can alternatively apply the following YAML to add the annotation:
[source,yaml]
----
apiVersion: v1
kind: Namespace
metadata:
name: <namespace>
annotations:
k8s.ovn.org/multicast-enabled: "true"
----
====
endif::[]
.Verification
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/ubi9
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/ubi9
command: ["/bin/sh", "-c"]
args:
["dnf -y install socat && sleep inf"]
EOF
----
. In a new terminal window or tab, start the multicast listener.
.. Get the IP address for the Pod:
+
[source,terminal]
----
$ POD_IP=$(oc get pods mlistener -o jsonpath='{.status.podIP}')
----
.. Start the multicast listener by entering 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:
+
[source,text]
----
mlistener
----
ifeval::["{context}" == "openshift-sdn-enabling-multicast"]
:!annotation:
:!namespace:
endif::[]
ifeval::["{context}" == "ovn-kubernetes-enabling-multicast"]
:!annotation:
:!namespace:
endif::[]