website/content/en/docs/setup/pick-right-solution.md

26 KiB

reviewers title weight content_template card
brendandburns
erictune
mikedanese
Picking the Right Solution 10 templates/concept
name weight anchors
setup 20
anchor title
#hosted-solutions Hosted Solutions
anchor title
#turnkey-cloud-solutions Turnkey Cloud Solutions
anchor title
#on-premises-turnkey-cloud-solutions On-Premises Solutions
anchor title
#custom-solutions Custom Solutions
anchor title
#local-machine-solutions Local Machine

{{% capture overview %}}

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.

{{% /capture %}}

{{% capture body %}}

Local-machine Solutions

Community Supported Tools

  • Minikube is a 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.

  • Kubernetes IN Docker is a tool for running local Kubernetes clusters using Docker container "nodes". It is primarily designed for testing Kubernetes 1.11+. You can use it to create multi-node or multi-control-plane Kubernetes clusters.

Ecosystem Tools

  • CDK on LXD supports a nine-instance deployment on localhost with LXD containers.

  • Docker Desktop is an easy-to-install application for your Mac or Windows environment that enables you to start coding and deploying in containers in minutes on a single-node Kubernetes cluster.

  • Minishift installs the community version of the Kubernetes enterprise platform OpenShift for local development & testing. It offers an all-in-one VM (minishift start) for Windows, macOS, and Linux. The container start is based on oc cluster up (Linux only). You can also install the included add-ons.

  • MicroK8s provides a single command installation of the latest Kubernetes release on a local machine for development and testing. Setup is quick, fast (~30 sec) and supports many plugins including Istio with a single command.

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

  • IBM Cloud Private-CE (Community Edition) on Linux Containers is a Terraform/Packer/BASH based Infrastructure as Code (IaC) scripts to create a seven node (1 Boot, 1 Master, 1 Management, 1 Proxy and 3 Workers) LXD cluster on Linux Host.

  • k3s is a lightweight production-grade Kubernetes distribution. With a super-simple installation process and a binary footprint around 40MB, it is ideal for local-machine development.

  • Ubuntu on LXD supports a nine-instance deployment on localhost.

Hosted Solutions

  • AppsCode.com provides managed Kubernetes clusters for various public clouds, including AWS and Google Cloud Platform.

  • APPUiO runs an OpenShift public cloud platform, supporting any Kubernetes workload. Additionally APPUiO offers Private Managed OpenShift Clusters, running on any public or private cloud.

  • Amazon Elastic Container Service for Kubernetes offers managed Kubernetes service.

  • Azure Kubernetes Service offers managed Kubernetes clusters.

  • Containership Kubernetes Engine (CKE) intuitive Kubernetes cluster provisioning and management on GCP, Azure, AWS, Packet, and DigitalOcean. Seamless version upgrades, autoscaling, metrics, workload creation, and more.

  • DigitalOcean Kubernetes offers managed Kubernetes service.

  • Giant Swarm offers managed Kubernetes clusters in their own datacenter, on-premises, or on public clouds.

  • Google Kubernetes Engine offers managed Kubernetes clusters.

  • IBM Cloud Kubernetes Service offers managed Kubernetes clusters with isolation choice, operational tools, integrated security insight into images and containers, and integration with Watson, IoT, and data.

  • Kubermatic provides managed Kubernetes clusters for various public clouds, including AWS and Digital Ocean, as well as on-premises with OpenStack integration.

  • Kublr offers enterprise-grade secure, scalable, highly reliable Kubernetes clusters on AWS, Azure, GCP, and on-premise. It includes out-of-the-box backup and disaster recovery, multi-cluster centralized logging and monitoring, and built-in alerting.

  • KubeSail is an easy, free way to try Kubernetes.

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

  • Nutanix Karbon is a multi-cluster, highly available Kubernetes management and operational platform that simplifies the provisioning, operations, and lifecycle management of Kubernetes.

  • OpenShift Dedicated offers managed Kubernetes clusters powered by OpenShift.

  • OpenShift Online provides free hosted access for Kubernetes applications.

  • Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) is a fully-managed, scalable, and highly available service that you can use to deploy your containerized applications to the cloud.

  • Platform9 offers managed Kubernetes service that works on-premises or on any public cloud, with 99.9% SLA guarantee.

  • Stackpoint.io provides Kubernetes infrastructure automation and management for multiple public clouds.

  • SysEleven MetaKube offers managed Kubernetes as a service powered on our OpenStack public cloud. It includes lifecycle management, administration dashboards, monitoring, autoscaling and much more.

  • VEXXHOST VEXXHOST proudly offers Certified Kubernetes on their public cloud, which also happens to be the largest OpenStack public cloud in Canada.

  • VMware Cloud PKS is an enterprise Kubernetes-as-a-Service offering in the VMware Cloud Services portfolio that provides easy to use, secure by default, cost effective, SaaS-based Kubernetes clusters.

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.

Universal

If you already have a way to configure hosting resources, use kubeadm to bring up a cluster with a single command per machine.

Cloud

These solutions are combinations of cloud providers and operating systems not covered by the above solutions.

On-Premises VMs

Bare Metal

Integrations

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

  • DCOS
    • Community Edition DCOS uses AWS
    • Enterprise Edition DCOS supports cloud hosting, on-premises VMs, and bare metal

Table of Solutions

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

IaaS Provider Config. Mgmt. OS Networking Docs Support Level
Agile Stacks Terraform CoreOS multi-support docs Commercial
Alibaba Cloud Container Service For Kubernetes ROS CentOS flannel/Terway docs Commercial
any any multi-support any CNI docs Project (SIG-cluster-lifecycle)
any any any any docs Community (@erictune)
any any any any docs Commercial and Community
any RKE multi-support flannel or canal docs Commercial and Community
any Gardener Cluster-Operator multi-support multi-support docs Project/Community and Commercial
AppsCode.com Saltstack Debian multi-support docs Commercial
AWS CoreOS CoreOS flannel docs Community
AWS Saltstack Debian AWS docs Community (@justinsb)
AWS kops Debian AWS docs Community (@justinsb)
AWS Juju Ubuntu flannel/calico/canal docs Commercial and Community
Azure Juju Ubuntu flannel/calico/canal docs Commercial and Community
Azure (IaaS) Ubuntu Azure docs Community (Microsoft)
Azure Kubernetes Service Ubuntu Azure docs Commercial
Bare-metal custom CentOS flannel docs Community (@coolsvap)
Bare-metal custom Fedora none docs Project
Bare-metal custom Fedora flannel docs Community (@aveshagarwal)
Bare Metal Juju Ubuntu flannel/calico/canal docs Commercial and Community
Bare-metal custom Ubuntu flannel docs Community (@resouer, @WIZARD-CXY)
CloudStack Ansible CoreOS flannel docs Community (@sebgoa)
DCOS Marathon CoreOS/Alpine custom docs Community (Kubernetes-Mesos Authors)
Digital Rebar kubeadm any metal docs Community (@digitalrebar)
Docker Enterprise custom multi-support multi-support docs Commercial
Giant Swarm CoreOS flannel and/or Calico docs Commercial
GCE CoreOS CoreOS flannel docs Community (@pires)
GCE Juju Ubuntu flannel/calico/canal docs Commercial and Community
GCE Saltstack Debian GCE docs Project
Google Kubernetes Engine GCE docs Commercial
IBM Cloud Kubernetes Service Ubuntu IBM Cloud Networking + Calico docs Commercial
IBM Cloud Kubernetes Service Ubuntu calico docs Commercial
IBM Cloud Private Ansible multi-support multi-support docs Commercial and Community
Kublr custom multi-support multi-support docs Commercial
Kubermatic multi-support multi-support docs Commercial
KVM custom Fedora flannel docs Community (@aveshagarwal)
libvirt custom Fedora flannel docs Community (@aveshagarwal)
lxd Juju Ubuntu flannel/canal docs Commercial and Community
Madcore.Ai Jenkins DSL Ubuntu flannel docs Community (@madcore-ai)
Mirantis Cloud Platform Salt Ubuntu multi-support docs Commercial
Oracle Cloud Infrastructure Juju Ubuntu flannel/calico/canal docs Commercial and Community
Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) multi-support docs Commercial
oVirt docs Community (@simon3z)
Platform9 multi-support multi-support docs Commercial
Rackspace custom CoreOS flannel/calico/canal docs Commercial
Red Hat OpenShift Ansible & CoreOS RHEL & CoreOS multi-support docs Commercial
Stackpoint.io multi-support multi-support docs Commercial
Vagrant CoreOS CoreOS flannel docs Community (@pires, @AntonioMeireles)
VMware vSphere any multi-support multi-support docs Community
VMware vSphere Juju Ubuntu flannel/calico/canal docs Commercial and Community
VMware Cloud PKS Photon OS Canal docs Commercial
VMware Enterprise PKS BOSH Ubuntu VMware NSX-T/flannel docs Commercial
VMware Essential PKS any multi-support multi-support docs Commercial

Definition of columns

  • IaaS Provider is the product or organization which provides the virtual or physical machines (nodes) that Kubernetes runs on.
  • OS is the base operating system of the nodes.
  • Config. Mgmt. is the configuration management system that helps install and maintain Kubernetes on the nodes.
  • Networking is what implements the networking model. Those with networking type none may not support more than a single node, or may support multiple VM nodes in a single physical node.
  • Support Levels
    • Project: Kubernetes committers regularly use this configuration, so it usually works with the latest release of Kubernetes.
    • Commercial: A commercial offering with its own support arrangements.
    • Community: Actively supported by community contributions. May not work with recent releases of Kubernetes.
    • Inactive: Not actively maintained. Not recommended for first-time Kubernetes users, and may be removed.
  • Notes has other relevant information, such as the version of Kubernetes used.

{{% /capture %}}