$ oc annotate namespace <namespace> \
k8s.ovn.org/multicast-enabled=true
使用IP组播,数据可以同时广播到多个IP地址。
|
在AWS Pod上的Red Hat OpenShift Service之间默认禁用组播流量。如果您使用的是OVN-Kubernetes网络插件,则可以基于每个项目启用组播。
您可以为您的项目启用Pod之间的组播。
安装OpenShift CLI (oc
)。
您必须使用具有cluster-admin
或dedicated-admin
角色的用户登录到集群。
运行以下命令以启用项目的组播。将<namespace>
替换为您要为其启用组播的项目的命名空间。
$ oc annotate namespace <namespace> \
k8s.ovn.org/multicast-enabled=true
或者,您可以应用以下YAML来添加注释
|
要验证是否已为项目启用组播,请完成以下步骤
将当前项目更改为您已为其启用组播的项目。将<project>
替换为项目名称。
$ oc project <project>
创建一个充当组播接收器的Pod。
$ 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
创建一个充当组播发送器的Pod。
$ 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
在新终端窗口或选项卡中,启动组播侦听器。
获取Pod的IP地址
$ POD_IP=$(oc get pods mlistener -o jsonpath='{.status.podIP}')
输入以下命令启动组播侦听器
$ oc exec mlistener -i -t -- \
socat UDP4-RECVFROM:30102,ip-add-membership=224.1.0.1:$POD_IP,fork EXEC:hostname
启动组播发送器。
获取Pod网络IP地址范围
$ CIDR=$(oc get Network.config.openshift.io cluster \
-o jsonpath='{.status.clusterNetwork[0].cidr}')
要发送组播消息,请输入以下命令
$ oc exec msender -i -t -- \
/bin/bash -c "echo | socat STDIO UDP4-DATAGRAM:224.1.0.1:30102,range=$CIDR,ip-multicast-ttl=64"
如果组播正常工作,则之前的命令将返回以下输出
mlistener