kubernetes through fresh eyes

2 minute read

I’ve been working on Fly Kubernetes, a managed Kubernetes service on Fly.io, for the past few months. This is my ground zero, my initial exposure to the land of the infamous. For all of my (relatively short) career, I have sat on team anti-Kubernetes. If you had asked me why, I’d have given you the answer I learned from tech twitter: it’s too complicated, you probably don’t need it. My plan was to go my entire career never learning it. It is indeed ironic that not only am I learning it, I am making a product with the intention of telling you, sweet customer, to spend money on it. I’m grateful for having been exposed to it and I’ve grown a little wiser since then. My new opinion?

It’s too complicated, you probably don’t need it

But you see, dear reader, there is nuance. First, let me state that Kubernetes of today (I don’t know how it was yesterday) is a great piece of engineering. It’s the first piece of software that has brought to life the concepts of extensibility and designing good abstractions. And it is great, even excellent, at its job.

My main takeaway, and the reason I still hold onto “it’s too complicated”, is that Kubernetes has an expansive API surface. This API surface is justified. As many say, it is a complex tool for a complex problem. It’s just that Kubernetes has ambition. If there was a universe of workloads, Kubernetes would be its divine creator. It is all-encompassing; there is no type of workload Kubernetes will not pull into its orbit. If it cannot handle it today, it will handle it tomorrow.

That ambition comes at the cost of complexity, that we, regular civilians, need to entertain. If you’re a brand new company attempting to make its mark on this place we call Earth and don’t have extensive Kubernetes knowledge, it will be a drain on resources. You probably don’t need it. According to Twitter (now X) the solution is to “deploy to a $5 VPS”.

However, for all other situations on the trade-off curve, it’s unfair for anyone to claim that you don’t need Kubernetes. It’s just that you need a small portion of the Kubernetes cinematic universe. Using Kubernetes is an exercise in complexity management. The right way to use it (according to me, who has 7 months experience1), is to carve out a slice of functionality that you need and forget the rest of the universe exists. The further you take that, the less headaches you will have. Bounded universes can be used to great positive effect.

  1. Do not take Kubernetes advice from strangers on the internet ↩︎