Guide

A Beginner’s Guide to Kubernetes

By Jess Feldman
Last updated on June 2, 2022

Managing Cloud systems is a big task and innovators continue to find ways to improve technology and solve bigger problems. We talked to Thomas Fowler of Flatiron School about Kubernetes and how developers use it to simplify their systems and workloads. Learn what using Kubernetes looks like on the job and when new developers should consider adding Kubernetes to their skill set. Plus, Thomas shares his top two resources for anyone learning or currently using Kubernetes.  

Meet the Expert: Thomas Fowler

  • Thomas began studying computer science while researching various image codecs while working on a presentation in college.
  • Thomas is currently heading up Enterprise Solutions at Flatiron School.

What is Kubernetes?

Kubernetes is the Greek word for pilot or helmsman. Kubernetes, also known as K8s, is a container orchestration software that automates deployment, scaling, and management of workloads. It was born from an internal project called Borg started in 2004 that was later open sourced in 2014 by Google — and it’s become mainstream since then. 

The beauty of Kubernetes is that it manages the state of your system in a declarative manner. With Kubernetes, containerized portions of your system or application are ephemeral, and allow for containers to gracefully shut down and spin back up. 

What is a container in the cloud?

A container is a software package that contains everything needed to run an application. 

It’s a kernel-level isolated process that allows you to avoid managing dependencies based on the host system. For example: If I wanted to build a Node.js app, I can containerize it so it will run on any environment that has the Docker (or other container software) container runtime. It doesn’t matter which OS; it just runs. Containers allow the isolation of functionality and they also offer portability. Containers are “write once, run anywhere” which is another reason they’re useful for cloud computing.

How Kubernetes Is Used on the Job

Kubernetes is primarily responsible for orchestrating your containerized workloads in your cloud environment. If you work with a cloud provider like Azure, GCP, or AWS, one can use Kubernetes as the supporting substrate running your applications, services, and workloads. Kubernetes takes a different approach when trying to achieve the desired state of a system. Conventional or traditional systems take an imperative approach where one instructs the system to perform an action or actions to achieve the desired state. Kubernetes on the other hand takes a declarative approach where one describes the state of the system and internally Kubernetes does what it needs in order to reflect that desired state.

5 Tech Jobs that Rely on Kubernetes

There are various roles that can potentially touch Kubernetes like:

  1. Software Developers
  2. DevOps Engineers
  3. Site Reliability Engineers
  4. Platform Engineers
  5. DevSecOps Engineers

2 Examples of Kubernetes on the Job

Kubernetes is a general purpose software that allows developers to deploy distributed systems that span cloud providers and data centers. I even use Kubernetes in my role at Flatiron School! 

  • Example #1: I would do a deployment for Kubernetes around a system we’re designing for curriculum development.

Many times when deploying distributed systems or multiple systems that may need to interoperate between themselves, Kubernetes is a very suitable choice. When the eventual need to scale these types of systems presents itself, one has very granular control over which parts of the system will scale and to what degree. 

  • Example #2: A system that employs any sort of queueing or event sourcing, can be very tightly controlled in terms of what consumers or subscribers are scaled.

What programming languages are used with Kubernetes?

Kubernetes is fairly agnostic, which means you can probably find a container image that supports the tech stack for whatever you’re building. Kubernetes is written in Go, a language Google developed several years ago. Go is a good language to learn, but Kubernetes doesn’t force people to understand Go or use any particular language. 

Pros & Cons of Kubernetes

Kubernetes manages many things to allow for resiliency of certain components of systems and communication between those systems. People have gravitated towards Kubernetes because those are problems they solve every day when they write new systems. 

That said, Kubernetes isn’t a panacea. It’s a special use case. If you have a large number of concurrent users or discrete pieces to your overall system, it’s a good choice.

Pros of Kubernetes

  • Kubernetes improves your ability to experiment. If we’ve been using a specific container image and someone comes up with a better one that serves the same function, you can experiment side-by-side in Kubernetes. 
  • Kubernetes is a declarative system rather than imperative. Its sole goal is to reflect the state of the system that you assign. For the previous example of using Kubernetes for a curriculum development system, I might have five discrete portions to the overall system. I can tell Kubernetes how many pieces of that system I want created at any given time and it will do whatever it can to make sure that state is reflected. If I want seven containers for this specific piece and one goes down, it will spin one more up to bring the total back to seven. 
  • Once you establish Kubernetes as your platform, your time to market for a product will be drastically shorter than someone doing it a different way. 

Cons of Kubernetes

  • There can be additional overhead incurred when using Kubernetes and it can have a large resource footprint when adding additional components to your deployment, such as an Ingress or Service Mesh.
  • As additional components are added to your Kubernetes deployment, the complexity inherently increases. This makes managing your Kubernetes cluster somewhat more complex and may lead to adding additional components to manage that complexity. 

Kubernetes vs Docker

This isn't a "versus" at all. Kubernetes and Docker are complementary technologies to one another. You can get similar functions within Docker. Overall, your system footprint will most likely be smaller if you’re using something in the Docker family.

How to Learn Kubernetes

It’s possible for new developers to learn Kubernetes, but since it is a whole different software space and there are many nuances to running your own cluster, there is a lot to cover. Someone just starting out in this career would benefit from familiarizing themselves with Docker to get familiar with containers before moving to Kubernetes. 

In general, I recommend learning Kubernetes when you’ve got a year or two under your belt as a new developer. When you have the confidence of a developer who knows how to make the right decisions about deploying a system or workload, then you’re ready to learn Kubernetes.

Before learning Kubernetes, you should understand basic infrastructure and how new compute instances are created quickly and consistently. You should also have good bash scripting skills, good networking skills, and even security knowledge. Understanding the basics of creating your own container images is another important skill. 

Thomas’s 2 Favorite Kubernetes Resources

  1. The Kubernetes Slack account is amazing! There’s so much community and developer support there in terms of people that work on and with Kubernetes. 
  2. The Cloud Native Computing Foundation (CNCF) is a huge group to pay attention to since they’re guiding the recommended strategy to do native cloud deployments. They have a charter and manifesto about why they’re in the space. 

The Future of Cloud Development

The current labor market is crazy with over 2 million jobs that need to be filled. Not all of those jobs are Kubernetes-related, but the need for workers with that kind of cloud and tech knowledge is growing. Awareness and familiarity with Kubernetes and the cloud is essential — any technologist today should know what this is no matter their level of experience. 

Find out more and read Flatiron School reviews on Course Report. This article was produced by the Course Report team in partnership with Flatiron School.

About The Author

Jess is the Content Manager for Course Report as well as a writer and poet. As a lifelong learner, Jess is passionate about education, and loves learning and sharing content about tech bootcamps. Jess received a M.F.A. in Writing from the University of New Hampshire, and now lives in Brooklyn, NY.

Also on Course Report

Get our FREE Ultimate Guide to Paying for a Bootcamp

By submitting this form, you agree to receive email marketing from Course Report.

Get Matched in Minutes

Just tell us who you are and what you’re searching for, we’ll handle the rest.

Match Me