The Percona Everest operator doesn't look as full-featured for Postgres, which is the only database I typically use, so this isn't for me, but might be a little better if you're a MySQL user (though that's just me guessing).
(K8s is second-system effect and job security for sysadmins. From a technical point of view it causes more problems than it solves.)
Casting such broad unspecific unnuanced nets, denying value blanketly where clearly some people do find value, is trolling.
(Not that Perl scripts are any good. They're crap technology, but unfortunately so is k8s.)
K8s doesn't solve a technical problem. It solves two contradictory social problems:
a) It gives sysadmins a job creation program, full of expensive and opaque stuff that requires expensive sysadmins. b) It makes sysadmin stuff fungible and replaceable for developers.
Solving both problems is probably an important social issue if you're running a Google scale organization. But it's solving a social and organizational problem, not fulfilling a technological need.
Though it seems they rebuilt the controller to address most of the issues https://kubernetes.io/blog/2021/04/09/kubernetes-release-1.2...
There is no need for almost any sites; sure facebook/google, but you are not running those nor is it likely you (not specifically you obviously, me neither) ever will. VPSs are robust these days and have no downtime besides kernel updates. I cannot phantom why you would want to burn humans or money on this kind of complexity. But then again, we like profit (not growth because of growth) and it seems that most here really are not that interested in that. If I cannot be Gates or Musk (and I cannot, nor can you, again, no attack on you; just statistics) then I rather have little work or headache with millions $ of profit/mo coming in instead of 'growth'. Maybe i'm odd, but I am free for the past 30+ years because of these choices (currently; common lisp, apache, perl, php, mysql, haproxy, redis, wireguard; hopefully I get this down to just common lisp + wireguard before I pass). We don't use libraries or tech less than 10 years old unless it's really needed and we contribute to everything we use (so we use very few things otherwise we have to hire and that's a waste of $); I sleep very well at night knowing nothing is going to happen.
I think it's almost exactly the opposite: I'd rather use cloud-specific tooling on clouds but k8s is a Better OpenStack on bare metal. It provides a standardized layer upon which generally-reasonable tools can operate without thinking about it much. There is a cost factor--it doesn't need to be a high one, though, and it's also a forcing function into stuff like "actually thinking about redundancy" ahead of time.
I've deployed in production everything you described and unless I was optimizing, as you are, for cut-to-the-bone opex and personal stress when it breaks bad (which is not a judgment call but it is certainly not the only reasonable decision to make; investing more in operations to have more "bounce" when things goes bad is not a bad thing), a reasonably thought-out k8s environment is going to be easier than shell scripts from the 90s once I need to have anyone who isn't me take over a problem.
God forbid if you had to think and know about your infrastructure and how it worked, and whether it was as minimal and simple as possible whilst delivering results. Best to just use abstractions upon abstractions you don't know well and hope for the best.
I've built systems that exist today both ways. There are reasonable arguments for both. Please don't be weird.
They also have a relatively new project out called spin which is a docker swarm orchestrator. Seems to be the real deal.
I would much rather have an automated process for doing that. Kubernetes provides a framework for allowing that to happen.
If the DB itself is being patched, then yes, you’ll restart the DB process, but it’s also not difficult to automate failover.
We rarely needed to restart the hosts or database service (maybe once in every two years), and even if we had the failover process took minutes and it was automated. Without Kubernetes.
Nowadays people often think that Kubernetes is the only answer for scalability and automation problems.
As the matter of fact we had another product that was running on Kubernetes, they are now migrating off from it, turned out that the old school approach with bare EC2 instances, Ansible, Terraform and Packer is much more reliable, scalable and cost effective than Kubernetes.
I have to add that yes, we had to write some custom tools, but it was way less effort than managing a K8S cluster and all the software/operators/controllers that are needed for running your workload on it.
Absolutely it is. I've found this to be the case across a lot of orgs now.
For basically every core resource type, there’s a user-guide, examples, a tour of it, in-depth docs and then the api docs themselves.
* Unless you are self-hosting K8s and thus have a large amount of control over the underlying storage, the amount of IOPS you're getting will be hazy at best. Tbf this is also true with every single DBaaS, because the latency on network storage is absurd, so IOPS become somewhat meaningless.
* Unless you have modified the CPU scheduling options [0] in K8s, you have no control over core pinning or NUMA layout. This is even worse due to the fact that your K8s nodes are probably multi-tenancy.
* By its nature, K8s is designed to host stateless apps. It is fantastic at doing this, to be clear. I love K8s. But a system where the nodes can (and should, if you're taking advantage of spot pricing) disappear with a few minutes' warning is not a great host for an RDBMS.
* Hot take: it makes provisioning a database even easier, which means people with even less understanding or care of how they operate will be doing so with reckless abandon, which means people like me have even more work to do cleaning up their mess. I am a big fan of gatekeeping things that keep companies afloat. If you want to touch the thing that every service is depending on, learn how it works first – I'd be thrilled to help you. But don't come in and just yolo a copy-paste YAML into prod and then start chucking JSON blobs into it because you can't be bothered to learn proper data modeling, nor reading RDBMS docs.
Re: [0], if you don't care about core pinning, then it's unlikely you're going to care about any of these other points, and you probably also don't understand (or care) how blindingly fast an RDBMS on metal with NVMe can be.
I am not a Luddite. To reiterate, I have administrated self-hosted and managed K8s professionally. I also run it at home. I just have strong opinions about understanding fundamentals (and not causing myself extra work by allowing people who don't care about them to run infra).
[0]: https://kubernetes.io/docs/tasks/administer-cluster/cpu-mana...
Why is this a problem? A typical deployment will have multiple replicas, with (hopefully) small replication lag. Those should be able to be promoted to be the new primary within a minute.
Ah yes, HN. You know there are billions of sites(wp mostly), LoB apps etc that run on 1 mysql/pg/etc instance right? Replicas are not typical and a tiny minority.
Tech is rife with people who have never set up an old school HA solution proffering advice on how a miasma of cloud services makes theirs better.
What happens within that minute to database writes?
You cannot build operational procedures based on “hope”.
High replication lag occurs for many many reasons (and they are not a rare event, or something that you can prevent). As well as network partitions.
Replication and binary logs can get corrupted, there can be deadlocks, duplicated row errors, etc.
The thing is that database administration is a broad and complicated topic, a small mistake or the lack of understanding how these systems work can easily lead to huge data losses.
In my example, I will get a page for large replication lag. But not for an unplanned failover. That will be an alert, but not a page.
Couldn’t agree more.
Kubernetes and such tools do not make things easier, they just give you the illusion of it.