I think this is what you're looking for - the agent integration
None
Hi @<1523701083040387072:profile|UnevenDolphin73> , this is the K8s integration. You can find more here:
None
Hey @<1523701070390366208:profile|CostlyOstrich36> , thanks for the reply!
I’m familiar with the above repo, we have the ClearML Server and such deployed on K8s.
What’s lacking is documentation regarding the clearml-agent helm chart. What exactly does it offer, etc.
We’re interested in e.g. using karpenter to scale our deployments per demand, effectively replacing the AWS autoscaler.
Anything else you’d recommend paying attention to when setting the clearml-agent helm chart?
it’s usually needed for autoscaler to decide when and how to scale up and down
about clearml-agent, just set resources in basepodtemplate (cpu gpu ram) so you will have a specific definition
in Enterprise we support multiqueueing but it’s a different story
Does it make sense to you to run several such glue instances, to manage multiple resource requirements?
Yes, I’ve found that too (as mentioned, I’m familiar with the repository). My issue is still that there is documentation as to what this actually offers.
Is this simply a helm chart to run an agent on a single pod? Does it scale in any way? Basically - is it a simple agent (similiar to on-premise agents, running in the background, but here on K8s), or is it a more advanced one that offers scaling features? What is it intended for, and how does it work?
The official documentation are very sparse about all of this, and only offers the variables that one can tweak, rather than an explanation about it actually offers.
Maybe @<1523701827080556544:profile|JuicyFox94> can answer some questions then…
For example, what’s the difference between agentk8sglue.nodeSelector
and agentk8sglue.basePodTemplate.nodeSelector
?
Am I correct in understanding that the former decides the node type that runs the “scaler” (listening to the given agentk8sglue.queue
), and the latter for any new booted instance/pod, that will actually run the agent and the task?
Read: The former can be kept lightweight, as it does no heavy computations, the latter should have bigger resources?
We’re using karpenter
(more magic keywords for me), so my understanding is that that will manage the scaling part.
About nodeSelector
you are right, one is for the agent pod while the other is used to spawn task pods
But... Which queue does it listen to, and which type of instances will it use etc
@<1523701083040387072:profile|UnevenDolphin73> , basically, it scales to as many pods as you like. Very similar to the autoscaler but on top of K8s
Right, so where can one find documentation about it?
The repo just has the variables with not much explanations.
I think that's what's there. In the Scale & Enterprise version ClearML usually works together with customers to provide a glue layer for K8s or even SLURM
about autoscaling it’s a complex topic regarding platform management in this case. ClearML glue simply spawn pods with resources defined in template.
It's all configured by the helm chart, it is the glue layer between K8s & ClearML
on OSS it’s usually the only way to as many agent deployments for any queue you define
this will make autoscaler life easier knowiing exactly how much resources you need
you will probably need a metrics-server on your k8s
Perfect, thanks for the answers Valeriano. These small stuff are missing from the documentation, but I now feel much more confident in setting this up.
(and any queue has it’s only basepodtemplate)
how you cluster reacts is about scaling infra as much as needed (karpenter or any other cloud autoscaler should work)