Live data from Hacker News

Gravity: Upstream Kubernetes packaging tools

github.com

31–40 of 43 posts

Re: Gravity: Upstream Kubernetes packaging tools

#31
post #3

I find each new development in the field of deploying Kubernetes to be grimly humorous. We had lots of techniques to package and deploy things before Kubernetes, but they were complex and inadequate in some ways, and Kubernetes fixes some of those issues. But it turns out Kubernetes itself is substantially more complicated to package and deploy than the old solutions, if you're deploying it yourself rather than using…

> We had lots of techniques to package and deploy things before Kubernetes, but they were complex and inadequate in some ways They worked very well for 30 years. And the new container-based tools inevitably end up doing the same mistakes, rediscovering the same solutions and we'll go back to the beginning. > turns out Kubernetes itself is substantially more complicated to package and deploy than the old solutions Exa…

> Exactly, and you can't solve a problem by making it more complex.

Sure you can. A resource scheduler is more complex than not having one, but it solves the single-point-of-failure problem and the bin-packing CPU+memory problem.

A more complex infrastructure means you can have dumber apps.

And there are lots of areas where this is true: TCP is a complex protocol which makes it easier to build reliable communication, CPUs have complex caches which make simple code faster, RAID makes multiple disks behave like a single disk to improve reliability or performance, compression is very complex (esp for audio/video) but dramatically reduces the size...

The implementation of kubernetes may be flawed, but the idea of kubernetes makes a lot of sense. It solves real problems.

Re: Gravity: Upstream Kubernetes packaging tools

#34
post #29

I played with this briefly last year but couldn't get it going in the time frame so I gave up. I wanted to like it but it was a bit unwieldy getting started, and I was not a fan of needing helm to bootstrap an installation. There also was a quirky installation workflow, could not set a key/password successfully for the life of me and it was unclear on if the cli needed a browser? May have to check this out again, hop…

Sorry to hear about your experience, the getting started experience is an ongoing challenge, there have been improvements in the last year, but we still have a long way to go as well.

Sorry if this wasn't clear, but helm actually isn't required at all, it's just a majority of our examples are written to use helm due helms popularity. The installation hooks really just boil down to kubernetes jobs, so anything that can be represented as a kubernetes job can be used for any of the hooks. This can be a simple script, a helm command, or a complicated custom built application.

The only feature really tied specifically to helm is the catalog feature, which is for building additional applications to be installed on top of an existing gravity cluster. That feature was built around a helm chart as a building block.

The cli should only need to invoke a browser when doing third party authentication flows, ie to use github for login. Using the gravity users invite will also generate a link to send to the enrolling user, so they can set their own password, setup 2fa, etc through the web interface.

We've also been trying to use our community site https://community.gravitational.com/ as a resource for being able to search and ask questions.

Disclaimer: I'm a developer on gravity.

Re: Gravity: Upstream Kubernetes packaging tools

#35
post #3

I find each new development in the field of deploying Kubernetes to be grimly humorous. We had lots of techniques to package and deploy things before Kubernetes, but they were complex and inadequate in some ways, and Kubernetes fixes some of those issues. But it turns out Kubernetes itself is substantially more complicated to package and deploy than the old solutions, if you're deploying it yourself rather than using…

> we'll extract the good parts out into something simpler

It's already been done and couple solutions exist: docker swarm, nomad. Depending on your stack complexity level.

The problem you've described arises when you try to use the wrong tool for the job, e.g. you're trying to use kubernetes for simple projects with small teams without dedicated OPS and SRE teams.

When you have large and complex infrastructure (e.g. GitLab) with complex networking and balancing level where the kubertenes like tools bring the most value you actually win by making your ops team work like a uber drivers (a little bit exaggerated) making standard decisions in standard environment. You just check the licence (certificates) and your infrastructure just work. No need for customised solutions anymore.

Re: Gravity: Upstream Kubernetes packaging tools

#36
post #3

I find each new development in the field of deploying Kubernetes to be grimly humorous. We had lots of techniques to package and deploy things before Kubernetes, but they were complex and inadequate in some ways, and Kubernetes fixes some of those issues. But it turns out Kubernetes itself is substantially more complicated to package and deploy than the old solutions, if you're deploying it yourself rather than using…

Kubernetes isn’t just a way to deploy your apps, though.

It’s also doing a ton of orchestration that many people just simply weren’t even doing before, or they had a human at a keyboard doing it. There’s a lot of value in that.

All of the package and deployment stuff is moving very quickly because the variety of organizations using k8s is quickly growing and using it for new use cases.

Things like application distribution was never a focus of Borg, because google doesn’t really distribute applications.

Re: Gravity: Upstream Kubernetes packaging tools

#37
post #33
post #7

Hard not to wonder if k8s is the new hadoop. "If you build it they will come" platform team thinking.

Hadoop did not event reach 1/10 of Kubernetes popularity.

That's very hard to eyeball in my opinion. Hadoop and its ecosystem fascinated a big chunk of the dev (and ops) world. Everybody and their dog wanted to be "into" Big Data. Data Lake. Realtime feeds, just add nodes (Cassandra), CQRS, and of course when Facebook said they are using HBase for Messenger, it meant that HBase is the new MySQL/Mongo/sliced-bread.

Then there was YARN, then Tez, Spark, Flink, and Drill, and various other projects that added to the hype (Aerospike, RamSQL, Kafka + Storm).

And ever new system had to be built like it'll be web scale from day one. Instagram was acquired in 2012, just 18 months after launch, and everyone knew that meant every new even barely "social" thing will blow up even faster than that. So you absolutely need to plan ahead, scale scale scale.

Compared to that people seem to be a bit more wary of k8s, especially because it's targeted at ops folks, and they are naturally predisposed to oppose changes they don't understand.

But that's just my - probably ridiculously non-representative - take on this :)

Re: Gravity: Upstream Kubernetes packaging tools

#38
post #3

I find each new development in the field of deploying Kubernetes to be grimly humorous. We had lots of techniques to package and deploy things before Kubernetes, but they were complex and inadequate in some ways, and Kubernetes fixes some of those issues. But it turns out Kubernetes itself is substantially more complicated to package and deploy than the old solutions, if you're deploying it yourself rather than using…

I find all the complexity quite unnecessary. I think the "package managers" attempt to do too much, handling some sort of use case that doesn't affect me. My highest success rate with randomly deploying someone else's software comes from software that just provides a bunch of API objects in YAML form that you just apply to the cluster. My second highest success rate comes from just writing my own manifest for some random docker image. Finally, operators tend to do pretty well if the development team is sane.

At this point, I think the fundamental problems are:

1) People desire to give you a "works out of the box" experience, so they write a packaging system that can install everything. The app depends on Postgres? Fuck it, we'll install Postgres for you! This is where things start to go wrong because self-hosting your own replicated relational database instance is far from trivial, and it requires you to dial in a lot of settings. And, of course, it requires even more settings to say "no no, I already have an instance, here is the secret that contains the credentials and here is its address."

2) Installing software appears to require answering questions that nobody knows the answers to. How much CPU and memory do I give your app? "I dunno we didn't load test it just give it 16 CPUs and 32G of RAM, if it needs more than that check your monitoring and give it more." "I only have 2 CPUs and 4G of RAM per node." "Oh, well, maybe that's enough or maybe it isn't. It won't blow up until you give it a lot of users though, so you will get to load test it for us while your users can't do any work. Report back and let us know how it goes!"

I also noticed that when security people get at the project, it tends to become unusable. I used to be a big fan of Kustomize for manifest generation. Someone decided to build it into kubectl by default, and that it should support pulling config from random sites on the Internet. So now if you use it locally, you can't refer to resources that are in ../something, because what if a remote manifest specified ../../../../../etc/shadow as the config source? Big disaster! So now it doesn't work. (They also replaced what I thought was the best documentation in the world, a kustomization.yaml file that simply used every available setting, with comments, with a totally unusable mass of markdown files that don't tell you how to use anything.)

Obviously security is a problem, but they should have said "just git clone the manifest yourself and review it" instead of "you can't use ../ on your local manifests that are entirely written by your own company and exist all inside the same git repository that you fully control". But they didn't, and now it sucks to use.

Re: Gravity: Upstream Kubernetes packaging tools

#39

Requiring a dedicated volume with at least 50 GB of space and 1500 privisioned IOPS just for etcd [1] seems excessive to me. How big a cluster, e.g. how many nodes and pods, is this for? [1]: https://gravitational.com/gravity/docs/ver/6.x/requirements/...

Even small clusters with K8s operators doing complex work (e.g.: autoscaling) can generate a lot of etcd traffic updating state. I'm not sure how (etcd) stateless Istio and other meshes are, too.

Re: Gravity: Upstream Kubernetes packaging tools

#40
post #31

Earlier quoted context omitted.

> We had lots of techniques to package and deploy things before Kubernetes, but they were complex and inadequate in some ways They worked very well for 30 years. And the new container-based tools inevitably end up doing the same mistakes, rediscovering the same solutions and we'll go back to the beginning. > turns out Kubernetes itself is substantially more complicated to package and deploy than the old solutions Exa…

> Exactly, and you can't solve a problem by making it more complex. Sure you can. A resource scheduler is more complex than not having one, but it solves the single-point-of-failure problem and the bin-packing CPU+memory problem. A more complex infrastructure means you can have dumber apps. And there are lots of areas where this is true: TCP is a complex protocol which makes it easier to build reliable communication,…

> A resource scheduler is more complex than not having one, but it solves the single-point-of-failure problem and the bin-packing CPU+memory problem.

And yet various FAANGs choose not to use a smart scheduler, because it does not improve efficiency and reliability enough to justify its complexity and scales poorly.

Post reply on HN