Does Docker's Swarm container orchestration system outperform Google's Kubernetes? A recent benchmark says so, but the bigger picture is more complex.
According to a study commissioned by Docker from technology consultant Jeff Nickoloff, Swarm outperformed Kubernetes in container startup time. Most of the Swarm-managed containers started in under a second, while Kubernetes took 2 to 3 seconds.
Nickoloff documented his testing in detail, examining both container startup time and system responsiveness under load. Both services ran on a 1,000-node cluster running a maximum of 30,000 containers. On a cluster that was 90 to 99 percent full, Kubernetes startup time rose to 15 seconds, but Nickoloff discarded these results on the grounds that they were likely due to issues that are already being addressed.
Docker said Swarm's simpler architecture was a key reason for its speed. The Kubernetes stack involves interactions between six other components besides Docker, while Docker Swarm has only two others.
Short and predictable container startup times help Docker obtain operational insights from "distributed applications that need near-real-time responsiveness." With containers, says Docker, it's not enough to say a container has been scheduled to run, as Kubernetes does; it's important to know how long it actually took for the container to start.
In a blog post, Docker states, "In a world where containers may only live for a few minutes, having a significant delay in gathering real-time insight into the state of the environment means you never really know what’s happening in your infrastructure at any particular moment in time."
Not everyone saw Nickoloff's findings as a slam dunk. Kelsey Hightower, formerly of CoreOS and now with Google's Cloud Platform division (where Kubernetes originally took flight), tweeted, "Kubernetes and Docker Swarm focus on different things." Kubernetes is more of an all-in-one framework for distributed systems, and its complexity stems from offering "a unified set of APIs and strong guarantees about cluster state."
"Does Docker Swarm win in a few isolated benchmarks?" tweeted Hightower. "Yep. Can you really compare the two projects? Right now the answer is no."
Some of Nickoloff's comments reflect that as well, as he was impressed by the "remarkable" parallel container scheduling functions available in Kubernetes' replication controller, useful in environments where containers have a short lifetime. "Using a Kubernetes replication controller," wrote Nickoloff, "I was able to create 3,000 container replicas in under 155 seconds."