Kubernetes and containers are the building blocks of a modern cloud infrastructure and de-facto the standard for deploying, managing and orchestrating applications at scale.
But is that a good enough reason to invest your time (and money) to learn Kubernetes as a backend or full stack developer?
I've put together this FAQ style post to clarify some of your doubts about Kubernetes and whether you should learn more about it or not.
Taken directly from kubernetes.io
Kubernetes, also known as K8s, is an open-source system for automating deployment, scaling, and management of containerized applications.
In other words Kubernetes orchestrates your containers.
No. The Kubernetes project was created by Google and has its roots in an internal project called BORG. Kubernetes was later donated to the Linux Foundation to form the Cloud Native Computing Foundation (CNCF).
No. Docker is (or was now that it's been deprecated) one of the official container run-times.
The important thing to notice is that Docker is often used as a synonym for containers. Most of the time it's a good analogy but it can be misleading because Docker and containers are not the same thing. And while Kubernetes doesn't rely on Docker it has containers at its core.
Anyone that has non trivial requirements about deploying and managing applications should consider Kubernetes.
There are many ways of deploying and managing applications in the cloud and on-premise today, and using Kubernetes can be a really good strategy.
So anyone could be a good Kubernetes user candidate but not everyone should embark on the hard mission of running Kubernetes. You can use Kubernetes without having to run it, and that's the magic trick.
No. Google, AWS and Azure they all offer managed Kubernetes clusters, where you only care about the number of nodes and they take care of running the control plane (Kubernetes' brain).
Many cloud providers offer a free (or really cheap) managed version, where you only pay for nodes (virtual machines). Azure and Digital Ocean offer free managed Kubernetes clusters, Google charges about 72$/month per cluster.
That's a really good question. Kubernetes should simplify the you-build-it you-run-it credo.
Personally I see Kubernetes like a playground where I can run containers by declaring the ideal state and let Kubernetes take care of the rest. That applies to very different workloads, from APIs to background jobs.
Kubernetes will evolve and change, but it's here to stay.
I compare Kubernetes knowledge to cloud knowledge. A couple of years of ago cloud knowledge was a nice to have, now it's something that you are expected to know.
I believe Kubernetes will follow a similar path.
If you check job offers on Stack Overflow, and search for backend or full stack positions, you'll see that many are mentioning Kubernetes or one of the flavored versions (GKE, AKS, EKS).
Like having hands-on experience with cloud providers, knowing how to use Kubernetes is becoming a requirement.
It depends. Kubernetes is really complex piece of software, administrating a cluster and deploying applications on top of it are two completely different jobs.
Running a Kubernetes cluster is a full-time job, so it does take some time. But if you are a developer, and you want to become a proficient Kubernetes user, I bet I can teach you to confidently deploy and debug applications on Kubernetes in about 2 hours.
The official documentation is a good starting point, although it can feel a bit intimidating, there's a lot of information there and not everything might be relevant to you.
The CNCF has also courses that cover their certifications (CKA and CKAD). These courses are great, they really teach you what you need to pass the exams. But if that's not your goal there's a good chance you'll waste your time.
If you want to have a comprehensive course about Kubernetes focused on developers I am working on Kubernetes for Developers. The course teaches you all the skills you need to become a proficient Kubernetes users.
Get great content on Python, DevOps and cloud architecture.