Cilium 멀티캐스트 지원
Cilium 멀티캐스트 지원 (Multicast Support in Cilium) (Beta)
Cilium의 멀티캐스트 기능은 사용자 애플리케이션이 데이터 피드를 Kubernetes 클러스터의 여러 소비자에게 배포할 수 있게 해줘요. eBPF 기반 컨테이너 네트워크 멀티캐스트 전송 기술로 여러 멀티캐스트 프로토콜을 지원해요.
본문
Note 이 기능은 베타 단계예요. 문제가 발생하면 피드백을 주고 GitHub issue를 제출해 주세요.
멀티캐스트 기능은 사용자 애플리케이션이 데이터 피드를 Kubernetes 클러스터의 여러 소비자에게 배포할 수 있게 해줘요. eBPF 기반의 컨테이너 네트워크 멀티캐스트 전송 기술은 컨테이너 네트워크에서 효율적인 멀티캐스트 전송 문제를 해결하는 데 초점을 맞추며, 여러 멀티캐스트 프로토콜을 지원해요.
이 문서는 멀티캐스트 지원을 활성화하고 Cilium 및 CiliumNode에 멀티캐스트 그룹 IP 주소와 구독자를 구성하는 방법을 설명해요.
사전 요구 사항 (Prerequisites)
이 가이드는 Kubernetes 클러스터에 Cilium이 올바르게 설치되어 있다고 가정해요. 자세한 내용은 Cilium Quick Installation를 참고하세요. 확실하지 않다면 cilium status를 실행해 Cilium이 잘 실행 중인지 확인하세요. 또한 이 가이드는 Cilium이 vxlan 모드로 구성되어 있다고 가정해요. 멀티캐스트 기능을 사용할 때 vxlan 모드가 필요해요.
멀티캐스트는 AMD64의 경우 커널 >= 5.10, AArch64의 경우 커널 >= 6.0에서만 동작해요.
멀티캐스트 기능 활성화 (Enable Multicast Feature)
멀티캐스트 지원은 cilium-config ConfigMap을 다음과 같이 업데이트해 활성화할 수 있어요:
$ cilium config set multicast-enabled true
✨ Patching ConfigMap cilium-config with multicast-enabled=true...
♻️ Restarted Cilium pods
멀티캐스트 및 구독자 IP 구성 (Configure Multicast and Subscriber IPs)
Cilium과 함께 멀티캐스트를 사용하려면 애플리케이션 요구 사항에 따라 멀티캐스트 그룹 IP 주소와 구독자 목록을 구성해야 해요. 이는 각 cilium-agent 파드에서 cilium-dbg 명령을 실행해 수행해요. 그런 다음 멀티캐스트 구독자 파드는 IGMP join을 보낼 수 있고, 멀티캐스트 전송자 파드는 멀티캐스트 스트림을 보내기 시작할 수 있어요.
예시로 다음 가이드는 239.255.0.1 멀티캐스트 그룹 주소를 사용해요.
멀티캐스트 구독자로 설정할 모든 CiliumNode IP 주소를 가져오세요:
$ kubectl get ciliumnodes.cilium.io
NAME CILIUMINTERNALIP INTERNALIP AGE
kind-control-plane 10.244.0.72 172.19.0.2 16m
kind-worker 10.244.1.86 172.19.0.3 16m
멀티캐스트 IP 주소를 설정하려면 각 cilium-agent에서 멀티캐스트 BPF 맵을 활성화하세요:
### add multicast IP address
$ cilium-dbg bpf multicast group add 239.255.0.1
### check multicast IP address
$ cilium-dbg bpf multicast group list
Group Address
239.255.0.1
그런 다음 각 cilium-agent에서 구독자 IP 주소를 설정하세요:
### cilium-agent on kind-control-plane
$ cilium-dbg bpf multicast subscriber add 239.255.0.1 10.244.1.86
$ cilium-dbg bpf multicast subscriber list all
Group Subscriber Type
239.255.0.1 10.244.1.86 Remote Node
### cilium-agent on kind-worker
$ cilium-dbg bpf multicast subscriber add 239.255.0.1 10.244.0.72
Note 이 멀티캐스트 구독자 IP 주소는 자신의 것이 아닌 다른 CiliumNode IP 주소예요.
모든 노드가 지정된 멀티캐스트 그룹에 조인하도록 하려면 cilium multicast 명령을 사용하세요. 또한 멀티캐스트 그룹과 구독자에 대한 정보를 클러스터 전체에서 얻을 수도 있어요.
### make all nodes join the specified multicast group
$ cilium multicast add --group-ip 239.255.0.1
### confirm the multicast groups and subscribers
$ cilium multicast list subscriber --all
Node Group Subscriber Type
cl-worker 239.255.0.1 10.244.0.196 Remote Node
cl-control-plane 239.255.0.1 10.244.1.122 Remote Node
멀티캐스트 IP 주소와 구독자 목록을 제거하려면 cilium-agent에서 다음 명령을 실행하세요.
$ cilium-dbg bpf multicast group delete 239.255.0.1
$ cilium-dbg bpf multicast subscriber delete 239.255.0.1 10.244.0.72
제한 사항 (Limitations)
- 이 동작은 멀티캐스트 기능을 사용하는 각 CiliumNode에서 수행해야 해요.
- 이 기능은 Cilium이 관리하는 파드 간의 ipsec 암호화와 함께 동작하지 않아요.