Hacker News new | ask | show | jobs
by hiimshort 2678 days ago
I absolutely loved the concept of containerization when I started working with it a few years ago. Docker provided such a perfect way to ensure my application would build and run correctly when I pushed things up to my servers.

Then came orchestration. Swarm was a bit slow to get out the door and is still buggy. K8s on the other hand shot past like a lightning bolt. While it evolved quickly, k8s has to be the one piece of software that I dread to work with the most. Setting up a cluster seems nearly impossible without compromising important features. Configuration is overly complex and difficult to discover. None of the (many) tools seem to do what I want.

In the end, I begrudgingly chose Docker Swarm because I was actually able to create a cluster that worked. Mind you, there are still truckloads of bugs that have sat gathering dust for years that I continue to run into. At least with this solution I'm somewhat productive.

May the heavens have mercy on your soul should you attempt any amount of networking in a cluster.

2 comments

Kubernetes is hard because its trying to solve a hard problem. Agreed that cluster management itself is hard but GKE has been somewhat nicer to use.

If you can convince your organization to use GKE (Google Kubernetes Engine), your life will become simpler. Power of Kubernetes with none (almost!) of the pain.

> Kubernetes is hard because its trying to solve a hard problem.

Yeah, and for most of us it's a problem we don't actually have.

Use of these technologies seems aspirational to me. It's a kind of cargo-culting: as if using the methods of the software giants, will make your company into a software giant.

That's the problem I have with it. I'm supposed to fight with all this extra infrastructure and configuration...to deploy a standard php web app with 600 users.
If you have very simple use cases, you definitely do not need an orchestrator, or a cluster. The hype is too loud and pretends to be good for everyone when it's clearly not.

I want to coin a new term "SimpleOps": operations infrastructure which does not include complex components such as cluster orchestrators, service meshes, secret management, IAM, policy enforcement, telemetry processing engines, app tracing, and so on. If your app is simple, only use simple components and managed services.

You can still have DevOps best practices with very simple components, and it'll be easier to reason about, build, and run.

I would like to, but I don't really have a choice atm. Thanks for the advice though, I feel like it doesn't need to be super complex to do what we're doing.
I generally use k8s. The updates come like a torrent, and it's impossible to stay on top of things unless it's your full time job. Every upgrade involves a lot of finger-crossing and hope that things won't break (the good news is, that generally it's fine).