mirror of
https://github.com/openshift/openshift-docs.git
synced 2026-02-05 12:46:18 +01:00
164 lines
3.6 KiB
Plaintext
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::[]
|