There are so many options to choose from it can be a daunting task to even get started with Kubernetes. Here’s some advice depending on your goals.
1. I just want to learn Kubernetes
Install minikube on your local machine and learn kubectl and how to manage pods. Install some charts and google some howto’s for setting up an alternative ingress and monitoring. Alternatively get some Google cloud credits and go through Kubernetes The Hard Way. A cool book to read is Kubernetes Up and Running.
Also take a look at the list of Kubernetes courses available online.
2. I have a spare server at home or work
Wipe it, install some vanilla Linux distro and use kubeadm to setup Kubernetes. Many of the other solutions use Kubeadm as a building block and wrap automation around it. If you have a single box and want to learn I’d go the manual route.
3. I’m a startup on AWS
You probably don’t have a dedicated DevOps guy yet. In which case the quickest route to victory is probably Kops. Create a test cluster in your non-prod account (please say you have one of these) and get familiar with it. When ready to deploy to production create a second cluster in your prod account. Manage upgrades by testing in non-prod first. What about EKS? You don’t really gain much from using it right now.
4. I’m a DevOps person in a small company or team
You’re probably already using Terraform to manage your infrastructure. Continue this approach for provisioning the VM’s for Kubernetes and then use Kubespray to configure them. Kubespray is simply an ansible wrapper around Kubeadm.
5. I’d prefer not to manage or customise my Kubernetes clusters
Azure, AWS and GCP all have managed offerings. If you’re on Azure or GCP I’d be tempted to use AKS and GKE for your clusters. If you’re on Amazon I’d think more carefully since the EKS offering currently isn’t very good. What I mean by that is you still have to manage a lot of stuff with EKS and you’re also limited by not being able to configure the masters. Which is the worst of all worlds. I think I’d go with Kops 9 times out of 10 on AWS.
If you’re free to make a choice between cloud providers then I’d go with GKE every time. This comparison explains why.
6. I’m part of the platforms team at a large company
As far as I can tell everyone rolls their own. Kops and Kubespray are soon going to get messy when you’re running hundreds of clusters. There is an effort under way to standardise installations using cluster-api but that’s still at an early stage.