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:
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:
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:
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.