Kubernetes consists of combination of multiple open source components. These are developed by different parties, making it difficult to find and download all the related packages and install, configure, and make them work from scratch.
Fortunately, there are some different solutions and tools that have been developed to set up Kubernetes clusters effortlessly. Therefore, it is highly recommended you use such a tool to set up Kubernetes on your environment.
The following tools are categorized by different types of solution to build your own Kubernetes:
- Self-managed solutions that include:
- minikube
- kubeadm
- kubespray
- kops
- Enterprise solutions that include:
- OpenShift (https://www.openshift.com)
- Tectonic (https://coreos.com/tectonic/)
- Cloud-hosted solutions that include:
- Google Kubernetes engine (https://cloud.google.com/kubernetes-engine/)
- Amazon elastic container service for Kubernetes (Amazon EKS, https://aws.amazon.com/eks/)
- Azure Container Service (AKS, https://azure.microsoft.com/en-us/services/container-service/)
A self-managed solution is suitable if we just want to build a development environment or do a proof of concept quickly.
By using minikube (https://github.com/kubernetes/minikube) and kubeadm (https://kubernetes.io/docs/admin/kubeadm/), we can easily build the desired environment on our machine locally; however, it is not practical if we want to build a production environment.
By using kubespray (https://github.com/kubernetes-incubator/kubespray) and kops (https://github.com/kubernetes/kops), we can also build a production-grade environment quickly from scratch.
An enterprise solution or cloud-hosted solution is the easiest starting point if we want to create a production environment. In particular, the Google Kubernetes Engine (GKE), which has been used by Google for many years, comes with comprehensive management, meaning that users don't need to care much about the installation and settings. Also, Amazon EKS is a new service that was introduced at AWS re: Invent 2017, which is managed by the Kubernetes service on AWS.
Kubernetes can also run on different clouds and on-premise VMs by custom solutions. To get started, we will build Kubernetes using minikube on macOS desktop machines in this chapter.