Blox – Open Source Tools for Amazon ECS
blox.github.io
blox.github.io
Pluggable schedulers is one of the best features that is missing from kubernetes, swarm, and nomad. All the scheduling/lifecycle algorithms are pretty naive when it comes to any stateful (DBs, kafka) or batch (hadoop, spark) services. But even for typical webapps, pluggable schedulers give you a nice place to hook into a lot of the lifecycle that makes things like pre-warming or cleanly killing sockets at scale down a lot simpler.
So this is pretty cool... and makes ECS more attractive... but I wish it was just mesos which is built around the idea of providing a framework for building schedulers and would be way more portable.
A kubernetes scheduler is akin to a mesos framework sans the executor and how you interact with them. There is a single way to interact with schedulers in k8s (via the apiserver) and there is a default "executor" which is the containerizer (docker/rkt/oci-d/etc). For proof of this, see the etcd[3] operator or prometheus[4] operators. Both etcd and prometheus are stateful services.
[1] http://kubernetes.io/docs/admin/multiple-schedulers/
[2] http://kubernetes.io/docs/admin/kube-scheduler/
[3] https://coreos.com/blog/introducing-the-etcd-operator.html
[4] https://coreos.com/blog/the-prometheus-operator.htmlA lot of our decision to go with mesos was that our first use case is running big data tools (spark, etc) which have a good bit of integration with mesos. Will be interesting to see the level of adoption of projects implementing operators
* Secret storage
* Pet sets(coming along in k8s)
* Leader election
* Persistent volumes
It looks like Blox can address some of this stuff, but kubernetes is providing this stuff OOTB.. It's also locked to vendor-specific service offerings. This isn't to say Kubernetes doesn't have room for improvement; its AWS integrations could use some work(Application Load Balancer support, etc).
But: We don't support ALB yet because we haven't actually found a compelling use-case for it. Ingress on Kubernetes seems to do everything ALB can, but without the limitations. At least that's what we've thought so far, so if you have a use case do open an issue explaining it, and we can look at adding it :-)
* Websockets support
* Http/2 support
* Layer 7 routing + Route to specific ports(stop sending all traffic to all nodes and preserve source ip)
* Request tracing(recently added to ALB)
I hope this doesn't sound too negative, and I KNOW you do a TON of work on this stuff, but there often seems a disconnect between the people working on the kubernetes integrations and the feedback coming through from people trying to run businesses on AWS. Which happens; it's tough to be in both roles if your business isn't infrastructure.
It also supports pluggable "controllers," which manage the lifecycle of containers.
(So a Kubernetes scheduler + controller is roughly equivalent to a Mesos framework scheduler; see this doc for more details: https://github.com/kubernetes/community/blob/master/contribu... )
Another recent development in this area is CoreOS operators, which leverages pluggable controllers + Third Party Resources and was previously discussed on HN: https://news.ycombinator.com/item?id=12868594
[Disclosure: I work on Kubernetes at Google.]
Amazon also funnels you into using a single container type per EC2 instance. It's not impossible to use a single EC2 instance for multiple containers, but if you desire to run multiple instances of one specific kind of container on one node, ECS doesn't make the implementation easy for you at all.
Was this related to ELBs and host ports? ELB really isn't a great fit for containers because you attach them to the instance on specific ports, which stops you from running multiple copies of a task on a single instance and also requires a lot of port janitoring between different tasks. ALBs attach via instance:port pairs, so they can actually work as a "container load balancer".
Documentation is always a moving target, but the feedback links at the bottom of documents, in the console, and feedback to CS do make it through to service teams who act upon it.
As for Freenode, AWS doesn't maintain an official presence there (same w/ AWS reddit). I understand you're probably looking for something more synchronous/interactive, but the AWS forums ( https://forums.aws.amazon.com ) are the official place for getting public feedback from AWS.
Granted, there's a lot of advantage to building on top of an infrastructure that can be installed on any hardware from any provider. However, we're not talking about rewriting your applications if you need to move away from ECS; it's all still the same containers. Going from ECS to Mesos or Kubernetes when needed is a matter of writing new config files.
It's a very attractive proposition for small teams on AWS who are trying to spend minimal time on ops.