Live data from Hacker News

How I think about Kubernetes

garnaudov.com

51–60 of 68 posts

Re: How I think about Kubernetes

#51

I always wonder if things can be simpler. When you think of a really simple DB you think of SQLite. What's the really simple K8s? Even doing a single node deployment these days seems complicate with Prometheus, Grafana, etc. etc. docker/podman compose up with quadlets and all of this stuff just seems so eh. I really like the idea of something like Firebase, but it never seems to work out or just move the complexity t…

> What's the really simple K8s? It's k3s. You drop a single binary onto the node, run it, and you have a fully functional one-node k8s cluster.

What about k0s? Also single binary.

https://k0sproject.io/

Re: How I think about Kubernetes

#52
post #36

Earlier quoted context omitted.

It's right there: > the source of most of the problems I've seen with infrastructures using Kubernetes came from exactly this kind of approach But some more concrete stories: Once, while I was on call, I got paged because a Kubernetes node was running out of disk space. The root cause was the logging pipeline. Normally, debugging a "no space left on device" issue in a logging pipeline is fairly straightforward, if th…

You mention a questionably designed custom operator and an add-on from a SIG. This is like blaming Linux for the UI in Gimp.

> a questionably designed custom operator

This is the logging operator, the most used logging operator in the cloud native ecosystem (we built it).

> This is like blaming Linux for the UI in Gimp.

I never blamed anything, read my comment again. I only pointed out that problems arise when you use something to do something that is not built for. Like a container orchestrator managing infrastructure (DNS, logging pipelines). That is why I wrote to "it is super important to treat a container orchestrator a container orchestrator". Not a logging pipeline orchestrator, or a control plane for Route 53 DNS.

This has nothing to do with Kubernetes, but with the people who choose to do everything with it (managing the whole infrastructure).

Re: How I think about Kubernetes

#53
post #35

> Thinking of Kubernetes as a runtime for declarative infrastructure instead of a mere orchestrator results in very practical approaches to operate your cluster. Unpopular opinion, but the source of most of the problems I've seen with infrastructures using Kubernetes came from exactly this kind of approach. Problems usually come when we use tools to solve things that they weren't made for. That is why - in my opinion…

Kubernetes is explicitly designed to do what the article describes. In that respect the article is just describing what you can find in the standard Kubernetes docs. > it is super important to treat a container orchestrator a container orchestrator. Which products do you think are only “container orchestrators”? Even Docker Compose is designed to achieve a desired state from a declarative infrastructure definition.

> Which products do you think are only “container orchestrators”? Even Docker Compose is designed to achieve a desired state from a declarative infrastructure definition.

The way how something describes the desired state (declaratively for example) has nothing to do with if it is a container orchestrator or not.

If you open the Kubernetes website, do you know what is the first thing you will see? "Production-Grade Container Orchestration". Even according to their own docs, Kubernetes is a container orchestrator.

Re: How I think about Kubernetes

#54
post #51

Earlier quoted context omitted.

> What's the really simple K8s? It's k3s. You drop a single binary onto the node, run it, and you have a fully functional one-node k8s cluster.

What about k0s? Also single binary. https://k0sproject.io/

And microk8s from Canonical.

Re: How I think about Kubernetes

#55

On the use of GitOps for k8s, I think it makes sense for application workloads, and less sense for raw infrastructure definitions (unless you are running at such a scale that your infrastructure is often scaled like an application). For my infrastructure definition repo, I will apply it in my terminal with kubectl, watch, and then merge the PR/commit to master. I often need to do this progressively just to roll back…

When you say infrastructure in this context, are you referring to the actual K8s cluster infra? Or is it what I tend to call "intra-cluster infra" - DBs / Prometheus / Kafka etc. Infra that support apps?

Sort of both - I tend to use a managed Kubernetes cluster (like EKS), so the infra repo has YAML for operators to deal with logging, monitoring, storage, secret management, etc. Anything that is not an application workload.

Re: How I think about Kubernetes

#56

On the use of GitOps for k8s, I think it makes sense for application workloads, and less sense for raw infrastructure definitions (unless you are running at such a scale that your infrastructure is often scaled like an application). For my infrastructure definition repo, I will apply it in my terminal with kubectl, watch, and then merge the PR/commit to master. I often need to do this progressively just to roll back…

This more direct interaction by using kubectl happens on a development cluster? Or is it on the same that runs production workloads?

Both, though I will get it working in dev first (and yes, I've tended to separate clusters by environment).

Re: How I think about Kubernetes

#57

Earlier quoted context omitted.

One of the issues is that the open source Helm charts (or whatever) for something like Grafana do not come out-of-the-box with good config. I spent a significant amount of time a little while ago reading blogs to get Grafana to use up to date indexing algorithms, and better settings, etc. Considering these companies make money when you use their hosted solution, this is not surprising, and it just goes to show TANSTA…

I like to use operators for intra-cluster infra, they tend to offer a "sorta-managed" experience. I'll use a Helm chart deployed by ArgoCD to provision the operator, then go from there - mainly because I try to limit Helm usage as much as possible.

Its a tradeoff, because operators will use some of your cluster's resources of course, but I get you.

Re: How I think about Kubernetes

#58
post #19

Earlier quoted context omitted.

Of course things can be simpler. Remove abstractions like CNI, CRI, just make these things built-in. Remove unnecessary things like Ingress, etc, you can always just deploy nginx or whatever reverse proxy directly. Also probably remove persistent volumes, they add a lot of complexity. Use some automatically working database, not separate etcd installation. Get rid of control plane. Every node should be both control p…

Some people want their k8s logs to be centralized with non k8s logs. Standardizing log storage seems like a challenging problem. Perhaps they could add built in log shipping . But even then, the transfer format needs to be specified. Adding an idp is pretty standard in k8s... What do you want to actually do different?

I want to add users via manifests, so these users could use logins/passwords/pubkeys, and that's out of the box, without installing dex, keycloak or delegating to other systems.

Think about Linux installation. I don't need to add IDP to create unix users for various people.

Right now it's super complicated in Kubernetes and even requires third-party extensions for kubectl.

Re: How I think about Kubernetes

#59
post #39

I sometimes joke that Kubernetes is a mass experiment in teaching people how to write Go via YAML. The giant nested YAML you come across is the input (pre-deserialization)/output (post-serialization) for the declared types: https://github.com/kubernetes/api/blob/master/core/v1/types.... Fortunately, or unfortunately, I am the only person that finds humor in this.

Writing go in yaml and forgetting everything else we learned software engineering. Proper ide's, being able to make abstractions, not copy pasting, structured templating and thus not string based templating, should I go on?

Re: How I think about Kubernetes

#60

Earlier quoted context omitted.

> What's the really simple K8s? It's k3s. You drop a single binary onto the node, run it, and you have a fully functional one-node k8s cluster.

You can find even more simplicity in Talos Linux[1]. Drop an ISO onto a USB, run a handful of commands[2] to generate and apply a configuration, and you've got a cluster up and running. [1] https://www.talos.dev/ [2] https://docs.siderolabs.com/talos/v1.12/getting-started/gett...

That's just making it easier, not simpler. I think the parent means, really a drop-in but simpler k8s
Post reply on HN