26 KiB
reviewers | title | weight | content_template | card | ||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Picking the Right Solution | 10 | templates/concept |
|
{{% 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 onoc 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.
- Agile Stacks
- Alibaba Cloud
- APPUiO
- AWS
- Azure
- CenturyLink Cloud
- Conjure-up Kubernetes with Ubuntu on AWS, Azure, Google Cloud, Oracle Cloud
- Containership
- Docker Enterprise
- Gardener
- Giant Swarm
- Google Compute Engine (GCE)
- IBM Cloud
- k3s
- Kontena Pharos
- Kubermatic
- Kublr
- Madcore.Ai
- Nirmata
- Nutanix Karbon
- Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE)
- Pivotal Container Service
- Platform9 Managed Kubernetes as a Service
- Rancher
- Stackpoint.io
- Supergiant.io
- VEXXHOST
- VMware Cloud PKS
- VMware Enterprise PKS
On-Premises turnkey cloud solutions
These solutions allow you to create Kubernetes clusters on your internal, secure, cloud network with only a few commands.
- Agile Stacks
- APPUiO
- Docker Enterprise
- Giant Swarm
- GKE On-Prem | Google Cloud
- IBM Cloud Private
- k3s
- Kontena Pharos
- Kubermatic
- Kublr
- Mirantis Cloud Platform
- Nirmata
- OpenShift Container Platform (OCP) by Red Hat
- Pivotal Container Service
- Platform9 Managed Kubernetes as a Service
- Rancher
- SUSE CaaS Platform
- SUSE Cloud Application Platform
- VMware Enterprise PKS
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.
- Cloud Foundry Container Runtime (CFCR)
- Gardener
- Kublr
- Kubernetes on Ubuntu
- Kubespray
- Rancher Kubernetes Engine (RKE)
- VMware Essential PKS
On-Premises VMs
- Cloud Foundry Container Runtime (CFCR)
- CloudStack (uses Ansible)
- Fedora (Multi Node) (uses Fedora and flannel)
- Nutanix AHV
- OpenShift Container Platform (OCP) Kubernetes platform by Red Hat
- oVirt
- Platform9 Managed Kubernetes as a Service works on any infrastructure: on-premises, bare metal, or private/hybrid cloud.
- VMware Essential PKS
- VMware vSphere
- VMware vSphere, OpenStack, or Bare Metal (uses Juju, Ubuntu and flannel)
Bare Metal
- Digital Rebar
- Docker Enterprise
- Fedora (Single Node)
- Fedora (Multi Node)
- k3s
- Kubernetes on Ubuntu
- Kubernetes on Ubuntu
- OpenShift Container Platform (OCP) Kubernetes platform by Red Hat
- Platform9 Managed Kubernetes as a Service works on any infrastructure: on-premises, bare metal, or private/hybrid cloud.
- VMware Essential PKS
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 %}}