Kubernetes can run on various platforms: from your laptop, to VMs on a cloud provider, to a rack of bare metal servers. The effort required to set up a cluster varies from running a single command to crafting your own customized cluster. Use this guide to choose a solution that fits your needs.
If you just want to “kick the tires” on Kubernetes, use the local Docker-based solution using MiniKube.
When you are ready to scale up to more machines and higher availability, a hosted solution is the easiest to create and maintain.
Turnkey cloud solutions require only a few commands to create and cover a wide range of cloud providers. On-Premises turnkey cloud solutions have the simplicity of the turnkey cloud solution combined with the security of your own private network.
If you already have a way to configure hosting resources, use kubeadm to easily bring up a cluster with a single command per machine.
Custom solutions vary from step-by-step instructions to general advice for setting up a Kubernetes cluster from scratch.
Minikube is the recommended method for creating a local, single-node Kubernetes cluster for development and testing. Setup is completely automated and doesn’t require a cloud provider account.
Kubeadm-dind is a multi-node (while minikube is single-node) Kubernetes cluster which only requires a docker daemon. It uses docker-in-docker technique to spawn the Kubernetes cluster.
Ubuntu on LXD supports a nine-instance deployment on localhost.
IBM Cloud Private-CE (Community Edition) can use VirtualBox on your machine to deploy Kubernetes to one or more VMs for development and test scenarios. Scales to full multi-node cluster.
Google Kubernetes Engine offers managed Kubernetes clusters.
Amazon Elastic Container Service for Kubernetes offers managed Kubernetes service.
Azure Container Service can easily deploy Kubernetes clusters.
Stackpoint.io provides Kubernetes infrastructure automation and management for multiple public clouds.
AppsCode.com provides managed Kubernetes clusters for various public clouds, including AWS and Google Cloud Platform.
KUBE2GO.io get started with highly available Kubernetes clusters on multiple public clouds along with useful tools for development, debugging, monitoring.
Madcore.Ai is devops-focused CLI tool for deploying Kubernetes infrastructure in AWS. Master, auto-scaling group nodes with spot-instances, ingress-ssl-lego, Heapster, and Grafana.
Platform9 offers managed Kubernetes on-premises or on any public cloud, and provides 24/7 health monitoring and alerting.
OpenShift Dedicated offers managed Kubernetes clusters powered by OpenShift.
OpenShift Online provides free hosted access for Kubernetes applications.
IBM Cloud Container Service offers managed Kubernetes clusters with isolation choice, operational tools, integrated security insight into images and containers, and integration with Watson, IoT, and data.
Giant Swarm offers managed Kubernetes clusters in their own datacenter, on-premises, or on public clouds.
Kubermatic provides managed Kubernetes clusters for various public clouds, including AWS and Digital Ocean, as well as on-premises with OpenStack integration.
These solutions allow you to create Kubernetes clusters on a range of Cloud IaaS providers with only a few commands. These solutions are actively developed and have active community support.
These solutions allow you to create Kubernetes clusters on your internal, secure, cloud network with only a few commands.
Kubernetes can run on a wide range of Cloud providers and bare-metal environments, and with many base operating systems.
If you can find a guide below that matches your needs, use it. It may be a little out of date, but it will be easier than starting from scratch. If you do want to start from scratch, either because you have special requirements, or just because you want to understand what is underneath a Kubernetes cluster, try the Getting Started from Scratch guide.
If you are interested in supporting Kubernetes on a new platform, see Writing a Getting Started Guide.
If you already have a way to configure hosting resources, use kubeadm to easily bring up a cluster with a single command per machine.
These solutions are combinations of cloud providers and operating systems not covered by the above solutions.
These solutions provide integration with third-party schedulers, resource managers, and/or lower level platforms.
Below is a table of all of the solutions listed above.
IaaS Provider | Config. Mgmt. | OS | Networking | Docs | Support Level |
---|---|---|---|---|---|
any | any | multi-support | any CNI | docs | Project (SIG-cluster-lifecycle) |
Google Kubernetes Engine | GCE | docs | Commercial | ||
Stackpoint.io | multi-support | multi-support | docs | Commercial | |
AppsCode.com | Saltstack | Debian | multi-support | docs | Commercial |
KUBE2GO.io | multi-support | multi-support | docs | Commercial | |
Madcore.Ai | Jenkins DSL | Ubuntu | flannel | docs | Community (@madcore-ai) |
Platform9 | multi-support | multi-support | docs | Commercial | |
Kubermatic | multi-support | multi-support | docs | Commercial | |
Giant Swarm | CoreOS | flannel and/or Calico | docs | Commercial | |
GCE | Saltstack | Debian | GCE | docs | Project |
Azure Container Service | Ubuntu | Azure | docs | Commercial | |
Azure (IaaS) | Ubuntu | Azure | docs | Community (Microsoft) | |
Bare-metal | Ansible | Fedora | flannel | docs | Project |
Bare-metal | custom | Fedora | none | docs | Project |
Bare-metal | custom | Fedora | flannel | docs | Community (@aveshagarwal) |
libvirt | custom | Fedora | flannel | docs | Community (@aveshagarwal) |
KVM | custom | Fedora | flannel | docs | Community (@aveshagarwal) |
Mesos/Docker | custom | Ubuntu | Docker | docs | Community (Kubernetes-Mesos Authors) |
Mesos/GCE | docs | Community (Kubernetes-Mesos Authors) | |||
DCOS | Marathon | CoreOS/Alpine | custom | docs | Community (Kubernetes-Mesos Authors) |
AWS | CoreOS | CoreOS | flannel | docs | Community |
GCE | CoreOS | CoreOS | flannel | docs | Community (@pires) |
Vagrant | CoreOS | CoreOS | flannel | docs | Community (@pires, @AntonioMeireles) |
Bare-metal (Offline) | CoreOS | CoreOS | flannel | docs | Community (@jeffbean) |
CloudStack | Ansible | CoreOS | flannel | docs | Community (@sebgoa) |
Vmware vSphere | Saltstack | Debian | OVS | docs | Community (@imkin) |
Bare-metal | custom | CentOS | flannel | docs | Community (@coolsvap) |
lxd | Juju | Ubuntu | flannel/canal | docs | Commercial and Community |
AWS | Juju | Ubuntu | flannel/calico/canal | docs | Commercial and Community |
Azure | Juju | Ubuntu | flannel/calico/canal | docs | Commercial and Community |
GCE | Juju | Ubuntu | flannel/calico/canal | docs | Commercial and Community |
Oracle Cloud | Juju | Ubuntu | flannel/calico/canal | docs | Commercial and Community |
Rackspace | Juju | Ubuntu | flannel/calico/canal | docs | Commercial and Community |
Vmware vSphere | Juju | Ubuntu | flannel/calico/canal | docs | Commercial and Community |
Bare Metal | Juju | Ubuntu | flannel/calico/canal | docs | Commercial and Community |
AWS | Saltstack | Debian | AWS | docs | Community (@justinsb) |
AWS | kops | Debian | AWS | docs | Community (@justinsb) |
Bare-metal | custom | Ubuntu | flannel | docs | Community (@resouer, @WIZARD-CXY) |
oVirt | docs | Community (@simon3z) | |||
any | any | any | any | docs | Community (@erictune) |
any | any | any | any | docs | Commercial and Community |
Note: The above table is ordered by version test/used in nodes, followed by support level.