Why learn Kubernetes at all?
Kubernetes for Developers: Part I
Welcome to Part I of the “Kubernetes for Developer” series!
Before diving into Kubernetes concepts, I wanted to take a step back and align on why it is useful to learn Kubernetes in the first place. It always helps me to levelset on the motivations. I understand that I’m most likely preaching to the choir since you’re already reading this series, but I think you’ll find some interesting benefits regardless.
So let’s get to it!
This series is brought to you by DevZero.
DevZero’s platform provides cloud-hosted development environments. With DevZero, you can reuse your existing infrastructure configuration to configure production-like environments for development and testing.
Check out DevZero at devzero.io to get started today!
Kubernetes is everywhere
First off, Kubernetes is eating the world.
Since 2018, the Cloud Native Computing Foundation (CNCF) has been running an annual survey. In the latest survey from 2022, more than 5.6 million developers reported using Kubernetes. Survey results also show that not only are more developers/organizations adopting Kubernetes, but the number of clusters they are using is also increasing.
You might say there’s selection bias in this survey. After all, those responding to a survey from the Cloud Native Computing Foundation, which Kubernetes is part of, are most likely using or at least interested in using Kubernetes. But you can take data from other surveys (Splunk, RedHat, D2IQ, Dynatrace, Datadog) to validate the growing trend in Kubernetes usage.
Anecdotally, I’ve also seen Kubernetes adoption in historically slow-moving industries as well. I saw Kubernetes being used for government and military applications, as well as in the financial sector.
Well, if that didn’t convince you, we have Dilbert:
But why should I care?
So more people are using Kubernetes, but as a developer, you might be asking: why should I care?
Let’s take this both in practical and abstract terms.
Practical reasons
Perhaps most concretely, we see Kubernetes pop up as a key term for job listings. It used to be that experience with Kubernetes was often listed in the “Bonus Points” or “Nice to Have” section. But now it’s not uncommon to see that creep into the “Qualifications” section for Senior Backend Engineering positions, especially at startups.
At a bare minimum, simply having some sort of experience or understanding with Kubernetes will help you pass the resume screen.
Other benefits
If the above reason seems banal to you, here are some other benefits I’ve seen:
- Standardized infrastructure: I’ll talk more about this in the Developer Experience part of this series, but I see a lot of organizations struggling with varying levels of Kubernetes adoption. Most likely, they’ll have Kubernetes clusters for production and staging environments, but dev/QA/testing might still be using Docker or Docker Compose. This means maintaining two sets of infrastructure, whereas if you had a single Kubernetes-based infra for all your environments, it could save both you (developer) and infra teams (e.g., SRE, platform engineering, DevOps, etc) a lot of time.
- Design for Kubernetes in mind: By understanding how Kubernetes is used and architected at your company, you can avoid rewriting Kubernetes built-in components yourself. This includes Kubernetes native concepts like healthchecks and service discovery to abilities unlocked by related tooling like offloading mTLS to Istio.
- Be more “agile”: If you are testing out a new product or integration at scale, it’s now trivial to deploy it onto Kubernetes with provided Helm charts or Kubernetes manifest files. The more comfortable you are with Kubernetes, the quicker you can iterate with them and build your PoC rather than waiting for your infra buddies to help deploy something for you and debug.
- Understand tooling: Most companies will have some tooling around Kubernetes for you to use. Sometimes it’s a simple wrapper around the Kubernetes CLI tool. Other times it might be some internal tool built on Kubernetes or a third-party platform that abstracts away the underlying concepts. It often helps to differentiate what’s a Kubernetes concept vs. the tooling’s way of doing things to ask the right questions. Even with ChatGPT, you need to first know what to ask.
If none of these call out to you, you may simply want to learn Kubernetes to “be a better engineer.”
Next steps
Hopefully by now you’re convinced that learning about Kubernetes (or at least reading this series) is worth your time. Next week, we’ll dive into Docker concepts that’ll be critical to understand why Kubernetes is needed in the first place and how K8s concepts parallel those in Docker.
Check out other articles on the Kubernetes for Developers Series
- Part I: Why learn Kubernetes at all?
- Part II: Docker basics
- Part III: Kubernetes 101 — Pods & Controllers
- Part IV: Kubernetes 101 — Architecture & Networking
- Part V: Kubernetes 101 — Resource Management & Scheduling
- Part VI: Popular Kubernetes Tools
- Part VII: State of Kubernetes 2023
- Part VIII: Advanced Kubernetes Topics