When I heard the news of recent available managed Kubernetes in Digital Ocean, I was eager to try it. A few months later, Kubernetes in Singapore zone is available. Soon after, I have been using it for more than 2 years and slowly move new projects to Kubernetes. There are the feedbacks I have, the difficulties I have encountered in these two years.

Background

Before using managed Kubernetes, I was using monolithic architecture in most of my projects and have little experience in the docker, Kubernetes technology. I only used Minikube locally as a playground. I had tried to set up my bare-bone Kubernetes once with a few virtual machines, but it was extremely troublesome and turned out to be a big failure.

Easy to kick start, difficult to setup

Compare to setting up / installing Kubernetes yourself in each machine, Managed Kubernetes is very simple to set up. It doesn't need to install an operating system, run Kubernetes script, config your Kubernetes for your hardware, install network/storage interface. Digital Ocean will do all above for you in one click.

just fill in little information then your cluster is ready!

However, you still need to set up others software with Kubernetes.

You will need a docker registry for your docker image. You can either use docker hub or host your private docker registry. The docker registry can not be installed as a pod inside your Kubernetes ecosystem and I installed it in a virtual machine (droplet inside Digital Ocean). Storage for the image is up, but how we can convert our code into an image?

Jenkins inside Kubernetes

Jenkins for docker and Kubernetes Cl

I have been using Jenkins as a Cl for deployment. After setting up Kubernetes, I moved the Jenkins to Kubernetes cluster as a pod. I additionally installed Docker and Kubernetes plugins such that it will build and upload the docker image, then configure the Kubernetes deployment.

Benefits of using Kubernetes after sometime

1. Isolation

The environment inside a Pod(to a extend) will not affect other Pod. One application crashing the system or draining all resource etc will not happen.

2. Handle more users

Kubernetes built with an auto-scaling feature. When the CPU/ram usage is high due to high traffic, it will create a new instance to handle more user. Users won't wait very long to make a purchase, view some items, or fetch a webpage.

3. Faster deployment Automated Build & Deploy

Compare to run some command to deploy the application, Kubernetes with Jenkins makes thing easier. After you make changes to the code and push it to the server, the Jenkins will build and deploy the server automatically. You don't have to type the a lot of command in deployment.

4. Easily configure application using Yaml file

Everythings in Kubernetes can be set up and patched using one (or more) YAML file. You can view current setting in a YAML file and edit then patch it very clearly.

5. All stuffs in one panel

Digital Ocean managed Kubernetes comes with a pre-built dashboard. You can view almost everything in that panel, from application issue to server usage.

Kubernetes Dashboard, everything looks fine

6. Cost saving $$$

Compare to the AWS Kubernetes (and other as well), AWS Kubernetes master is $0.10 per hour per cluster, meanwhile the master in Digital Ocean is free.

6. And more...

Drawback...

Two years ago, digital ocean Kubernetes is quite unstable, to be honest. I have 2-3 major server downtime for the first month. I wasn't confident enough to move any production server to the Kubernetes. 2-3 months later, It was getting more stable. there were still some small accidents but they mostly affect Cl, Kubernetes API. None of the applications was affected. After one year, it is getting more stable and I haven't got any problem in Digital Ocean so far.

Some Suggestions

The learning curve for Kubernetes is very high. I suggest trying Minikube or set up a very simple Kubernetes cluster first before moving the production server into Kubernetes. Digital Ocean Managed Kubernetes is a good, easy to use, cost-effective option for everyone.