DEV Community

Joe Hobot
Joe Hobot

Posted on

Deploy Kubernetes Cluster in less than 15-20m Almost Prod Ready

There are many ways to deploy kubernetes these days to most cloud providers such as AWS, Google Cloud, Azure and or Baremetal.

My favorite one to do for sake of POC (Proof of Concept) is by utilizing a tool called EKSCLI by Waveworks.

It is extremely easy to setup and you don't have to muck around with almost anything as long as you have requirements set as they describe.

Here is YT video I made on full deploy of EKS Cluster + some random tips.

Moving on to some other tools...

Kubespray, configuration is somewhat simple however it takes time to set it up right as it is using Ansible in the background. You have to setup servers/ssh keys etc, it took me about 1hr to set all of it up with 3 master and 6 worker nodes , with some help of terraform to standup EC2 instances etc..

KOPS is yet another tool similar to EKSCLI however its utilizing ec2 instances in AWS vs EKS. Super easy to configure a and could have a cluster up in matter of 20-30m, they also say its Production ready.. (that all depends on what someone considers a K8s "Production Ready")

JX - This is something I've been playing for a while now as it supports most cloud providers that I 'play' with including my local copy of minikube, but it's not just that!
JX provides you jenkins X CI/CD pipeline with some examples to get you going, including hooks into your Github and deploys an app. So if you are Dev this is probably something you will like most of them all.

Let me know if you know of any other automation tools for deploying Kubernetes Cluster.

Top comments (12)

Collapse
 
jgallucci32 profile image
jgallucci32 • Edited

We have been using Rancher for dev environments for over 2 years and recently in production. In every case we are able to get a new kubernetes cluster with multiple nodes deployed in less than 20 minutes. We've deployed successfully to AWS, Azure, Eucalyptus, Azure Stack and VMware all using the same deployment method. See rancher.com for product details.

Collapse
 
sygibson profile image
Shane Gibson

Joe - great article on Kubernetes deployment! Thanks for putting this together.

I'd like to point out a few other resources as well. For cluster deployment of Kubernetes, there is also a tool called "Kubeadm". This tool is designed to very very quickly allow you to build Kubernetes clusters and handle the node admission pattern of workers in to the cluster.
Kubeadm Resources

There is also an Open Source tool called Digital Rebar Provision (DRP), which provides bare metal provisioning and control of hardware infrastructure. DRP uses "Workflows" to do additional things beyond operating system deployments. One of those examples is a content pack called "KRIB" (Kubernetes Rebar Integrated Bootstrap, coupled with a Terraform Provider for DRP - that makes zero-touch Kubernetes clusters on Bare Metal completely possible.
DRP Terraform Kubernetes in 8 minutes - youtube video

This pattern provides a Zero to Kubernetes experience on bare metal in 8 minutes. There are several new deployment options in DRP that will radically reduce that time - but there aren't any demo videos of that process yet (image deployment, and zero reboot with Kernel Kexec pattern). We believe this time can be driven down closer to 4 minutes with these new patterns.

The Kubespray pattern is a great solution for a highly customized deployment. In fact - DRP also supports deploying Kubernetes via the Kubespray playbooks - so that is also an option. In our experience, we've found that Kubespray can be exceptionally slow, and sometimes can take as much as 30 minutes to complete. Outside of the time issue, it is a good tool.

For transparency purposes - I work on the DRP Open Source project. I am a contributor to both DRP and the content packs mentioned above.
Digital Rebar Provision Github Repo
Digital Rebar Provision Website

Collapse
 
joehobot profile image
Joe Hobot

Awesome share.
I'll take a look at DRP..

we've found that Kubespray can be exceptionally slow

YES! :)

Collapse
 
sandyverden profile image
sandyverden

How about conjure-up or Juju by canonical Ubuntu?

Collapse
 
joehobot profile image
Joe Hobot • Edited

I did try Juju on aws and gce. I guess I forgot to mention that one / whoops /

Collapse
 
mbeacom profile image
Mark Beacom • Edited

JX uses ekscli under the hood when you pass provider=eks

Collapse
 
dhinesh2287 profile image
dhinesh2287

Hi Joe Hobot
This is dhinesh we are deployed our applications in kubernetes using KOPS method we want to autoscale my node instance when ever the load increases or insufficient space on the current node can anyone guide me how to achieve that . In my case pod level autoscaling working but i want to achieve that in node level too

Collapse
 
sly4 profile image
sly4

Have you tried Kubic?

Collapse
 
joehobot profile image
Joe Hobot

I looked into it but have not made an attempt to try it yet. Maybe a weekend project to see what’s all about.

Collapse
 
chfrankcgn profile image
Christian Frank

TK8 by the Kubernauts - great command line tool, written in Go.
github.com/kubernauts/tk8
kubernauts.io

Collapse
 
joehobot profile image
Joe Hobot

Thanks for Sharing

Collapse
 
bhagyashreemohan profile image
bhagyashreemohan • Edited

Hi joe I'm implementing kubespray I want to do that in aws eks can you share docs with terraform pls.