I would like to run crowdrender agents in a k8s cluster. Already started a helm chart. But I got one Problem so far:
Kubernetes Loadbalancers are not really meant for opening big port-ranges.
The are more meant like heaving 80 and 443 and a reverseproxy as ingress controller, e.g. Nginx.
(Yes, you can open multiple ports via config, but not all Loadbalancers of k8s- or ComputeEngine providers allow such a high number of target ports)
There are thre ways, that come to my mind, how this could be handled.
First (and more of a temporary) solution would be, to allow different paths in the blender-plugin.
e.g. subdomain.domain.com/port1, subdomain.domain.com/port2...
this allows the usage of different paths in the Ingress resource, that can be routed to the different ports of the docker container.
Second solution would be, to require only a single port (but could be multiple connections if needed). This would allow me to use one subdomain or path per agent. Would not be the ideal solution, but would be much mor usable with the k8s+nginx+Loadbalancer setup.
Third solution:
have a separate application as controller, that distributes the load between the agents. The crowdrender plugin should only comunicate with the controller, while the agents also only communicate with the controller and not the blender-plugin. This would allow a much better scaling (that can be done automatically via HPA).
Stay Safe,
Alexander Weidt
Hi Alex, interesting read! Also I did reply to your issue on https://github.com/crowdrender/cr-docker/issues/3 but after reading this I seem to get the feeling you have sufficient experience to know how docker works with regards to port forwarding, so apologies if my comment wasn't actually helpful, the intention is to be helpful, just so you know :P
Before I embarrass myself further by making more comments, can I ask what your goal is with crowdrender? You're a bit off the beaten path here, most folk use Crowdrender on their local network where things are a bit, well, simpler lets say. I get the impression you're setting up something in the cloud? Or am I off track?
Looking forward to more discussion!