Skip to content
Home ยป Kubernetes 101: Introduction and Prerequisites

Kubernetes 101: Introduction and Prerequisites

Welcome to my free Kubernetes crash course, Kubernetes 101!

Good on you for going out of your way to continuously learn! I promise you that this is a fun one. I’ve been working with container orchestration for over 6 years now, with Kubernetes being the main driver in 4 of those amazing 6 years.

Kubernetes, also known as K8s, is an open-source system for automating deployment, scaling, and management of containerized applications, and it’s an absolute beast. I believe that the first step in mastering Kubernetes is that you’ll never actually master Kubernetes. If that discourages you and makes you want to turn off your computer, go outside, and touch some grass (as it did for me initially), then maybe working with Kubernetes isn’t for you. But what am I saying?! You’re an intelligent and straight up amazing individual – of course you’re ready to learn about Kubernetes and all of its glory!

At first glance, learning Kubernetes can seem overwhelming. Let me be the one to tell you that it’ll seem overwhelming at your next 50 glances too. It’s a complex container orchestration system that has a steep learning curve with so many insane features such as service discovery and load balancing, automated rollouts and rollbacks, horizontal scaling, and so much more. Luckily, with the correct guidance and eventual understanding of core fundamental concepts, learning Kubernetes is entirely possible and actually quite fun.

Intended approach to learning Kubernetes

How I learn best is by doing and I think that is the best way to learn (totally not biased). With that said, my free course on learning Kubernetes will be paired with practical walk-throughs that anyone can follow along with for free. I want to emphasize that you should not and will not pay for education here at Coin In The Cloud. Personally, I don’t believe in paying for courses. Education, self-learning, and simply trying to better yourself should all be free for everyone. I promise I will try my best to create content here at Coin In The Cloud that allows readers to follow along without paying a penny, unless the content pertains to a paid service which I would always mention.

Prerequisites (Recommendations)

Not just anyone can dive head first into the world of Kubernetes. I don’t mean to sound restrictive but it’s best that you have at least some knowledge in any of the following topics. The more the merrier, of course, but do not be discouraged even if you feel like you don’t fit the bill. Anyone can learn and fill in knowledge gaps along the journey! While everything on the following list is important, I comprised this list starting with what I thought was most important, second on the list as the second most important, etc.

Containerization

Considering that Kubernetes is designed and built on top of containers, I’d argue that it’s darn important! There are a few container technologies out there but my absolute favourite, as is for many others, is Docker. Whether or not you have heard of Docker (but I really hope you have), it’s not difficult to pick up the fundamentals of containerization with Docker. If you’re not familiar with containerization, a good place to start is understanding the difference between virtual machines and containers. I’d love to make another free course around containerization in the near future!

Linux

Linux is an operating system (OS) just like Windows, iOS, and Mac OS, and in case you didn’t know, it’s one of the most popular platforms on the planet. When Kubernetes is running somewhere, that somewhere is an operating system. Believe it not, that operating system is Linux almost 99% of the time! You need to know Linux to a certain degree before working with Kubernetes for so many reasons. From debugging Kubernetes node issues to updating the underlying OS for security patches, there are truly countless reasons as to why being able to work with Linux is important when learning Kubernetes.

Infrastructure

As previously mentioned, when Kubernetes is running somewhere, that somewhere is an operating system. In equal terms of importance, that somewhere is on infrastructure. Infrastructure can be anything from bare metal servers in a data center, virtual machines hosted on your computer at home, virtual machines hosted on bare metal servers in someones data center, or several other places. It’s important to understand the underlying infrastructure that your instance of Kubernetes exists on along with the infrastructure architecture. This topic can sometimes be convoluted, but you can start by thinking “Where would I deploy Kubernetes and why? What benefits and drawbacks does one method have over the other?” Replace Kubernetes in that question with almost any other technology and that should help get you thinking in the right direction!

Networking

No, not social networking… computer networking! Having a good understanding of networking is extremely underestimated when working with Kubernetes and is arguably the most crucial aspect. Think about what Kubernetes is at an extremely high-level: separate containers working together to achieve a common goal. These separate containers could be hundreds of microservices doing the work for one user-facing application in a distributed system. These separate containers could be a few applications that – honestly, it doesn’t matter what these containers are. The point I’m trying to make is that these containers need to communicate with each other, with Kubernetes and its components, with external systems and servers, with 3rd party applications, and with external traffic. But how?! Every instance of Kubernetes and the applications that reside within it can be configured to manage traffic differently so it’s helpful to have some networking fundamentals experience.

Security

Security is often an afterthought, especially when working with complex systems like Kubernetes. There are many broad topics under the cyber security umbrella and that umbrella only gets larger when working with Kubernetes. Role based access control (RBAC), API authorization and authentication, network traffic monitoring and alerting, audit logging, system scanning and patching for vulnerabilities, process/service whitelisting, you get the idea. These are just a few security topics to seriously consider when working with Kubernetes in a production environment. The idea here is to have a risk averse mindset. Having experience with that will help, but no one is expected to know everything when they’re learning something new. Always asking yourself the question “is this as secure as it can be” and doing some research for the answer is more than enough for when you’re starting with Kubernetes.

Storage

Your home computer has a hard drive you store data on making it stateful. If you happen to steal my pizza and I happen to smash your computer (I promise this will never happen) without you backing up your hard drive to an external drive, then you will lose all of your data. So what about the “computers” in the cloud? There are reasons why we host our applications and data in the cloud; high availability, scalability, and reliability to name a few, but the applications hosted in Kubernetes are ephemeral, meaning that they are meant to be turned off, destroyed, and redeployed at any time rendering it stateless out of the box. Well, what about the data? Data and stateful applications can be managed in different ways with Kubernetes, but it’s important to have some fundamental knowledge of stateful applications and database data (e.g. SQL).

Programming

I know there are folks out there ready to crucify me for having this at the bottom of the list. Programming is important. Coding is important. But are they important for learning Kubernetes? Well, yes. When learning Kubernetes, programming is most important when troubleshooting application issues. When someone is learning Kubernetes, they usually come from software development or operations (hence DevOps), so an estimated 50% of you reading this will have sufficient programming knowledge to succeed and the other half will simply have more to learn before succeeding. If you’re not a software developer, it’s unlikely you will be deploying custom applications to Kubernetes and will be learning with popular and well tested applications so at least for now while you’re learning Kubernetes, programming is not that important. Understanding the difference between programming and scripting is important. Scripting on the other hand is widely used in a cloud ecosystem for plenty of reasons (e.g. automation). On top of scripting, it’s important to be comfortable with data serialization / templating languages such as YAML. Kubernetes manifests are written in YAML so you’ll be forced to understand it soon enough. Templating languages are not programming languages and are easy to pick up.

What was that? You’re ready to starting learning Kubernetes?! Of course you are. ๐Ÿ™‚

Whether you have experience and knowledge in the topics previously mentioned, you should start learning Kubernetes if that’s what you’re interested in. Don’t let anyone, especially a random dude on the internet, tell you that you’re not able to do something that you want to do!

You can visit the first chapter of Kubernetes 101 here:

Kubernetes 101: How to Deploy Kubernetes with Kind

Thanks for reading! <3

Leave a Reply

Your email address will not be published. Required fields are marked *