I recommend Rancher for the small business that wants to roll their own Kubernetes for free. Rancher 2 is a bit underdocumented right now, but we had great success with Rancher 1.
Your bare metal hosts can be provisioned as Rancher hosts, which are dumb slaves managed by a Rancher server.
From the Rancher server, you can trivially express "I want this Docker container deployed across n Rancher hosts" or "I want 1 instance of this docker container across all Rancher hosts with the tag "has public IP".
You can group your Rancher hosts into Sandbox and Prod Rancher environments. You can easily install Rancher's load balancer service on them, or mount network storage, or register secrets upon them (like private Docker registry keys).
It also gives you health checks, host monitoring, and zero downtime redeploys. Super easy to use from the UI or CLI. Easy to install, too.
Rancher 1 is superb. After testing Rancher 2 for a couple of weeks I feel sad that they spent time on developing this instead of working on enhancing Rancher 1.
I can't seem to find what I can do with Rancher 2 admin panel that I cannot do with what is shipped with Kubernetes. It actually feels more limited and buggy.
After those couple of weeks of studying documenations and blog posts I gave up. I was not able to setup any app.
Rancher 1 works like a charm. I would have used it for my new projects, but since they are not likely going to develop it I might just go with stock Kubernetes.
I've also been testing out Rancher recently and I got way further in my testing of it than I did in my test deploy of a kubernetes cluster using the install docs from Kubernetes. I got closer with kubespray, but had to put it down to work on some other things before I got anything useful set up. I hope to be getting back to my Rancher test this week.
I spent a lot of time setting up a private docker registry, before I realized that I probably could have used one from AWS.
I currently use kubeadm for our small business cluster. 1 master and 2 nodes. We haven't put a ton into it but it seems to be running pretty well so far. Have done an upgrade from 1.7 to 1.9 without much/any downtime. Is there much more of a learning curve with Rancher?
Rancher 1 is extremely easy to learn. Generally you do everything from the UI (I only use the CLI to view combined logs). High-availability is easy too; they provide a load-balancer (haproxy) with good UI integration.
Rancher 2 has a nicer UI and is more tightly related to Kubernetes. But there are moreorless zero docs, so be careful.
With either version: it's trivial to grab the master and node Docker images, and deploy them to your local machine to have a play.
Rancher is free and open source. Their Docker images are publicly available. I assume Rancher Labs sell support, but we did not buy support, nor did we need any.
Your bare metal hosts can be provisioned as Rancher hosts, which are dumb slaves managed by a Rancher server.
From the Rancher server, you can trivially express "I want this Docker container deployed across n Rancher hosts" or "I want 1 instance of this docker container across all Rancher hosts with the tag "has public IP".
You can group your Rancher hosts into Sandbox and Prod Rancher environments. You can easily install Rancher's load balancer service on them, or mount network storage, or register secrets upon them (like private Docker registry keys).
It also gives you health checks, host monitoring, and zero downtime redeploys. Super easy to use from the UI or CLI. Easy to install, too.