Sometime in the very near future, Docker is going to concede that Docker Swarm has lost and they'll have to yield the floor to Kubernetes. Either that, or they're going to double down on a losing a strategy.
There are a number of reasons Kubernetes is winning, but for the sake of simplicity, I've whittled them down to just a few for you here:
1) Kubernetes has Community Support
Kubernetes has become one of the most popular open source projects in history. It's right up there with the Linux Kernel, Chromium, and Homebrew. Given the immense amount of community involvement, the project is moving at an outrageous pace, improving constantly, releasing predictably and moving up and to the right. With regards to commits, committers, pull requests etc.... it is without a doubt, one of the most significant open source projects in recent history.
And partially as a result of the community support:
2) Kubernetes is Technically Superior
Both Kubernetes and Docker Swarm have the same core approach. Both support declarative definitions of services that are load balanced back to a variable number of containers combined with configuration settings mounted into the container. Both handle nodes joining and leaving the swarm by gracefully moving services to working nodes or expanding to new nodes.
However, the features of Kubernetes ultimately win the day:
- Better health checking with both liveness and readiness probes defined at the Pod level and not built into the image.
- Integration with cloud services for seamless use of load balancers, block storage, and instance health.
- Better container scheduling and scaling via affinity and anti-affinity, DaemonSets, auto-scaling, sidecars, taints and tolerations, and deployment update strategies.
- Namespaces with role-based access controls.
- Network security policies to control ingress and egress traffic between services.
- Extensibility with operators and custom resource definitions
3) Docker Swarm was wrongly Incentivized
As a venture capital-backed company, Docker Swarm needed to make money for Docker, which meant the best features would eventually have to be offered at a premium and held back from the open source community. Kubernetes was built and is backed by Google, a company with enough money that they can afford to put hundreds of engineers to work on it, and never need to directly charge for anything they built.
There may have once been a world where Docker Swarm and Kubernetes were peers, but Kubernetes has won, and continues to win in the market. Docker Swarm is dead. Long live Kubernetes.