This What the Tech Series is for anyone who doesn’t come from a technical background. If you are interested in breaking into tech, let’s learn about different tech trends, concepts, and buzzwords together! You can also check out kkarenism.com/msftadvocate to learn more about my journey at Microsoft so far.
First up is Kubernetes, aka K8s, which is formally described as “an open-source system for automating deployment, scaling, and management of containerized applications”. Thank you so much to Brendan Burns, Co-Founder of Kubernetes and CVP of Azure Operations Support Systems (OSS) Cloud Native at Microsoft, for taking the time to help me understand the basics and break it down for you here.
What is Kubernetes?
Kubernetes is an infrastructure that empowers developers to build reliable services. These services need to run seamlessly in the background to power the applications that you use. Before getting into it, let’s start with the concept of microservices. Teleport describes this as a computer program that runs on a server and focuses on doing smaller tasks very well. Microservices focus on doing 1-2 tasks very well instead of doing 10 different tasks in one system (which traditional services do). You can then bundle several microservices that do different tasks to build a computer system.
At scale, it takes a lot of time and effort to develop applications and systems that span across dozens of computers. Computer systems exist on different computers because of increased reliability and scale (if one computer crashes, there are other ones to back it up). Getting all of these different computers up and running is challenging, especially when you have to manually run and copy the code onto every single computer.
Kubernetes helps by automating the orchestration across different microservices. It does this by reading a command such as “create 10 copies of X” and executing it across all computers. This is beneficial to developers who want to make frequent changes while saving time and effort.
Imagine that you’re attending a musical (see diagram above). You have the conductor (1) who is responsible for reading the musical notes (2) and leading the orchestra players (3) to produce a harmonic symphony (4).
Translating this scenario, you can think of Kubernetes as the conductor (1), the musical notes as the code (2) that Kubernetes has to read and execute, the orchestra players as computers (3), and the harmonic symphony as the output (4).
Who is Kubernetes Meant For?
Kubernetes was originally built for Google’s large scale and highly complex environment, but then became an Open Source project. Over time, it became relevant to Developers, Systems Operations Admins, and those in DevOps who wanted flexibility in building out streamlined solutions. DevOps is short for “Development & Operations” and is a set of practices that combines software development and IT operations to streamline processes.
How Does It Work?
Kubernetes processes commands as an operator (the “conductor”), which uses Application Programming Interfaces (APIs) to easily execute these commands. APIs allow different applications to talk to each other. Configuration files (the “musical notes”) are used to state the intention of the command (the API). Kubernetes uses these configuration files to trigger the intended chain of events.
Brendan shares the analogy of learning how to fly an airplane. It is challenging to learn how to flip all of the different switches to control every part of the plane. However, you could easily fly a drone with your iPad using an app. The app interprets your intention, aka “fly”, and makes it happen automatically by flipping the different switches for you.
Let’s say that a developer wants to roll out a new version of a software among 100 computers. Instead of manually updating every computer, the developer would send a command to the Kubernetes server. The Kubernetes server would then execute the software update to the 100 computers. Kubernetes manages all of this reliably, and can easily rollback if errors were to come up.
Where Can You Learn About Kubernetes?
Today, we’ve only covered the basics and some of the many other benefits that Kubernetes has to offer. There are many more resources to help you build your understanding from a beginner to expert level. Here are a few links to get you started on your learning journey:
|Phippy and friends | Cloud Native Computing Foundation (cncf.io)||This site is perfect for those who have zero technical background because it explains the Kubernetes ecosystem at a grade-school level that even children can follow along with! A couple of my favourites are Phippy Goes to the Zoo and The Illustrated Children’s Guide to Kubernetes.|
|Kubernetes Basics||This 20 part Microsoft Azure YouTube series is great for those who have some technical background and may be looking to work with Kubernetes in the future. Brendan Burns himself walks you through the different concepts of Kubernetes, containers, and relevant use case scenarios.|
|Kubernetes Microsoft Learning Path||This free bite sized guide is meant for anyone interested in learning more about Kubernetes. In 50 days, you’ll understand the basics of Kubernetes and get hands-on experience with its various components, capabilities, and solutions, including Azure Kubernetes Service.|
|Kubernetes GitHub||This open source community is welcoming and helpful for those who want something more interactive and to learn through practical experience. Beyond GitHub, there are also public Slack channels that you can join.|
|Kubernetes: Up and Running||This practical book written by Brendan Burns, Joe Beda, and Kelsey Hightower is good for developers and ops personnel who want to dive deep into Kubernetes and container technology.|
I look forward to sharing more technical concepts with you in this What The Tech series. Feel free to leave a comment below and let me know what you want to learn about next!