Kubernetes Khronicles is a series from Vultr highlighting information and insights about Kubernetes open-source container orchestration. In this post, David Dymko, Vultr's Cloud Native Technical Lead, explains exactly what Kubernetes is and shares details about the inner workings of the container orchestrator.
Kubernetes has become the mainstream open-source orchestration tool for automating deployment, scaling, and management of containerized applications. Originally designed by teams at Google and released in 2014, Kubernetes is now officially maintained by the Cloud Native Computing Foundation. Kubernetes has quickly turned into the gold-standard of container orchestration for several reasons: the wide community support, the fact that it is cloud agnostic (kind of... see more about plugins below), and it offers production-grade orchestration.
The following is a dive into what Kubernetes is, how it works, common Kubernetes terms defined, and details on how developers are using Kubernetes to build and scale.
Kubernetes comes from the Greek word for "helmsman," (someone who steers a ship, like a container ship), which explains why the iconic symbol for Kubernetes (or K8s) is a ship wheel. Kubernetes is an open source container orchestration tool, that allows developers to quickly and easily deploy, scale and manage containerized applications.
Here's another way to think about it: Kubernetes is a tool that allows you to manage all cloud computing, treating them as 1 giant resource pool instead of multiple instances. Instead of having several servers running with various CPU and memory resources (which you may not be using to full capacity of the CPU power and memory pool), Kubernetes will try to optimize the allocation of all compute resources, utilizing the ones you are paying for to the fullest.
Kubernetes is a fan-favorite thanks to some key differentiators:
Kubernetes works by deploying a master node containing the control plane. The control plane has various components such as:
While the control plane acts like the brain of the operation, the worker nodes are where you would deploy applications. The worker node then communicates back to the control plane, with a few components that run on the worker node itself.
Since Kubernetes is cloud-agnostic, each provider is responsible for offering two core plug-ins. These are vital in order to gain the full benefits of the cloud you're running on:
When you deploy Vultr Condor (a terraform module that provisions a Kubernetes cluster with the Vultr CCM and CSI), all these plugins are already set-up. In other words, your cluster easily becomes Vultr-ready.
Other Kubernetes Plugins to consider:
SHARE WITH US: What Kubernetes plugins do you find most helpful? Tweet us @Vultr to share your K8s story.
Before running with Kubernetes, there are some key terms to understand:
With the rise of Microservices, Kubernetes has risen in popularity as it allows developers to easily build distributed applications. Microservices provide a way to build and deploy applications. Instead of building single large "monolithic" applications, you build small "bite size" applications that do one thing and one thing well. You then have multiple applications that work together but are separate. Since these components are independent of one another, you can scale certain applications up as needed.
For Example: During Black Friday, you may want to spin up more instances of your POS systems to handle the influx of transactions. In a "traditional" application you would have to deploy multiple instances of the entire application, which can be wasteful.
As with Kubernetes, CI/CD (Continuous integration/Continuous Delivery) also lends itself to microservices. You can completely automate application deployments. Consider this example: You could have a CI/CD pipeline that will build your application into a container and then update the Kubernetes configuration to use this latest container all from just commit code to your repository.
Another example involves using Kubernetes to easily schedule batch jobs. In this use case, you are able to schedule workloads to run at certain times that fits your needs. With Kubernetes since these are containers this will be deployed, do its job and then be removed. You don't have to worry about having a dedicated instance just for this batch job Kubernetes will ensure that your jobs run when you want them to.
Overall, there are two main advantages of microservice design:
Ready to get started building with Vultr Kubernetes? Gain all the benefits of K8s and Vultr together. Access the Vultr plugin to Terraform here.
Tell us your Kubernetes story! We'd love to hear from you. Tweet us @Vultr to share.