Edit This Page

Picking the Right Solution

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

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.

Local-machine Solutions

Hosted Solutions

Turnkey Cloud Solutions

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.

On-Premises turnkey cloud solutions

These solutions allow you to create Kubernetes clusters on your internal, secure, cloud network with only a few commands.

Custom Solutions

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.

On-Premises VMs

Bare Metal


These solutions provide integration with third-party schedulers, resource managers, and/or lower level platforms.

Table of Solutions

Below is a table of all of the solutions listed above.

IaaS ProviderConfig. Mgmt.OSNetworkingDocsSupport Level
anyanymulti-supportany CNIdocsProject (SIG-cluster-lifecycle)
Google Kubernetes EngineGCEdocsCommercial
Docker Enterprisecustommulti-supportmulti-supportdocsCommercial
IBM Cloud PrivateAnsiblemulti-supportmulti-supportdocsCommercial and Community
Red Hat OpenShiftAnsible & CoreOSRHEL & CoreOSmulti-supportdocsCommercial
Madcore.AiJenkins DSLUbuntuflanneldocsCommunity (@madcore-ai)
IBM Cloud Kubernetes ServiceUbuntuIBM Cloud Networking + CalicodocsCommercial
Giant SwarmCoreOSflannel and/or CalicodocsCommercial
Azure Kubernetes ServiceUbuntuAzuredocsCommercial
Azure (IaaS)UbuntuAzuredocsCommunity (Microsoft)
Bare-metalcustomFedoraflanneldocsCommunity (@aveshagarwal)
libvirtcustomFedoraflanneldocsCommunity (@aveshagarwal)
KVMcustomFedoraflanneldocsCommunity (@aveshagarwal)
DCOSMarathonCoreOS/AlpinecustomdocsCommunity (Kubernetes-Mesos Authors)
GCECoreOSCoreOSflanneldocsCommunity (@pires)
VagrantCoreOSCoreOSflanneldocsCommunity (@pires, @AntonioMeireles)
CloudStackAnsibleCoreOSflanneldocsCommunity (@sebgoa)
VMware vSphereanymulti-supportmulti-supportdocsCommunity
Bare-metalcustomCentOSflanneldocsCommunity (@coolsvap)
lxdJujuUbuntuflannel/canaldocsCommercial and Community
AWSJujuUbuntuflannel/calico/canaldocsCommercial and Community
AzureJujuUbuntuflannel/calico/canaldocsCommercial and Community
GCEJujuUbuntuflannel/calico/canaldocsCommercial and Community
Oracle CloudJujuUbuntuflannel/calico/canaldocsCommercial and Community
VMware vSphereJujuUbuntuflannel/calico/canaldocsCommercial and Community
Bare MetalJujuUbuntuflannel/calico/canaldocsCommercial and Community
AWSSaltstackDebianAWSdocsCommunity (@justinsb)
AWSkopsDebianAWSdocsCommunity (@justinsb)
Bare-metalcustomUbuntuflanneldocsCommunity (@resouer, @WIZARD-CXY)
oVirtdocsCommunity (@simon3z)
anyanyanyanydocsCommunity (@erictune)
anyanyanyanydocsCommercial and Community
anyRKEmulti-supportflannel or canaldocsCommercial and Community
anyGardener Cluster-Operatormulti-supportmulti-supportdocsProject/Community and Commercial
Alibaba Cloud Container Service For KubernetesROSCentOSflannel/TerwaydocsCommercial
Agile StacksTerraformCoreOSmulti-supportdocsCommercial
IBM Cloud Kubernetes ServiceUbuntucalicodocsCommercial
Digital RebarkubeadmanymetaldocsCommunity (@digitalrebar)
VMware Cloud PKSPhoton OSCanaldocsCommercial
Mirantis Cloud PlatformSaltUbuntumulti-supportdocsCommercial
Note: The above table is ordered by version test/used in nodes, followed by support level.

Definition of columns