I’m currently struggling with upgrading some Postgres DBs on my home-k3s and I’m seriously considering throwing it all away since it’s such a hassle.
So, how do you handle DBs? K8s? Just a regular daemon?
I have a single database server because I can’t afford two servers with high storage. The servers that need access to it connect over wireguard VPN. This is slow as f**k don’t do that.
I’m a big fan of the zalando postgres operator. A lot of the critical features you’d want in production databases are handled and very nicely abstracted.
Did they get it working with multi arch setups? I have a few pi’s in my cluster and last time I looked at using that it wasn’t ready for arm64
I’m not sure, actually. My personal cluster is all x86 so I’m not usually that aware of the multiarch stuff. 😬
I have found that some things just aren’t ready for arm and I’ll probably swap my worker nodes to x86 only. Should be okay to keep etcd and control nodes as mixed.
Are we talking database schema migrations or migrating a database between Postgres instances?
If it’s the former, the pattern is usually to run them in init containers or Jobs but I have been wanting to try out SchemaHero for a while which is a tool to orchestrate it and looks pretty neat.
ETA: Thought I was replying to your below comment but Memmy deleted it the first time for some reason, my bad.
I just run one mariadb container via docker-compose that all my other services use as their database.
version: "2" services: mariadb: image: lscr.io/linuxserver/mariadb:latest container_name: mariadb environment: - TZ=####/#### - PUID=### - PGID=### - MYSQL_ROOT_PASSWORD==############ volumes: - /docker/mariadb:/config ports: - 3306:3306 restart: unless-stopped
Off-topic but I don’t really get the appeal in running Kubernetes (or similar technologies) in a homelab. Unless it’s something you want to learn for work of course.
I’m running kubernetes simply because the other options are worse.
Proxmox takes to many resources.
Docker Compose caused countless issues for me when running multiple services (especially network related).
Bare metal is annoying, because you’re forced to keep all the services in lockstep, dependency wise.
I’m using kubernetes at with, the overhead is rather small (with k3s) and mostly it’s working pretty great.
That’s funny to hear as daily for work I use k3s and RKE2 for deployments and testing and at home I use unraid specifically because of all the k3s work I do even k3s has too much overhead for updates and backups and all that IMO.
I avoid software which requires a relational database altogether. For me that’s part of the fun of self hosting: what’s the simplest possible system I can get away with at my tiny scale?
Never tried it but kubegres seems like a good implementation for kubernetes. I guess if you just have a single-node cluster there won’t be much benefit but it seems a periodic backup to NFS is key (you can run NFS on most anything).
For personal use, I don’t bother with databases on k8s. They are waaay easier to manage if you just let your host distribution run it as a regular service and Upgrade it through that
I google why doesn’t mysqld work?, then copy paste terminal commands from the first result, then google why doesn’t my machine boot? then turn around 360 degrees and walk away.
then turn around 360 degrees and walk away.
And how does that work for you?
I imagine they feel like they’re not getting anywhere.