Peloton: Uber’s Unified Resource Scheduler for Diverse Cluster Workloads
eng.uber.com
eng.uber.com
Feels like a semi-weird justification for NIH. Isn't there pretty active work in addressing most/all of those objections in k8s?
In its current form Kubernetes can only handle a cluster size of 5,000 nodes: https://kubernetes.io/docs/setup/cluster-large/ and high-churn batch workloads don't work well.
Kubernetes does support elastic resource sharing (assuming I understand what they need) via horizontal pod scaling and the cluster autoscaler: https://github.com/kubernetes/autoscaler/tree/master/cluster.... Although there are rough edges here, I was surprised by the quality of the code in the cluster autoscaler. I kept thinking of new edge cases and expected it to fall over, only to find out that they'd thought of that problem and it handled it gracefully.
For batch workloads something like Argo can help: https://github.com/argoproj/argo.
So basically I agree, it probably would've made more sense to build something on top of Kubernetes. But Uber's a big company with a lot of engineers so I guess they have the resources to roll their own solution.
I feel like this isn't possible outside of Google. I've never had good performance (well any performance that you would feel comfortable running a database on) on any storage medium that wasn't POSIX disk I/O. I may be ignorant, but I've never seen a good disintermediate storage solution that is performant on something like AWS.
Well - sorta. Cluster FS just means disk I/O is now network I/O (EBS is a bit like this). Now you push the hairy problem to a different area: your network topology starts to matter a lot. You might end up having to think about not scheduling too many I/O heavy jobs behind the same switch or something. AND disk I/O is now competing with network I/O. AND it might now be hard to predict the destination of where all that I/O is going to be when scheduling the job, whereas previously it used to just be local.
So the problem doesn't go away. But maybe you say it's just easier to wire everything up with gigE / infiniband so that you're massively under-capacity, and call it a day, and that might be a fair tradeoff.