| ▲ | tombert 13 hours ago |
| I’ve come to the conclusion that I hate “cloud shit”, and a small part of me is convinced that literally no one actually likes it, and everyone is playing a joke on me. I have set up about a dozen rack mount servers in my life, installing basically every flavor of Unix and Linux and message busses under the sun in the process, but I still get confused by all the Kubectl commands and GCP integration with it. I might just be stupid, but it feels like all I ever do with Kubernetes is update and break YAML files, and then spend a day fixing them by copy-pasting increasingly-convoluted things on stackexchange. I cannot imagine how anyone goes to work and actually enjoys working in Kubernetes, though I guess someone must in terms of “law of large numbers”. If I ever start a company, I am going to work my damndest to avoid “cloud integration crap” as possible. Just have a VM or a physical server and let me install everything myself. If I get to tens of millions of users, maybe I’ll worry about it then. |
|
| ▲ | voidfunc 13 hours ago | parent | next [-] |
| I'm always kind of blown away by experiences like this. Admittedly, I've been using Kubernetes since the early days and I manage an Infra team that operates a couple thousand self-managed Kubernetes clusters so... expert blindness at work. Before that I did everything from golden images to pushing changes via rsync and kicking a script to deploy. Maybe it's because I adopted early and have grown with the technology it all just makes sense? It's not that complicated if you limit yourself to the core stuff. Maybe I need to write a book like "Kubernetes for Greybeards" or something like that. What does fucking kill me in the Kubernetes ecosystem is the amount of add-on crap that is pitched as "necessary". Sidecars... so many sidecars. Please stop. There's way too much vendor garbage surrounding the ecosystem and dev's rarely stop to think about whether they should deploy something when it's easy as dropping in some YAML and letting the cluster magically run it. |
| |
| ▲ | jq-r 10 hours ago | parent | next [-] | | Those "necessary" add-ons and sidecars are out of control, but its the people problem. I'm part of the infra team and we manage just couple of k8s clusters, but those are quite big and have very high traffic load. The k8s + terraform code is simple, with no hacks, reliable and easy to upgrade. Our devs love it, we love it too and all of this makes my job pleasant and as little stressful as possible. But we recently hired a staff engineer to the team (now the most senior) and the guy just cannot rest still. "Oh we need a service mesh because we need visibility! I've been using it on my previous job and its the best thing ever." Even though we have all the visibility/metrics that we need and never needed more than that. Then its "we need a different ingress controller, X is crap Y surely is much better!" etc. So its not inexperienced engineers wanting newest hotness because they have no idea how to solve stuff with the tools they have, its sometimes senior engineers trying to justify their salary, "seniority" by buying into complexity as they try to make themselves irreplaceable. | | |
| ▲ | ysofunny 7 hours ago | parent | next [-] | | > Then its "we need a different ingress controller, X is crap Y surely is much better!" etc. I regard these as traits of a junior dev. they're thinking technology-first, not problem-first | |
| ▲ | jppittma 8 hours ago | parent | prev | next [-] | | Service mesh is complicated, but the reason you use it integrate services across clusters. That and it has a bunch of useful reverse proxy features. On the other hand, It took me and 2 other guys two evenings of blood, sweat, and tears to understand what the fuck a virtual service actually does. It’s not strictly necessary, but if you’ve had to put in the work elsewhere, I’d use it. | |
| ▲ | cyberpunk 8 hours ago | parent | prev | next [-] | | To be fair, istio and cilium are extremely useful tools to have under your belt. There’s always a period of “omgwhat” when new senior engineers join and they want to improve things. There’s a short window between joining and getting bogged into a million projects where this is possible. Embrace it I recon. | | |
| ▲ | p_l 3 hours ago | parent [-] | | Doing it well IMO requires not deploying everything as sidecar but maybe, maybe, deploying it as shared node service. In fact pretty sure I've read a write up from Alibaba? on huge wins in performance due to moving Istio out of sidecar and into shared node service. | | |
| ▲ | cyberpunk an hour ago | parent [-] | | Sure, cilium is also much faster than istio. But I guess it depends on your workload. We don't care all that much about performance vs compliance (non-hft finance transactional stuff) and I think we're doing things reasonably well. :} | | |
| ▲ | p_l 24 minutes ago | parent [-] | | I didn't mean replace istio with cilium, I meant running the proxy and routing operations as shared part per node instead of per pod | | |
| ▲ | cyberpunk 7 minutes ago | parent [-] | | How does that even work with envoy? The magic sauce behind istio is that every connection is terminated using iptables into the envoy process (sidecar), and istiod spaffs envoy configurations around the place based on your vs/dr/pas/access controls etc. I suppose you could have a giant envoy and have all the proxy-configs all mashed together but I really don't see any benefit to it? I can't even find documentation that says it's possible.. |
|
|
|
| |
| ▲ | withinboredom 7 hours ago | parent | prev | next [-] | | > So its not inexperienced engineers wanting newest hotness because they have no idea how to solve stuff with the tools they have, its sometimes senior engineers trying to justify their salary, "seniority" by buying into complexity as they try to make themselves irreplaceable. The grass is always greener where you water it. They joined your company because the grass was greener there than anywhere else they could get an offer at. They want to keep it that way or make it even greener. Assuming that someone is doing something to become 'irreplaceable' is probably not healthy. | | | |
| ▲ | alienchow 8 hours ago | parent | prev | next [-] | | How do you scale mTLS ops when the CISO comes knocking? | |
| ▲ | 6 hours ago | parent | prev [-] | | [deleted] |
| |
| ▲ | carlmr 9 hours ago | parent | prev | next [-] | | >expert blindness at work. >It's not that complicated if you limit yourself to the core stuff. Isn't this the core problem with a lot of technologies. There's a right way to use it, but most ways are wrong. An expert will not look left and right anymore, but to anyone entering the technology with fresh eyes it's a field with abundance of landmines to navigate around. It's simply bad UX and documentation. It could probably be better. But now it's too late to change everything because you'd annoy all the experts. >There's way too much vendor garbage surrounding the ecosystem Azure has been especially bad in this regard. Poorly documented in all respects, too many confusing UI menus that have similar or same names and do different things. If you use Azure Kubernetes the wrapper makes it much harder to learn the "core essentials". It's better to run minkube and get to know k8s first. Even then a lot of the Azure stuff remains confusing. | | |
| ▲ | wruza 9 hours ago | parent | next [-] | | This and a terminology rug pull. You wanted to upload a script and install some deps? Here’s your provisioning genuination frobnicator tutorial, at the end of which you’ll learn how to maintain the coalescing encabulation for your appliance unit schema, which is needed for automatic upload. It always feels like thousands times bigger complexity (just in this part!) than your whole project. | |
| ▲ | rbanffy 6 hours ago | parent | prev [-] | | > There's a right way to use it, but most ways are wrong. This is my biggest complaint. There is no simple obvious way to set it up. There is no "sane default" config. > It's better to run minkube and get to know k8s first. Indeed. It should be trivial to set up a cluster from bare metal - nothing more than a `dnf install` and some other command to configure core functionality and to join machines into that cluster. Even when you go the easy way (with, say, Docker Desktop) you need to do a lot of steps just to have an ingress router. | | |
| ▲ | zelphirkalt an hour ago | parent | next [-] | | That is actually what my "try out for a day" experience with Nomad was years ago. Just run the VMs, connect them, and they auto load balance. While it took a week or so to get even the most basic stuff in Kubernetes and not even have 2 hosts in a cluster yet, while having to deal with hundreds of pages of bad documentation. I think since then the documentation probably has improved. I would hope so. But I will only touch Kubernetes again, when I need to. So maybe on a future job. | |
| ▲ | p_l 3 hours ago | parent | prev [-] | | The easy baremetal cluster these days is k3s. Includes working out of the box ingress controller. |
|
| |
| ▲ | stiray 12 hours ago | parent | prev | next [-] | | I would buy the book. Just translate all "new language" concepts into well known concepts from networking and system administration. It would be best seller. If I would only have a penny for each time I wasted hours trying to figure out what something in "modern IT" is, just to figure out that I already knew what it is, but it was well hidden under layers of newspeak... | | | |
| ▲ | t-writescode 13 hours ago | parent | prev | next [-] | | > Admittedly, I've been using Kubernetes since the early days and I manage an Infra team I think this is where the big difference is. If you're leading a team and introduced all good practices from the start, then the k8s and Terraform or whatever config files can never get so very complicated that a Gordian knot isn't created. Perhaps k8s is nice and easy to use - many of the commands certainly are, in my experience. Developers have, over years and decades, learned how to navigate code and hop from definition to definition, climbing the tree and learning the language they're operating in, and most of the languages follow similar-enough patterns that they can crawl around. Configuring a k8s cluster has absolutely none of that knowledge built up; and, reading something that has rough practices is not a good place to learn what it should look like. | | |
| ▲ | paddy_m 8 hours ago | parent [-] | | Thank you. I can always xargs grep for a function name, at worst. Dir() in python at a debugger for other things. With YAML, kubernetes and other devops hotness, I frequently can’t even find the relevant scripts/YAML that are executed nor their codebases. This also happens with configuration based packaging setups. Python hatch in particular, but sometimes node/webpack/rollup/vite. |
| |
| ▲ | karmarepellent 10 hours ago | parent | prev | next [-] | | Agreed. The best thing we did back when we ran k8s clusters, was moving a few stateful services to dedicated VMs and keep the clusters for stateless services (the bulk) only. Running k8s for stateless services was an absolute bliss. At that time stateful services were somewhat harder to operate on k8s because statefulness (and all that it encapsulates) was kinda full of bugs. That may certainly have changed over the last few years. Maybe we just did it wrong. In any case if you focused on the core parts of k8s that were mature back then, k8s was (and is) a good thing. | |
| ▲ | thiht an hour ago | parent | prev | next [-] | | > It's not that complicated if you limit yourself to the core stuff Completely agree. I use Kubernetes (basically just Deployments and CronJobs) because it makes deployments simple, reliable and standard, for a relatively low cost (assuming that I use a managed Kubernetes like GKE where I don’t need to care at all about the Kubernetes engine). Using Kubernetes as a developer is really not that hard, and it gives you no vendor lock-in in practice (every cloud provider has a Kubernetes offer) and easy replication. It’s not the only solution, not the simplest either, but it’s a good one. And if you already know Kubernetes, it doesn’t cost much to just use it. | |
| ▲ | figassis 13 hours ago | parent | prev | next [-] | | This, all the sidecars. Use kubernetes to run your app like you would without it, take advantage of the flexibility, avoid the extra complexity. Service discovery sidecars? Why not just use the out of the box dns features? | | |
| ▲ | tommica 12 hours ago | parent [-] | | Because new people don't know better - I've never used k8s, but have seen sidecars being promoted as a good thing, so I might have used them | | |
| ▲ | namaria 6 hours ago | parent [-] | | Maybe the "I've heard about" approach to tooling is the problem here? |
|
| |
| ▲ | tombert 2 hours ago | parent | prev | next [-] | | If I had set up the infrastructure myself I'd probably have a different opinion on all of this stuff, but I came into this job where everything was set up for me. I don't know if it was don't "incorrectly", and I do fear that stating as such might get into territory adjacent to the "no true Scotsman" fallacy. I mostly just think that k8s integration with GCP is a huge pain in the ass, every time I have to touch it it's the worst part of me day. | | |
| ▲ | fragmede 2 hours ago | parent [-] | | What about your integration makes it a huge pita? | | |
| ▲ | tombert 2 hours ago | parent [-] | | It's just a lot of stuff; we have a couple hundred services, and when I've had to add shit, it ends up with me updating like two hundred files. Infrastructure as code is great, but lets be honest, most people are not thoroughly reading through a PR with 200+ files. There's of course tpl files to help reduce duplication, and I'm grateful for that stuff when I can get it, but for one reason or another, I can't always do that. It's also not always clear to me which YAML corresponds to which service, though I think that might be more of an issue with our individual setup. |
|
| |
| ▲ | pas 9 hours ago | parent | prev | next [-] | | My problem is the brittleness. Sure, I am playing with fire (k3s, bare metal, cilium, direct assigned IP to Ingresses), but a few weeks ago on one cluster suddenly something stopped working in the external IP -> internal cluster IP network path. (And after a complete restart things got worse. Oops. Well okay time to test backups.) | |
| ▲ | coldtea 8 hours ago | parent | prev | next [-] | | >Before that I did everything from golden images to pushing changes via rsync and kicking a script to deploy. Sounds like a great KISS solution. Why did it regress into Kubernetes? | |
| ▲ | mitjam 12 hours ago | parent | prev | next [-] | | Absolutely, a reasonably sophisticated scalable app platform looks like a half-baked and undocumented reimagination of Kubernetes. Admittedly: The ecosystem is huge and less is more in most cases, but the foundation is cohesive and sane. Would love to read the k8s for greybeards book. | | |
| ▲ | coldtea 8 hours ago | parent [-] | | >Absolutely, a reasonably sophisticated scalable app platform looks like a half-baked and undocumented reimagination of Kubernetes. Or maybe Kubernetes looks like a committee designed, everything and the kitchen sink, over-engineered, second system effect, second system effect suffering, YAGNI P.O.S., that only the kind of "enterprise" mindset that really enjoyed J2EE in 2004 and XML/SOAP vs JSON/REST would love... | | |
| |
| ▲ | cryptonym 9 hours ago | parent | prev | next [-] | | K8S is a beast and the ecosystem is wild. Newcomer won't know how to proceed to keep things simple, while still understanding everything that is being used. | |
| ▲ | BiteCode_dev 10 hours ago | parent | prev | next [-] | | Would buy. But you probably should teach a few live courses before writing it because of expert blindness. Otherwise you will miss thr mark. Would pay for a decent remote live course intro. | |
| ▲ | awestroke 10 hours ago | parent | prev | next [-] | | I would buy that book in a heartbeat. All documentation and guides on kubernetes seem to assume you already know why things are done a certain way | |
| ▲ | DanielHB 10 hours ago | parent | prev | next [-] | | > What does fucking kill me in the Kubernetes ecosystem is the amount of add-on crap that is pitched as "necessary". Sidecars... so many sidecars. Yeah it is the same with terraform modules, I was trying to argument at a previous job that we should stick to a single module (the cloud provider module) but people just love adding crap if it saves them 5 lines of configuration. Said crap of course adding tons of unnecessary resources in your cloud that no one understands. | |
| ▲ | theptrk 12 hours ago | parent | prev | next [-] | | I would pay for the outline of this book. | |
| ▲ | quietbritishjim 8 hours ago | parent | prev | next [-] | | I hardly know the first thing about Kubernetes or cloud, so maybe you can help explain something to me: There's another Kubernetes post on the front page of HN at the moment, where they complain it's too complex and they had to stop using it. The comments are really laying into the article author because they used almost 50 clusters. Of course they were having trouble, the comments say, if you introduce that much complexity. They should only need one single cluster (maybe also a backup and a dev one at most). That's the whole point. But then here you are saying your team "operates a couple thousand" clusters. If 50 is far too many, and bound to be unmanageable, how is it reasonable to have more than a thousand? | | |
| ▲ | voidfunc 5 hours ago | parent | next [-] | | > But then here you are saying your team "operates a couple thousand" clusters. If 50 is far too many, and bound to be unmanageable, how is it reasonable to have more than a thousand? It's not unmanageable to have a couple thousand Kube clusters but you need to have the resources to build a staff and tool chain to support that, which most companies cannot do. Clusters are how we shard our customer workloads (a workload being say a dozen services and a database, a customer may have many workloads spread across the entire fleet). We put between 100 and 150 workloads per cluster. What this gives us is a relatively small impact area if a single cluster becomes problematic as it only impacts the workloads on it. | |
| ▲ | jalk 5 hours ago | parent | prev [-] | | Sounds like it's their primary job is to manage clusters for others, which ofc is different from trying to manage your primary service, that you deployed as 50 microservices in individual clusters (didn't read the other article) |
| |
| ▲ | adastra22 13 hours ago | parent | prev | next [-] | | I would buy that book. | |
| ▲ | AtlasBarfed 12 hours ago | parent | prev | next [-] | | So you don't run any databases in those thousands of clusters? To your point, and I have not used k8s I just started to research it when my former company was thinking about shoehorning cassandra into k8s... But there was dogma around not allowing access to VM command exec via kubectl, while I basically needed it in the basic mode for certain one-off diagnosis needs and nodetool stuff... And yes, some of the floated stuff was "use sidecars" which also seemed to architect complexity for dogma's sake. | | |
| ▲ | voidfunc 12 hours ago | parent | next [-] | | > So you don't run any databases in those thousands of clusters? We do, but not of the SQL variety (that I am aware of). We have persistent key-value and document store databases hosted in these clusters. SQL databases are off-loaded to managed offering's in the cloud. Admittedly, this does simplify a lot of problems for us. | | |
| ▲ | tayo42 12 hours ago | parent [-] | | How much data?
I keep hearing k8s isn't usable becasue sometimes there is to much data and it can't be moved around. | | |
| ▲ | darkstar_16 10 hours ago | parent | next [-] | | In the managed k8s space, the data is on a PVC in the same availability zone as the node it is being mounted on. If the node dies, the volume is just mounted on to a new node in the same zone. There is no data movement required. | |
| ▲ | eek04_ 9 hours ago | parent | prev | next [-] | | While I've not played with k8, I did run stuff in Google's Borg for a very long while, and that has a similar architecture. My team was petabyte scale and we were far from the team with the largest footprint. So it is clearly possible to handle large scale data in this type of architecture. | |
| ▲ | pletnes 11 hours ago | parent | prev [-] | | The simplest approach I’m aware of is to create the k8s cluster and databases in the same datacenter / availability zone. |
|
| |
| ▲ | pas 8 hours ago | parent | prev [-] | | postgresql operators are pretty nice, so it makes sense to run stateful stuff on k8s (ie. for CI, testing, staging, dev, etc.. and probably even for prod if there's a need to orchestrate shards) > exec kubectl exec is good, and it's possible to audit access (ie. get kubectl exec events with arguments logged) and I guess and admissions webhook can filter the allowed commands but IMHO it's shouldn't be necessary, the bastion host where the "kubectl exec" is run from should be accessible only through an SSH session recorder |
| |
| ▲ | khafra 7 hours ago | parent | prev [-] | | Container orchestration is second nature to us SRE's, so it's easy to forget that the average dev probably only knows the syntax for deployments and one or two service manifests. And pods, of course | | |
| ▲ | pdimitar 2 hours ago | parent [-] | | A factor for sure, but as a programmer I find that the discoverability of stuff in code is much higher than with k8s. Give me access to a repo full of YAML files and I'm truly and completely lost and wouldn't even know where to begin. YAML is simply not the right tool for this job. Sure you got used to it but that's exactly the point: you had to get used to it. It was not intuitive and it did not come naturally to you. |
|
|
|
| ▲ | torginus 9 hours ago | parent | prev | next [-] |
| Kubernetes starts sucking at first sight and is kind of the sign of the ailment of modern times. Let me try to explain: First, you encounter the biggest impedance mismatch between cloud and on prem: Kubernetes works with pods, while AWS works with instances as the unit of useful work, so they must map to each other, right? Wrong, first each instance needs to run a Kubernetes node, which duplicates the management infrastructure hosted by AWS, and reduces the support for granularity, like if I need 4 cores for my workload, I start an instance with 4 cores, right?. Not so with k8s, you have to start up a big node, then schedule pods there. Yay, extra complexity and overhead! And it's like when you need 3 carrots for the meal your cooking, but the store only sells it in packs of 8, you have to pay for the ones you don't need, and then figure out how to utilize the waste. I'm not even going to talk about on-prem kubernetes, as I've never seen anyone IRL use it. Another thing is that the need for kubernetes is manifestation of crappy modern dev culture. If you wrote your server in node, Python and Ruby, you're running a single threaded app in the era of even laptops having 32 core CPUs. And individual instances are slow, so you're even more dependent on scaling. So, to make use of the extra CPU power, you're forced to turn to Docker/k8s and scale your infra that way, whereas if you went with something like Go, or god forbid, something as deeply uncool as ASP.NET, you could just put your 32 core server, and you get fast single threaded perf, and perfect and simple multi-threaded utilization out of the box without any of the headaches. Also I've found stuff like rolling updates to be a gimmick. Also a huge disclaimer, I don't think k8s is a fundamentally sucky or stupid thing, it's just I've never seen it used as a beneficial architectural pattern in practice. |
| |
| ▲ | erinaceousjones 8 hours ago | parent | next [-] | | Being nitpicky about Python specifically, Python not necessarily single-threaded; gunicorn gets you a multiprocess HTTP/WSGI server if you configure it to. asyncio and gevent have made it easier to do things actually-concurrently. Judicious use of generator functions lets you stream results back instead of blocking I/O for big chunks. And we have threads. Yeah, the Global Interpreter Lock is still hanging around, it's not the fastest language, but there are ways to produce a Docker image of an API written in Python which can handle thousands of concurrent HTTP requests and actively use all available CPU cores to do intensive computation. | | | |
| ▲ | regularfry 8 hours ago | parent | prev | next [-] | | It really, really wants a higher-level abstraction layer over the top of it. I can see how you'd build something heroku-like with it, but exposing app developers to it just seems cruel. | | |
| ▲ | switch007 7 hours ago | parent | next [-] | | > I can see how you'd build something heroku-like with it That's what many teams end up half-arsing without realising they're attempting to build a PaaS. They adopt K8S thinking it's almost 90% a PaaS. It's not. They continue hiring, building a DevOps team just to handle K8S infrastructure things, then a Platform team to build the PaaS on top of it. Then because so many people have jobs, nobody at this point wants to make an argument that perhaps using an actual PaaS might make sense. Not to mention "the sunk cost" of the DIY PaaS. Then on top of that, realising they've built a platform mostly designed for microservices, everything then must become a microservice. 'Monolith' is a banned word. Argh | |
| ▲ | torginus 8 hours ago | parent | prev [-] | | Thing is, k8s is already an abstraction layer on top of something like AWS or GCP |
| |
| ▲ | ndjdjddjsjj 6 hours ago | parent | prev [-] | | Run a node process on each core? |
|
|
| ▲ | mrweasel 9 hours ago | parent | prev | next [-] |
| I wouldn't throw "cloud shit" in the same bucket as Kubernetes. Professional cloud services are mostly great, but super expensive. Kubernetes is interesting, because it basically takes everything you know and sort of pushes it down the stack (or up, depending on your viewpoint). To some extend I get the impression that the idea was: Wouldn't it be great if we took all the infrastructure stuff, and just merged the whole thing into one tool, which you can configure using a completely unsuitable markup language. The answer is that "No, that would in fact not be great". For me the issue is that Kubernetes is overused. You can not really argue that it's not useful or has its place, but that place is much much small than the Internet wants us to believe. It's one of the few services where I feel like "Call us" would be an appropriate sales method. The article is correct, you probably don't need Kubernetes. It's a amazing piece of technology, but it's not for the majority of us. It is and should be viewed as a niche product. |
| |
| ▲ | nixpulvis 6 hours ago | parent [-] | | What do you think its niche is? | | |
| ▲ | mrweasel 5 hours ago | parent [-] | | Very large "single product" services, the focus being on "very large". It would also be relevant in the cases where your product is made up of a large number of micro-services, though if you have more than 50 services to support your main product I'd be interested in knowing why you have that many services. There might be completely sane reasons, but it is a special case. Mostly a question of scale to me, I'd guess that the majority (80-90%) of people running Kubernetes don't have large enough scale that it makes sense to take on the extra complexity. Most Kubernetes installations I've seen runs on VMs, three for control plane and 2 - 5 for worker node and I don't think the extra layer is a good trade off for a "better" deployment tool. If you do use Kubernetes as a deployment tool, then I can certainly understand that. It is a reasonably well-known, and somewhat standardised interface and there's not a lot of good alternatives for VMs and bare metal. Personally I'd just much rather see better deployment tools being developed, rather than just picking Kubernetes because Helm charts are a thing. You'd also need to have a rather dynamic workload, in the sense that some of your services is need a lot of capacity at one point in time, while other need the capacity at another time. If you have constant load, then why? It's like Oracle's Exadata servers, it's a product that has its place, but the list of potential buyers isn't that long. |
|
|
|
| ▲ | jmb99 9 hours ago | parent | prev | next [-] |
| I have pretty much the exact same opinion, right down to “cloud shit” (I have even used that exact term at work to multiple levels of management, specifically “I’m not working on cloud shit, you know what I like working on and I’ll do pretty much anything else, but no cloud shit”). I have worked on too many projects where all you need is a 4-8 vCPU VM running nginx and some external database, but for some reasons there’s like 30 containers and 45 different repos and 10k lines of terraform, and the fastest requests take 750ms which should be nginx->SQL->return in <10ms. “But it’s autoscaling and load balanced!” That’s great, we have max 10k customers online at once and the most complex requests are “set this field to true” and “get me an indexed list.” This could be hosted on a raspberry pi with better performance. But for some reason this is what people want to do. They would rather spend hours debugging kubernetes, terraform, and docker, and spending 5 digits on cloud every month, to serve what could literally be proxied authenticated DB lookups. We have “hack days” a few times a year, and I’m genuinely debating rewriting the entire “cloud” portion of our current product in gunicorn or something, host it on a $50/month vps, point it at a mirror of our prod db, and see how many orders of magnitude of performance I can knock off in a day. I’ve only managed to convert one “cloud person” to my viewpoint but it was quite entertaining. I was demoing a side project[0] that involved pulling data from ~6 different sources (none hosted by me), concatenating them, deduping them, doing some math, looking up in a different source an image (unique to each displayed item), and then displaying the list of final items with images in a list or a grid. ~5k items. Load time on my fibre connection was 200-250ms, sorting/filtering was <100ms. As I was demoing this, a few people asked about the architecture, and one didn’t believe that it was a 750 line python file (using multiprocessing, admittedly) hosted on an 8 core VPS until I literally showed up. He didn’t believe it was possible to have this kind of performance in a “legacy monolithic” (his words) application. I think it’s so heavily ingrained in most cloud/web developers that this is the only option that they will not even entertain the thought that it can be done another way. [0] This particular project failed for other reasons, and is no longer live. |
| |
| ▲ | throwaway2037 8 hours ago | parent | next [-] | | These comments: > He didn’t believe it was possible to have this kind of performance in a “legacy monolithic” (his words) application.
> I think it’s so heavily ingrained in most cloud/web developers that this is the only option that they will not even entertain the thought that it can be done another way.
One thing that I need to remind myself of periodically: The amount of work that a modern 1U server can do in 2024 is astonishing. | | |
| ▲ | sgarland 6 hours ago | parent | next [-] | | Hell, the amount of work that an OLD 1U can do is absurd. I have 3x Dell R620s (circa-2012), and when equipped with NVMe drives, they match the newest RDS instances, and blow Aurora out of the water. I’ve tested this repeatedly, at multiple companies, with Postgres and MySQL. Everyone thinks Aurora must be faster because AWS is pushing it so hard; in fact, it’s quite slow. Hard to get around physics. My drives are mounted via Ceph over Infiniband, and have latency measured in microseconds. Aurora (and RDS for that matter) has to traverse much longer physical distances to talk to its drives. | |
| ▲ | HPsquared 8 hours ago | parent | prev [-] | | It's nice to think about the amount of work done by game engines, for instance. Factorio is a nice example, or anything graphics-heavy. |
| |
| ▲ | jiggawatts 8 hours ago | parent | prev | next [-] | | Speaking of Kubernetes performance: I had a need for fast scale-out for a bulk testing exercise. The gist of it was that I had to run Selenium tests with six different browsers against something like 13,000 sites in a hurry for a state government. I tried Kubernetes, because there's a distributed Selenium runner for it that can spin up different browsers in individual pods, even running Windows and Linux at the same time! Very cool. Except... Performance was woeful. It took forever to spin up the pods, but even once things had warmed up everything just ran in slow motion. Data was slow to collect (single-digit kilobits!), and I even saw a few timeout failures within the cluster. I gave up and simply provisioned a 120 vCPU / 600 GB memory cloud server with spot pricing for $2/hour and ran everything locally with scripts. I ended up scanning a decent chunk of my country's internet in 15 minutes. I was genuinely worried that I'd get put on some sort of "list" for "attacking" government sites. I even randomized the read order to avoid hammering any one site too hard. Kubernetes sounds "fun to tinker with", but it's actually a productivity vampire that sucks up engineer time. It's the Factorio of cloud hosting. | | |
| ▲ | pdimitar 2 hours ago | parent [-] | | > I gave up and simply provisioned a 120 vCPU / 600 GB memory cloud server with spot pricing for $2/hour and ran everything locally with scripts. I ended up scanning a decent chunk of my country's internet in 15 minutes. Now that is a blog post that I would read with interest, top to bottom. |
| |
| ▲ | mschuster91 8 hours ago | parent | prev [-] | | I mostly agree with you, but at least using Docker is something one should be doing even if one is on bare metal. Pure bare metal IME only leads to people ssh'ing to hotfix something and forgetting to deploy it. Exclusively using Docker images prevents that. Also, it makes firewall management much, much easier as you can control containers' network connectivity (including egress) each on their own, on a bare-metal setup it involves loads of work with network namespaces and fighting the OS-provided systemd unit files. |
|
|
| ▲ | chromanoid 8 hours ago | parent | prev | next [-] |
| IMO the actual experience you want is something as simple as you can do with those old-school simple PHP-based "serverless" web hosters. You just upload your stuff and maybe configure a database URL and that's it. Regarding AWS, function.zip Lambda + DynamoDB + S3 + SQS is basically this at "enterprise-grade". Now you have the in-between left, where you want enterprise-grade (availability, scaling and fault tolerance) but with a catch (like lower costs, more control, data sovereignty or things that are not as serverless as you want, e.g. search engine etc.). In these cases you will run into many trade-off decisions, that may lead you to K8s, cloud specific stacks and also simple VM ClickOps / ShellOps setups. As long as you can still be on the pet instead of cattle range of problems, K8s is not what you want. But as soon as you want cattle, reproducible throw-away online environments etc. "just have a VM or a physical server" will become a "build your own private cloud solution" that may or may not become a bad private cloud / K8s. |
|
| ▲ | stiray 13 hours ago | parent | prev | next [-] |
| I agree, but what pisses me the most is that today higher level abstractions (like cloud, spring boost,...) are hiding lower level functionality so well, that you are literally forced to use obnoxious amounts of time to study documentation (if you are in luck and it is well written), while everything is decorated with new naming of known concepts that was invented by people who didn't know that the concept already exists and has a name or some marketing guy figured out it will sell better with more "cool" name. Like Shakespeare work would be clumsy and half translated to french advertising jargoon and you are forced to read it and make it work on a stage. |
| |
| ▲ | datadeft 10 hours ago | parent [-] | | The real benefits of LLMs is to give me a good summary of these documents. Still, using these abstractions is probably not worth it. | | |
| ▲ | PittleyDunkin 8 hours ago | parent | next [-] | | Well, a summary. It's impossible to evaluate the quality of the summary without actually reading the document you're trying to avoid reading. | |
| ▲ | stiray 7 hours ago | parent | prev [-] | | LLMs are a symptom, not a solution. Just another over-hyped bullshit (those downvoting will agree in few years or never as they are the ones riding the hype) that its only concern is to boost company stocks. Google is the proof, their search started to suck immediately when they added AI into concept. It promotes bullshit, while it doesn't hit the really relevant results, even if you specify them into the details. If AI would have any real value, it would never be given out for free and this is the case: they have a solution and they are searching for a problem it solves. |
|
|
|
| ▲ | andyjohnson0 8 hours ago | parent | prev | next [-] |
| Kubernetes was developed by Google, and it seems to me it's a classic example of a technology that can work well in a resource-rich (people, money) environment. But in an averge business it becomes a time/money sink quite quickly. Way too many businesses cargo-cult themselves into thinking that they need FAANG-class infra, even though they haven't got the same scale or the same level of resourcing. Devs and ops people love it because they get to cosplay and also get the right words on their CV. If you're not Google-scale then, as you say, a few VMs or physical boxes are all you need for most systems. But its not sexy, so the business needs people who don't mind that. |
|
| ▲ | devjab 12 hours ago | parent | prev | next [-] |
| I don’t mind the cloud, but even in enterprise organisations I fail to see the value of a lot of the more complex tools. I’ve anlways worked with Azure because Denmark is basically Microsoft territory in a lot of non-tech organisations because of the synergy between pricing and IT operations staff. I’ve done bicep, terraform and both Kubernetes and the managed (I forgot what azure conteiner apps running on top of what is basically Kubernetes is called). When I can get away with it I always use the Azure CLI through bash scripts in a pipeline however and build directly into Azure App services for contained which is just so much less complicated than what you probably call “cloud shit”. The cool part about the Azure CLI and their app services is that it hasn’t really changed in the past 3 years, and they are almost one size fit any organisation. So all anyone needs to update in the YAML scripts are the variables. By contrast working with Bicep/Terraform, Jenkins and whatever else people use has been absolutely horrible, sometimes requiring full time staff just to keep it updated. I suppose it may be better now that azure co-pilot can probably auto-generate what you need. A complete waste of resources in my opinion. It used to be more expensive, but with the last price hike of 600% on azure container apps it’s usually cheaper. It’s also way more cost efficient in terms of maintaining since it’ll just work after the initial setup pipeline has run. This is the only way I have found that is easier than what it was when organisations ran their own servers. Whether it was in the basement or at some local hardware house (not exactly sure what you call the places where you rent server rack space). Well places like Digital Ocean are even easier but they aren’t used by enterprise. I’m fairly certain I’ve ever worked with an organisation that needed anything more than that since basically nothing in Denmark scales beyond what can run on a couple of servers behind a load balancer. One of the few exceptions is the tax system which sees almost 0 usage except for the couple of weeks where the entire adult population logs in in at the same time. When DevOps teams push back, I tend to remind them that StackOverflow ran on a couple of IIS servers for a while and that they don’t have even 10% of the users. Eventually the business case for Azure will push people back to renting hardware space or jumping to Hetzner and similar. But that’s a different story. |
| |
| ▲ | DanielHB 10 hours ago | parent | next [-] | | Terraform has the same problem as Kubernetes sidecars with terraform providers trying to do magic for you. If you stick to the cloud platform provider it is actually much nicer than using the CLI. Although my experience is with AWS, I find the terraform AWS provider docs better documentation than the official AWS docs for different options. If they don't answer any question I have right away they at least point me where to look for answers in the mess that is AWS docs. | |
| ▲ | MortyWaves 8 hours ago | parent | prev [-] | | This was a good read! I have similar thoughts especially about IaC vs a bash script. Definitely clear pros and cons to both, but I’m wondering how you handle infrastructure drift with imperative bash scripts? I mean hopefully no one is logging into Azure to fuck with settings but I’m sure we’ve all worked with that one team that doesn’t give a flying fuck about good practices. Or say you wish to now scale up a VM, how does your bash script deal with that? Do you copy past the old script, pass new flags to the Azure CLI, and then run that, then delete the old infrastructure somehow? I’m curious because I think I’d like to try your approach. | | |
| ▲ | devjab 3 hours ago | parent [-] | | I think you’ve nailed the issues with this approach. I think the best approach to control “cowboy” behaviour is to make everything run through a service connection so that developers don’t actually need access to your azure resources. Though to be fair, I’ve never worked with a non-tech enterprise organisation where developers didn’t have at least some access into Azure directly. I also think the best way to avoid dangers in areas like networking is to make sure the responsibility for these are completely owned by IT-Operations. With VNETs and private DNS zones in places all you really need to allow is for the creation of private end points and integration to the network resources. Similarity I think it’s best practice to have things like key vaults managed by IT operations with limited developer access, but this can depend on your situation. One of the things I like about the Azure CLI is that it rarely changes. I would like to clarify that I’m mainly talking about Azure App Services and not VMs. Function apps for most things, web apps for things like APIs. As far as the script goes they are basically templates which are essentially “copy paste”. One of the things I tend to give developers in these organisations is “skeleton” projects that they can git clone. So they’ll typical also have some internal CLI scripts to automate a lot of the code generation and an azure-pipelines-resource-creation.yml plays into this. Each part of your resource creation is its own “if not exist” task. So there is a task to create a resource group. Then a task to create an app service plan and so on. It won’t scale. But it will scale enough for every organisation I’ve worked with. To be completely honest it’s something which grew out of my frustration of repeating the same tasks in different ways over the years. I don’t remember exactly but I think quite a few of the AZ CLI commands haven’t change for the past three years. It’s really the one constant across organisations, even the Azure Poetal hasn’t remained the same. |
|
|
|
| ▲ | antihero 7 hours ago | parent | prev | next [-] |
| I think a good compromise is building your applications in a containerised manner so that you can simply run them with docker-compose, but then if it turns out you need some heavy scale, it's merely a case of switching the underlying infrastructure. That said, my experience has been fairly different. Running microk8s on a VPS with some containers and an ingress just seems like a nice way to spin them up as pods and manage them. It really doesn't feel that complicated. Once you integrate with cloud providers and you get more complex systems, sure, it gets more complex. I much prefer the container paradigm for separating parts of apps out and managing dependencies and reproducibility. Having a bunch of raw servers with all the bullshit and drift and mutability that comes along with it feels far more like a headache to me than the abstraction of k8s or docker. If you aren't deploying stuff with GitOps/IaC in 2024 I fear for anyone that has to manage or maintain it. 100% reproducibility and declarative infrastructure are wonderful things I could never come back from. |
|
| ▲ | ozim 12 hours ago | parent | prev | next [-] |
| I am running VPSes at our small startup-ish company on IaaS cloud. Every time we get a new guy I have to explain that we are already „in cloud” there is no need to „move to cloud”. |
| |
| ▲ | rcleveng 12 hours ago | parent [-] | | Do they mean PAAS vs IAAS when they say "move to cloud"? | | |
| ▲ | ozim 11 hours ago | parent [-] | | Mostly business guys don’t know the difference but we are running on local cloud provider and they think of it is not on Azure or AWS it is not in cloud - they understand that we run stuff on servers but they also don’t understand VPS is IaaS. Developers want to use PaaS and also AWS or Azure so they can put it on their resume for the future. | | |
| ▲ | bluehatbrit 10 hours ago | parent [-] | | > Developers want to use PaaS and also AWS or Azure so they can put it on their resume for the future. I think this is a little disingenuous. Developers want to use them because they already know them. The services composing them are also often well documented by the provider. I say all of that as someone trying to move a company away from aws, and over to our own hardware. | | |
| ▲ | PittleyDunkin 8 hours ago | parent [-] | | I want to use them because I'm not paying for it and managing your own hardware is a pain in the ass I'd rather avoid when I could just code instead. Which is not to say that using your own hardware isn't smart, but it is definitely miserable. | | |
| ▲ | regularfry 8 hours ago | parent [-] | | In my experience you swap managing your own hardware for managing intensely obtuse service configurations, pretty much 1:1. That might be preferable but I see a lot of folks approach it like the tradeoff doesn't exist. |
|
|
|
|
|
|
| ▲ | bob1029 11 hours ago | parent | prev | next [-] |
| Cloud is a broad spectrum of tools. I think the Goldilocks zone is something right in between bare-ass VMs and FaaS. If I can restart the machine and it magically resolves the underlying hardware fault (presumably by migrating me to a new host), then I am in a happy place. Most of the other problems can be dealt with using modern tooling. I lean aggressively on things like SQLite and self-contained deployments in .NET to reduce complexity at hosting time. When you can deploy your entire solution with a single zip file you would be crazy to go for something like K8s. One other cloud thing that is useful is S3-style services. Clever use of these APIs can provide incredible horizontal scalability for a single instance solution. SQLite on NVMe is very fast if you are offloading your blobs to another provider. |
|
| ▲ | grishka 11 hours ago | parent | prev | next [-] |
| > If I get to tens of millions of users, maybe I’ll worry about it then. Nope, then you'll set up sharded databases and a bunch of application servers behind a load balancer. |
|
| ▲ | misswaterfairy 12 hours ago | parent | prev | next [-] |
| I hate "cloud shit" as well, though specifically that there's a vendor-specific 'app', or terminology, or both, for everything that we've had standard terms for, for decades. I just want a damn network, a couple of virtual machines, and a database. Why does each <cloud provider> have to create different fancy wrappers over everything, that not even their own sales consultants, and even engineers, understand?(1) What I do like about Docker and Kubernetes is that shifting from one cloud provider to another, or even back to on-premises (I'm waiting for the day our organisation says "<cloud-provider> is too damn expensive; those damn management consultants lied to us!!!!") is a lot easier than re-building <cloud provider>'s bespoke shit in <another cloud provider>'s bespoke shit, or back on-premises with real tech (the right option in my opinion for anyone less than a (truly) global presence). I do like the feel of, and being able to touch bare metal, though the 180-proof-ether-based container stuff is nice for quick, flexible, and (sometimes) dirty. Especially for experimenting when the Directors for War and Finance (the same person) say "We don't have the budget!! We're not buying another server/more RAM/another disk/newer CPUs! Get fucked!". The other thing about Docker specifically I like is I can 'shop' around for boilerplate templates that I can then customise without having to screw around manually building/installing them from scratch. And if I fuck it up, I just delete the container and spin up another one from the image. (1) The answer is 'vendor lock-in', kids. (I apologise, I've had a looooooong day today.......) |
| |
| ▲ | yungporko 10 hours ago | parent [-] | | agreed, cloud shit can fuck off. they market themselves as the solution to problems you will never have so that you build your shit on their land and they can charge you rent, and most people eat it up and think they're doing them a favour. |
|
|
| ▲ | tryauuum 13 hours ago | parent | prev | next [-] |
| I have same thoughts. the only form of kubernetes I would be willing to try is the one with kata-containers for having all the security of virual machines. |
|
| ▲ | kortilla 9 hours ago | parent | prev | next [-] |
| All of these anecdotes seem to come from people who don’t bother to try to learn kubernetes. > YAML files, and then spend a day fixing them by copy-pasting increasingly-convoluted things on stackexchange. This is terrible behavior. Its not any different from yanking out pam modules because you’re getting SSH auth failures caused by a bad permission on an SSH key. > If I get to tens of millions of users, maybe I’ll worry about it then. K8s isn’t there for 10s of millions of users. It’s there so you’re not dependent on some bespoke VM state. It also allows you to do code review on infra changes like port numbers being exposed, etc. Separately, your VM likely isn’t coming from any standard build pipeline so now a vulnerability patch is a login to the machine and an update, which hopefully leaves it in the same state as VMs created new… Oh, and assuming you don’t want to take downtime on every update, you’ll want a few replicas and load balancing across them (or active/passive HA at a minimum). Good luck representing that as reviewable code as well if you are running VMs. The people that don’t understand the value prop of infra as code orchestration systems like k8s tend to work in environments where “maintenance downtime” is acceptable and there are only one or two people that actually adjust the configurations. |
| |
| ▲ | tombert 2 hours ago | parent | next [-] | | Sure, because Kubernetes is convoluted and not fun and is stupidly bureaucratic. I might learn to enjoy being kicked in the balls if I practiced enough but after the first time I don't think I'd like to continue. > This is terrible behavior. Its not any different from yanking out pam modules because you’re getting SSH auth failures caused by a bad permission on an SSH key. Sure, I agree, maybe they should make the entire process less awful then and easier to understand. If they're providing a framework to do distributed systems "correctly" then don't make it easy for someone whose heart really isn't into it to screw it up. > K8s isn’t there for 10s of millions of users. It’s there so you’re not dependent on some bespoke VM state. It also allows you to do code review on infra changes like port numbers being exposed, etc. That's true of basically any container stuff or orchestration stuff, but sure. Kubernetes just screams to me as suffering from a "tool to make it look like I'm doing a lot of work". I have similar complaints with pretty much all Java before Java ~17 or so. I'm not convinced that something like k8s has to be as complicated as it is. | | |
| ▲ | kortilla 44 minutes ago | parent [-] | | > Sure, because Kubernetes is convoluted and not fun and is stupidly bureaucratic. Describe what you think bureaucratic means in a tool. > I might learn to enjoy being kicked in the balls if I practiced enough This is the same thing people say who don’t want to learn command line tools “because they aren’t intuitive enough”. It’s a low brow dismissal holding you back. |
| |
| ▲ | secondcoming 9 hours ago | parent | prev [-] | | Just because you're using VMs doesn't mean you're now dealing with state. It's 100% possible to have stateless VMs running in an auto-scaling instance group (in GCP speak, I forget what AWS calls them) | | |
| ▲ | kortilla 42 minutes ago | parent | next [-] | | Once you have the tools to manage all of that, you effectively have kubernetes. Container vs VM is largely irrelevant to what the op is complaining about when it comes to k8s. People that don’t like k8s tend to be fine with docker. It’s usually that they don’t like declarative state or thinking in selectors and other abstractions. | |
| ▲ | everfrustrated 8 hours ago | parent | prev [-] | | In the beginning AWS didn't even support state on their VMs!
All VMs were ephemeral with no state persistence when terminated.
They later introduced EBS to allow for the more classic enterprise IT use cases. |
|
|
|
| ▲ | nyclounge 13 hours ago | parent | prev | next [-] |
| Or if you got a static ip and fast up speed, then just port forward 80, 443 and start hosting your self. Even an old Intel Mac Book pro from 2000's with 4 GB of RAM may not be that hot running MacOS, but install Debian with no X. It is running smooth as a whistle, while running several conduit matrix, haraka, zone-mta, ice cast, nginx with no issues. WebRTC/TUN/STUN becomes an issue with the nginx config. May consider looking at pingora. The whole rust -> binary + toml file is super nice to run from system admin perspective. |
| |
| ▲ | d3Xt3r 12 hours ago | parent [-] | | > It is running smooth as a whistle ... until you get hit by a DDoS attack. Not much you can do about it unless your ISP offers protection, or you end up going for Cloudflare or the like instead of exposing your IP and ports. | | |
| ▲ | nyclounge 3 hours ago | parent | next [-] | | Or hetzner has also DDoS protect for all their customers. Seems like a lot less rip off and scam than AWS and Cloudflare. Set your TLS a low number, and you can swap whenever you feel like it. | |
| ▲ | PittleyDunkin 8 hours ago | parent | prev [-] | | Folding the second you get dos'd is aa feature, not a liability. Staying up through those is a great way to lose a ton of money basically instantly. |
|
|
|
| ▲ | zelphirkalt 5 hours ago | parent | prev | next [-] |
| I am sure the consultants and others peddling Kubernetes like it, since they are getting the paycheck for bringing it on, or cementing their position, as they are the ones with the expert knowledge of the system then, if anyone is at all, after something has been migrated to Kubernetes. |
|
| ▲ | Havoc 6 hours ago | parent | prev | next [-] |
| “let me install everything myself” doesn’t generalise well and gets messy even if you IaC it. There is a reason k8s gang keeps going on about “cattle not pets”. The starting assumptions and goals are fundamentally different vs “give me a physical server” Both have their place I think so not really one is right other is wrong |
| |
| ▲ | tombert 2 hours ago | parent | next [-] | | Everyone says this, but do we actually have data to back that up? I feel like I spend so much time working around CloudSQL for postgres support in GCP at work, to a point where I'm not actually sure I'm saving a ton of time over running and managing it myself. That's probably not true, I'm sure there are edge cases that I'm not accounting for, but I'm a little tired of everyone acting like AWS and GCP and Azure are the "set it and forget it" thing that they advertise. | | |
| ▲ | Havoc 41 minutes ago | parent [-] | | Not sure how you’d even measure that meaningfully. My comment above was more k8s vs classic server rather than thinking about cloud k8s in particular. I do agree that cloud is stuff is a huge time sink. I’ve learned to look at it in terms of how close it is to FOSS like world. Things that follow normal protocols and standards like say it speaks Postgres or is a docker image then cloud is ok. Things that are cloud vendor specific or a custom product…run for the hills. Not only is it lock in but also that’s where the pain you describe is. The engineering around it just becomes so much more granular and fragile |
| |
| ▲ | immibis 5 hours ago | parent | prev [-] | | And people tend to vastly underestimate the power of a single server. These days you can get a terabyte of RAM, 96 cores and dual 10G Ethernet for a low-to-mid 4-digit price (used). Do you need the cloud? Some do, but often your highest conceivable scale fits on one or two servers. Stack Exchange famously ran this way for a long time (until recently when they've been bought by large investors and they're going full cloud and AIshit). | | |
| ▲ | Havoc 3 hours ago | parent [-] | | Scaling wasn’t really what I was getting at there per se. Said generalise but that’s admittedly quite fuzzy. Meant it more in the abstraction layer and standardisation sense. Installing stuff straight on server is very messy especially if it’s lots of different providers with their own dependencies. So you need to do some form of containers or VMs to isolate them. At which point you need some sort of tooling around that. And deal with failures etc. Before you know it you’ve reinvented k8s except with less standardization and more duck tape. So it think there is a strong case for a k8s cluster but being mindful to keep it as simple as possible within that paradigm. Ie k8s but just the basic building blocks |
|
|
|
| ▲ | Woeps 8 hours ago | parent | prev | next [-] |
| I don't mind K8s, and it can be usefull if you just stay to the core essentials.
But I do agree that there seems to be the sentiment:"Everybody has to like it!" And I mostly think that this is because our collective bias for everything Big Tech does is good. While often it just depends. Just because Google does X or Y doesn't mean it will work for everybody else. |
|
| ▲ | gigatexal 7 hours ago | parent | prev | next [-] |
| The yaml and the k8s model can be grokked it just takes a willingness to. That being said there are abstractions terraform, pulumi, others. But my go to is always that most companies will never get to the point where k8s is required — most companies never get to that scale. A well maintained docker compose setup gets you a long way. |
|
| ▲ | tapoxi 13 hours ago | parent | prev | next [-] |
| This read as "old man yells at cloud" to me. I've managed a few thousand VMs in the past, and I'm extremely grateful for it. An image is built in CI, service declares what it needs, the scheduler just handles shit. I'm paged significantly less and things are predictable and consistent unlike the world of VMs where even your best attempt at configuration management would result in drift, because the CM system is only enforcing a subset of everything that could go wrong. But yes, Kubernetes is configured in YAML, and YAML kind of sucks, but you rarely do that. The thing that changes is your code, and once you've got the boilerplate down CI does the rest. |
| |
| ▲ | tombert 2 hours ago | parent | next [-] | | > But yes, Kubernetes is configured in YAML, and YAML kind of sucks, but you rarely do that. I'm sorry, citation needed on that. I spend a lot of time working with the damn YAML files. It's not a one-off thing for me. You're not the first person to say this to me, they say "you rarely touch the YAML!!!", but then I look at their last six PRs, and each one had at least a small change to the YAML setup. I don't think you or they are lying, I think people forget how often you actually have to futz with it. | |
| ▲ | raxxorraxor 6 hours ago | parent | prev | next [-] | | I think it is also a difference between developer and IT. Usually the requirements don't ask for thousands of VMs if you don't run some kind of data center or a company that specializes on software services. | |
| ▲ | catdog 13 hours ago | parent | prev | next [-] | | YAML is fine, esp. compared to the huge collection of often 10x worse config formats you have to deal with in the VM world. | |
| ▲ | cess11 11 hours ago | parent | prev | next [-] | | I'd prefer Ansible if I was running VM:s. Did that at a gig, controlled a vCenter cluster and hundreds of machines in it, much nicer experience than Kubernetes style ops. Easier to do ad hoc troubleshooting and logging for one. | | |
| ▲ | vrighter 10 hours ago | parent [-] | | until, as happened to us, you're in the middle of an upgrade cycle, with a mix of red-hat 6 and red-hat 8 servers, and ansible decide to require support for the latest available version of python on red-hat 8, which isn't available on red-hat 6, so we have no way of using ansible to manage both sets of servers. The python ecosystem is a cancer. | | |
| ▲ | mkesper 8 hours ago | parent | next [-] | | Well, you were free to install a version of Python3 on the CentOS6 machines, that's what we ended up doing and using for Ansible. Python 2.6 support of Ansible was a bad lie, multiple things broke already. 10 years of support without acknowledging changes of ecosystem just don't work. | | |
| ▲ | vrighter 5 hours ago | parent [-] | | we did, but then most ansible modules still didn't work on the system. They advertise the no-agent thing and how it does everything over ssh, and instead require python to be installed on all your servers because it generates python code and runs it on the remote machine. And somemodules require specific versions sometimes. |
| |
| ▲ | cess11 9 hours ago | parent | prev [-] | | Sure, and I'm also not a fan of RedHat. We ran Ubuntu and Debian on that gig, the few Python issues we ran into we could fix with some package pinnings and stuff like that. |
|
| |
| ▲ | mollusk 11 hours ago | parent | prev [-] | | > "old man yells at cloud" Literally. |
|
|
| ▲ | datadeft 10 hours ago | parent | prev | next [-] |
| One thing that might help you in this madness is: https://github.com/dhall-lang/dhall-kubernetes Type safe, fat finger safe representation of your YAMLs is grossly underrated. |
|
| ▲ | wordofx 8 hours ago | parent | prev | next [-] |
| I’m confused. Do you hate cloud or the container shit? Cloud is awesome. Containers is dumb as hell for 99% of the applications hacker news kids work on. |
| |
| ▲ | tombert 3 hours ago | parent [-] | | I don't know what "cloud" means. I don't really like Kubernetes, and I don't really like the AWS and GCP systems for doing everything. The fact that WGU offers a bachelors degree in Cloud Computing with focuses on AWS or Azure should be telling. [1] Containers don't bother me that much on their own. I just feel like with k8s and its ilk I end up spending so much time futzing with weird YAML and trying to remember differences between stateful sets and services and fighting with stuff because I missed the thing that mounts a disk so my app will break in three hours. [1] https://www.wgu.edu/online-it-degrees/cloud-computing-bachel... |
|
|
| ▲ | friendzis 10 hours ago | parent | prev | next [-] |
| In my limited experience k8s is treated as some magic instead of what it is: resource virtualization platform. Sort one (or two) step above hardware virtualization platforms (e.g. esxi). The fact that vmware can migrate a running vm to a different hardware node is surely powerful feature. Do you want to pay for that with complexity? If you are one infra team serving on-prem deployments with consistent loads you provision things when new projects are started and things break. However, if infra team serves internal product teams it is nice to give certain guarantees to them and limit blast radius how they can affect other teams. This is where kubernetes sit. It's a deployment platform, where the deployable is container image instead of VM image. Slice off a namespace to an internal team and have their deployment blast radius contained within their namespace. Do you need such flexibility? I'm pretty sure that roughly 99% of all teams do not. A static set of VMs provisioned with some container orchestration system is more than enough for them. Loads and deployments are too static for it to matter. >>> But it allows seamless upgrades! Dude or dudette, if you can't properly drain your nodes and migrate sessions now, kubernetes will not save you. |
|
| ▲ | raffraffraff 11 hours ago | parent | prev | next [-] |
| I'm sure you can get some of the handy extras that come with a typical kubernetes deployment without the kubernetes, but overall I'll take kubernetes + cloud. Once you've got the hang of it, it's ok. I have a terraform project that deploys clusters with external-dns, external-secrets, cert-manager, metrics, monitoring stack, scalers and FluxCD. From there, pretty much everything else is done via FluxCD (workloads, dashboards, alerts). And while I detest writing helm charts (and sometimes using them, as they can get "stuck" in several ways) they do allow you to wrap up a lot of the kubernetes components into a single package that accepts more-or-less standardized yaml for stuff like resource limits, annotations (eg for granting and AWS role to a service) etc. And FluxCD .postBuild is extremely handy for defining environment vars to apply to more generic template yaml, so we avoid a sprawl. So much so that I am the one-man-band (Sys|Dev|Sec)Ops for our small company, and that doesn't give me panic attacks. The cloud integration part can be hairy but I have terraform patterns that, once worked out, are cookie cutter. With cloud kubernetes, I can imagine starting from scratch, taking a wrong turn and ending up in hell. But I'm exchanging one problem set for another. Having spent years managing fleets of physical and virtual servers, I'm happier and more productive now. I never need to worry about building systems or automation for doing OS build / patching, config management, application packaging and deployment, secrets management, service discovery, external DNS, load balancering, TSL certs etc. Because while those are just "words" now, back then each one was a huge project involving multiple people fighting over "CentOS Vs Ubuntu", "Puppet Vs Ansible", "RPMs Vs docker containers", "Patching Vs swapping AMIs". If you're using Consul and Vault, good luck - you have to integrate all of that into whatever mess you've built, and you'll likely have to write puppet code and scripts to hook it all up together. I lost a chunk of my life writing 'dockerctl' and a bunch of puppet code that deployed it so it could manage docker containers as systemd services. Then building a vault integration for that. It worked great across multiple data centers, but took considerable effort. And in the end it's a unique snowflake used by exactly one company, hardly documented and likely full of undiscovered bugs and race conditions even after all the hard work. The time it took to onboard new engineers was considerable and it took time away from an existing engineer. And we still had certificates expire in production. |
|
| ▲ | bananapub 2 hours ago | parent | prev | next [-] |
| > I have set up about a dozen rack mount servers in my life, yes, k8s and co are silly for trivially tiny systems like this. |
|
| ▲ | Deutschlandds 6 hours ago | parent | prev | next [-] |
| I find it always interesting and weird to read so dimetrical points to kubernetes. 1. Cloud for me is a lot better than what we had before: Before i had to create a ticket for our internal it department, have huge cross-charges (like 500$ for a server, instead of 50), had to wait for a few weeks and than get lectured that installing basic default tools on that suse based server would take a week and add additional cross-charges onto it. Their reasoning? Oh we do backup and upgrades... With cloud, i click a server in a Minute for less money, i upgrade it myself and have snapshots as a basic backup workflow which actually is reliable and works. Then k8s came along and let me be clear: my k8s setup is big, so its definitly worth it but tx to my experience with a bigger k8s setup, my very small ones are also working very very well. I get, out of the box, HA, network policies, snapshotting through my selected storage setup, Infrastructure as code etc. Instead of having shitty shell scripts, ansible setup and co, i only write a little bit of yaml, check it into my git system and roll it out with ansible. Absolut no brainer. And the auto healing solved real issues: Out of memroy? just restart the pod. Out of disk? Just recreate it. Logging and metrics just works out of the box thanks to the prometheus based monitoring stack. Starting with one server, yeah why not but you know you are not doing it right if you are the only one who can set it up and recover it. But if you don't have anyone with expertise, i would also not just start with k8s. If my startup is a pure application + db thingy, i would go with any app platform out there. But we have real servers because we do stuff with data and need sometimes performance, performance is expensive if you run it in the cloud. |
| |
| ▲ | gizzlon 6 hours ago | parent [-] | | > shitty shell scripts, ansible setup and co, i only write a little bit of yaml Why are the shell scripts shity but the yaml not? When I look at those yaml files I always throw up just a little :P Also, have you tried Cloud Run? | | |
| ▲ | Deutschlandds 5 hours ago | parent [-] | | Yaml is declarative, you tell k8s what you want and how it looks. For shell scripts, try proper error handling. You start doing some catch hooks, you have issues cehcking error codes of different tools, debugging is hard too. In one infra project we swtiched from shell scripts to golang just to have a lot more control/stability of our scripts. | | |
| ▲ | gizzlon 5 hours ago | parent [-] | | YAML is not declarative, it's a format. Well, according to Wikipedia it's a "data serialization language". IMO It's also bad choice for this, and those files become unreadable and hard to work with. Agree that shell scripts are also hard to work with, especially if you did not write them yourselves. I guess it's a combo of the language features of, say bash, and that no one who writes them really know bash. I mean, at all. Including me. Declarative is nice, but also have pros and cons. And, it's of course many ways to achieve this if that's a priority. Usually, what you really want is: Low time to replicate AND no data loss if a server blows up. But this also have to extend to, say, the k8 cluster. And, again, many ways to achieve this. The article does not call for Ansible setups and shell scripts though. Cloud Run uses YAML btw. One of the things I personally don't like about it |
|
|
|
|
| ▲ | fragmede 12 hours ago | parent | prev | next [-] |
| I'll let you in on the joke. The joke is the demand for 100% availability and instant gratification. we're making services where anything less than 4 nines, which is 5 minutes month, is deemed unacceptable. three nines is 10 minutes a week. two nines is 15 minutes a day. there are some things that are important enough that you can't take a coffee break and wait for, but Kubernetes lets you push four nines of availability, no problem. Kubernetes is solving for that level of availability, but my own body doesn't have anything near that level of availability. demanding that from everything and everyone else is what pushes for Kubernetes level of complexity. |
| |
| ▲ | spacebanana7 8 hours ago | parent | next [-] | | Most outages these days are also caused by "devops errors" that're much more likely to happen when working with complex infrastructure stacks. So there's real value in keeping things simple. | |
| ▲ | EVa5I7bHFq9mnYK 11 hours ago | parent | prev | next [-] | | 4 nines is a lie. That's not what I experience as a user. I experience 403, 404, 405, 500, or other forms of down, such as difficult captchas, 2fa not working, geolocation blockages etc several times a day. | |
| ▲ | tombert 2 hours ago | parent | prev | next [-] | | I agree with you in theory, and maybe even in practice in some cases, but I do not feel like we have less downtime with k8s than using anything else. | |
| ▲ | karmarepellent 6 hours ago | parent | prev | next [-] | | Its a matter of evaluating what kind of infrastructure your application needs to run on. There are certainly mission critical systems where even a sliver of downtime causes real damage, like lost revenue. If you come to the conclusion that this application and everything it involves better run on k8s for availability reasons, you should probably focus on that and code your application in a k8s-friendly manner. But there are tons of applications that run on over-engineered cloud environments that may or may not involve k8s and probably cost more to operate than they must. I use some tools every day where a daily 15 min downtime would not affect my or my work in the slightest. I am not saying this would be desirable per se. Its just that a lot of people (myself included) are happy to spend an hour of their work day talking to colleagues and drinking coffee, but a 15 min downtime of some tool is seen as an absolute catastrophe. | |
| ▲ | kitd 11 hours ago | parent | prev [-] | | Are you the only one waiting on your app if it goes down? |
|
|
| ▲ | 6 hours ago | parent | prev | next [-] |
| [deleted] |
|
| ▲ | PittleyDunkin 8 hours ago | parent | prev | next [-] |
| Isn't using VMs or servers just cloud shit in a different form? How does that fix anything? Orchestrating software (or hardware) is a pain in the ass whether it's in your closet or someone else's. |
|
| ▲ | cess11 11 hours ago | parent | prev | next [-] |
| Once it gets hard to run the needed services for all the applications in the organisation/team on your development machine it'll start to look more attractive to turn to Docker/Podman and the like, and that's when automatic tests and deploys built on disgusting YAML starts to make more sense. I've been at a place where the two main applications were tightly coupled with several support systems and they all were dependent on one or more of Oracle DB, Postgres, Redis, JBoss, Tibco EMS and quite a bit more. Good luck using your development device to boot and run the test suite without containers. Before that team started putting stuff in containers they used the CI/CD environment to run the full set of tests, so they needed to do a PR, get it accepted, maybe wait for someone else's test run to finish, then watch it run, and if something blew, go back to commit, push to PR, &c. all over again. Quite the nuisance. A full test suite had a run time of about an hour too. When I left we'd pushed it to forty minutes on our dev machines. They didn't use raw Kubernetes though, they had RedHat buy-in and used OpenShift, which is a bit more sane. But it's still a YAML nightmare that cuts you with a thousand inscrutable error messages. |
|
| ▲ | cheriot 13 hours ago | parent | prev | next [-] |
| > I might just be stupid, but it feels like all I ever do with ____ is update and break ____ files, and then spend a day fixing them by copy-pasting increasingly-convoluted things on stackexchange. I cannot imagine how anyone goes to work and actually enjoys working in ____, though I guess someone must in terms of “law of large numbers”. I'd make a similar statement about the sys admin stuff you already know well. Give me yaml and a rest api any day. I see where you and the article are coming from, though. The article reasonably points out that k8s is heavy for simpler workloads. |
|
| ▲ | teekert 11 hours ago | parent | prev [-] |
| Sorry to have to tell you this, but you’re old. Your neural plasticity has gone down and you feel like you have seen it al before. As a result you cling to the old and never feel like you grasp the new. The only reasonable thing to is to acknowledge and accept this and try not let it get in your way. Our generation has seen many things before, but at the same time the world has completely changed and it’s led to the people growing up in it to be different. You and me didn’t fully grasp CPUs anymore. Some people today don’t grasp all the details of the abstractions below K8s anymore and use it when perhaps something simpler (in architecture , not necessarily in use!) could do it better. And yet, they build wonderous things. Without editing php.ini and messing up 2 services to get one working. Do I think K8s is the end all? Certainly not, I agree it’s sometimes overkill. But I bet you’ll like it’s follow-up tech even less. It is the way of things. |
| |
| ▲ | tombert 2 hours ago | parent | next [-] | | I'm 33 dude, not exactly "old". I never really liked the devops stuff even when I was 20. I have no doubt that I could get better with k8s, but it's decidedly not fun. | |
| ▲ | creesch 11 hours ago | parent | prev | next [-] | | While this is a nice essay, it also is purely an emotional argument hanging together from assumptions and fallacies. Even if you are right in this instance, just brushing things off with the "you are old" argument will ensure that you end up in some horrible tech debt spaghetti mess in the future. Being critical of the infrastructure you deploy to is a good thing. Because for all the new things that do stick around, there are dozens of other shiny new hyped up things that end up in digital purgatory quite soon after the hype phase is over. That's not to say there isn't some truth to your statement. The older you get, the more critical you do need to be to yourself as well. Because it is indeed possible to just be against something because it is new and unfamiliar. At the same time, does experience provide insights allowing senior people to be more critical to things. *tl;dr:* The world is complicated, not binary. | | |
| ▲ | teekert 11 hours ago | parent [-] | | Well, I fully agree with you. Perhaps the -hate “cloud shit"- remark triggered me a bit. It's just such a 'drown the baby with the bathwater', curmudgeon thing to say. And, imho, it betrays age. It's like my grandfather saying, I hate all this digital stuff, "I will never put email on my phone because with emails come viruses." (Literal thing my father-in-law always claims, and perhaps he's not even wrong, he just stopped using new things, hating and resisting change. He has that right of course. And to be fair with his knowledge level it's perhaps even good to not have email on his Phone. But it's getting more difficult, i.e. he refuses our national Digital ID, making his life a lot harder in the process, especially because he also resists help, too proud). It's good to recognize this in oneself though, imho. | | |
| ▲ | tombert 2 hours ago | parent [-] | | I don't think it betrays age really, I just think that a lot of this stuff with AWS and Azure and GCP is overly complicated. I am not convinced anyone actually enjoys working on it. I'm pretty sure that 21 year old me would have roughly the same opinion. As I said in a sibling comment, you can genuinely get a bachelors degree in AWS or Azure [1], meaning that it's complicated enough to where someone thought it necessitated an entire college degree. By "cloud shit", I don't mean "someone else hosting stuff" (which I tried to clarify by saying "give me a VM" at the end). I mostly think that having four hundred YAML files to do anything just sucks the life out of engineering. It wouldn't bother me too much if these tasks were just handled by the people who run devops, but I hate that since I am a "distributed systems engineer" that I have to LARP as an accountant and try and remember all this annoying arbitrary bureaucratic crap. [1] https://www.wgu.edu/online-it-degrees/cloud-computing-bachel... |
|
| |
| ▲ | tedk-42 11 hours ago | parent | prev [-] | | > Is K8s the end all? Certainly not, I agree it’s sometimes overkill. But I bet you’ll like it’s follow-up tech even less. It is the way of things. I agree with your analysis. People wanna talk up about how good the old days were plugging cables into racks but it's really laborious and can take days to debug that a faulty network switch is the cause of these weird packet drop issues seen sporadically on hot days. Same as people saying 'oh yeah calculators are too complicated, pen and paper is what kids should be learning'. It's the tide of change | | |
| ▲ | tombert 2 hours ago | parent [-] | | I reject that comparison, I'm not really resistant to change, I'm resistant the awful bureaucratic crap that k8s and its ilk force you to use. It's not fun, as far as I can tell no one actually understands any of it (young or old), they just copy and past large blocks of YAML from blogs and documentation and then cross their fingers. I'm not saying that plugging in cables and hoping power supplies don't die is "better" in any kind of objective sense, or even subjective sense really, I'm just saying that I hate this cloud cult that has decided that the only way to do anything is to add layers of annoying bureaucratic shit. |
|
|