<p>I am trying to finally choose between Spring Cloud Netflix, Kubernetes and Swarm for building our microservices environment. They are all very cool and do some choice is very hard. 
I'll describe a little which kind of problems I want to solve.
I couldn't find any best way to design Api Gateway (not a simple load balancer) with Kubernetes or Swarm , that's why I want to use Zuul. But from other side Api Gateway must use service discovery which in case of Kubernetes or Swarm will be embedded inside the orchestra. With Kubernetes I can use it's spring cloud integration, but this way I will have server side discovery and client side discovery inside Kubernetes. Which is overkill I think. 
I am wondering does anyone have some experience with them and any suggestions about that.
Thanks.</p>

<p>Kubernetes and Docker Swarm are container orchestration tools.
Spring Cloud is a collection of tools to build microservices/streaming architectures.
There is a bit of overlap, like service discovery, gateway or configuration services. But you could use Spring Cloud without containers and deploy the jars yourself without needing Kuberentes or Swarm.</p>

<p>So you'll have to choose between Kubernetes and Swarm for the orchestration of your containers, if you'll use containers.</p>

<p>Comparison: <a href="https://dzone.com/articles/deploying-microservices-spring-cloud-vs-kubernetes" rel="noreferrer">https://dzone.com/articles/deploying-microservices-spring-cloud-vs-kubernetes</a></p>
