Kubernetes is celebrating five years this year, and its presence is continuously growing in the IT industry. As Kubernetes gains popularity, more and more IT professionals are trying to break into the Kubernetes space. However, misconceptions about Kubernetes are creating barriers to professionals truly understanding the beauty and benefits of Kubernetes.
At a high level, Kubernetes is a container orchestration system that provides a framework to run applications with resiliency. It has key features like self-healing, automated rollbacks and rollouts, and automatic scalability. For this blog, I will focus on the key concepts and components that you should understand to get started with Kubernetes. Also, I want to point out topics that helped me get passed the blockers that many face when trying to understand Kubernetes.
As you go through your Kubernetes education, there are two key components that help you comprehend the way the Kubernetes system operates. One key component is the Scheduler. The Scheduler identifies pods without an assigned node and places the pods on a suitable node. The key word here is “suitable”—the magic of the Scheduler is that it takes attributes assigned by you and factors them into where it will place the pod. The exact placement, however, is a best effort and not a guarantee. For example, if your pod has a requirement for a GPU, you can specify that requirement in your YAML file, and the Scheduler will do its best to find a node with a GPU that meets your other requirements. The value of the Scheduler is that it supports the autonomous nature of the Kubernetes environment.
The second key component is the Controller Manager. It consists of several controllers; the resources listed near the end of this blog post explain why. The purpose of the controller manager is to reconcile the current state of the cluster with the desired state specified in your YAML file. For instance, if you specify a requirement for five pods in your cluster, and the current number of pods in the cluster is three, one of the controllers (specifically, the Replication Controller) will create two more pods and report back to the controller manager to ensure that it meets the desired state. The process is a continuous cycle of checking current and desired states. This simple looping logic is effective in building resilient deployments.
When I started exploring Kubernetes, I did not realize there was a difference between a managed Kubernetes cluster and an open source Kubernetes cluster. The underlying Kubernetes concepts are the same for both managed Kubernetes clusters and open source clusters, but there are some caveats with both that I will discuss in the next section.
Managed Kubernetes Services
The major cloud providers have managed Kubernetes services where they handle the deployment of the infrastructure and the installation of the Kubernetes control plane (master nodes and worker nodes). Also, the managed services tend to perform managed updates to the clusters when new versions are released. You should understand that managed Kubernetes services have their pros and cons like everything else. As you navigate through the Kubernetes ecosystem, managed services will definitely come up as an option.
Open Source Kubernetes
Open sources Kubernetes is where it all began, and it’s still the go-to if you want to stay up to date on the latest and greatest with Kubernetes. Open source Kubernetes has a vast community that contributes to Kubernetes and various related projects. This community is what makes open source Kubernetes great; the community is quick to come up with better and effective ways to incorporate Kubernetes into solutions. Members of the community are also helpful when you have technical issues with Kubernetes. And they are always finding and fixing bugs to improve the projects. Like the managed approach, the open source approach comes with pros and cons. Some of you will want to take this route. Later blog posts will address open source Kubernetes and its related projects in more detail.
There are many resources out there to learn about Kubernetes and supporting tools and products. The most effective learning mechanism for me has been videos and hands-on lab environments. However, for those who learn through other means, here are a few books and blogs that I found helpful in reinforcing Kubernetes topics and concepts.
- Kubernetes Up and Running: Dive into the Future of Infrastructure – Great introduction to Kubernetes and its concepts.
- Kubernetes in Action – An intermediate-level deeper dive into Kubernetes concepts. I’d suggest reading this book after Kubernetes Up and Running.
Blogs from experts in the field can be critical to getting passed technical blockers when you start playing around with Kubernetes. Technical blogs have helped me get passed many Kubernetes deployment errors. I cannot list all the blogs that I have read but here a few key ones from some of my colleagues:
If you have an error, most likely someone else in the community has had the error, too. I suggest checking the Kubernetes GitHub repo Issues page with the error to see if it has been resolved. If not, you can create an issue and have the community help you solve it.
Online Courses and Resources
- KubeAcademy from VMware is a free, product-agnostic Kubernetes and cloud native technology education platform. KubeAcademy courses are composed of a series of video lessons—each five-to-eight minutes long—that dive into topics for all skill levels. The courses are created and delivered by subject-matter experts.
- Udemy has many Kubernetes lectures and courses, but I like Kubernetes on the Cloud & the CNCF CKA Certification because it focuses on all the components of Kubernetes, AWS and Azure deployments, and the CKA exam.
- This GitHub repo has a great breakdown of links by topics focused on the Certified Kubernetes Administrator (CKA) program. The layout of the GitHub repo helps you prepare for the exam and deep dive into Kubernetes. Within this GitHub repo, there is a spreadsheet with even more helpful links. It is a bit confusing to navigate, but the content is good.
Tools and Environments
- Katacoda – This site has loads of great labs. There are very simple labs but they touch upon many cloud and Kubernetes concepts. Katacoda is a good place to start before turning to kind.
- kind – This has been my personal favorite lab environment for playing around with Kubernetes and the projects in the Kubernetes landscape. kind provides you with a local Kubernetes cluster (single or multi master nodes configurations are available). When you have a solid understanding of Kubernetes and want to test supporting projects like Prometheus, I suggest using kind. It also provides a good practice environment before you move on to a cloud provider like AWS or Azure.
There are two Kubernetes certifications that if you have the opportunity to take, it would greatly reinforce your understanding of Kubernetes. Also, having the certifications provides others (employers, colleagues) with confidence in your ability to handle the responsibilities of a Kubernetes administrator.
- The Certified Kubernetes Administrator (CKA) certification aligns with the traditional system administrator role. You do not have to be concerned with advanced software development or engineering concepts; basic knowledge is sufficient.
- The Certified Kubernetes Application Developer (CKAD) focuses on cloud native application architecture. You should be comfortable with a programming language and a container runtime.
You’re on Your Way to Getting Started with Kubernetes
On the surface, Kubernetes can be seen as a complex system with an overwhelming amount of components. But once you start to break down each component of the system, you will start to see that the system was designed to abstract layers on hardware and allow you to focus on building robust applications.
Kubernetes was also designed to allow incorporation of additional custom components and services; this extensibility is where the Kubernetes ecosystem comes in. The open source community has created a multitude of services that work in conjunction with Kubernetes to enhance its features. Stay tuned for more blogs on the cloud native ecosystem.