[-] macgregor@lemmy.world 15 points 1 year ago* (last edited 1 year ago)

Knowing what and when to abstract can be hard to define precisely. Over abstraction has a cost. So does under abstraction. I have seen, writen and refactored terrible examples of both. Anecdotally, flattening an over abstracted hierarchy feels like less work and usually has better test coverage to validate correctness after refactoring than abstracting under abstracted code (spaghetti code, linear code, brand it how you will). Be aware of both extremes and try to find the balance.

[-] macgregor@lemmy.world 2 points 1 year ago

My homelab is a 2 node Kubernetes cluster (k3s, raspberry pis), going to scale it up to 4 nodes some day when I want a weekend project.

Built it to learn Kubernetes while studying for CKA/CKD certification for work where I design, implement and maintain service architectures running in Kubernetes/Openshift environments every day. It's relatively easy for me to manage Kubernetes for my home lab, but It's a bit heavy and has a steep learning curve if you are new to it which (understandably) puts people off it I think. Especially for homelab/selfhosting use cases. It's a very valuable (literally $$$) skill if you are in that enterprise space though.

[-] macgregor@lemmy.world 2 points 1 year ago

Yeah, I know, that's a huge advantage in this situation, but not one I can take advantage of ๐Ÿ™‚

[-] macgregor@lemmy.world 7 points 1 year ago

Switched to qbittorrent+gluetun side car recently and it's been pretty good compared to the poorly maintained combo torrent+OpenVPN images I was using. Being able to update my torrent client image/config independent from the VPN client is great. Unfortunately most of the docs are Docker focused so it's a bit of trial and error to get it setup in a non-docker environment like Kubernetes. Here's my deployment in case it's useful for anyone. Be careful that you configure qbittirrent to use "tun0" as it's network interface or you will be exposed (got pinged by AT&T before I realized that one). I'm sure there's a more robust way to makeuse of gluetun's DNS over TLS and iptables kill switch that doesn't require messing with qbittorrent config to secure, but that's what I have so far and it works well enough for now.

[-] macgregor@lemmy.world 7 points 1 year ago

Look for refurbished units, you can get enterprise grade units for like half the retail price. I recently got a refurbished APC from refurbups.com. Comes with brand new batteries, mostly rack mountable stuff. Ended up being a little over half the price of a brand new one with shipping. Can't tell at a glance if they ship to Canada, but if not I'd be surprised if there wasn't a similar Canada based site you could find.

[-] macgregor@lemmy.world 6 points 1 year ago

Got a refurbished APC coming in today. Looking forward to not having to worry about my NAS drives or losing internet because or a split second power blip.

[-] macgregor@lemmy.world 2 points 1 year ago

Not really, its mostly a hobby/nerdy/because I can thing. I am a software engineer with a decade of experience. The job sometimes requires virtual sys admin work (VM/container, cloud networking, etc). Setting up my own baremetal cluster has given me more insight into how things work, especially on the network side. Most of my peers take for granted that traffic gets in or out of a cluster, but I can actually troubleshoot it or design with it in mind.

22
submitted 1 year ago* (last edited 1 year ago) by macgregor@lemmy.world to c/selfhosted@lemmy.world

Every couple months I get the urge to organize my lab/home office equipment into a rack/cabinet, but never follow through on it. I ocassionally look on craigslist for deals, but everything is either too far away or too big. I'd rather pay more for a smaller rack that doesn't go all the way to the ceiling and will just show up on my doorstep. A 6U would fulfil my current requirements, 12U is probably more than enough in reality but as an engineer I find myself eyeing 15-18U to be conservative.

This iteration of the search has me eying these options:

  • sysracks 18U server rack - slightly bigger than I want, but still reasonable. Some questionable reviews on manufacturing/shipping quality, but this seems like a solid cost/value ratio: fully enclosed, room to grow, wheels, accessories like shelves and such I'd want anyway. Feels like maybe overkill, but for the price...
  • NavePoint 15U Portable Rolling Network Rack - closer to the size I want (12/15U options), cheaper but no accessories, like shelves, I'd need bringing it closer in price to the sysrack. Similar manufacturing/shipping concern reviews. I like this one, but hard to feel like it's not a worse deal than the sysrack.
  • some startech variant - these seem generally higher build quality (sturdier) but higher cost and more "bare bones" looking. also often adjustable depth making it potentially more future proof. but I'm not sure either of these make up for the increased cost.

What do you think? Any advice or wisdom you can share? I'm feeling like finally following through this time because my office is a tiny mess. Leaning toward the NavePoint currently.

[-] macgregor@lemmy.world 1 points 1 year ago* (last edited 1 year ago)

I considered it but RAM is very limited on the NAS and the cluster nodes, it's my primary bottleneck. it would also be more volitile. the two SSDs are RAID 1 redundant, just like the underlying HDDs, in addition to the built in power loss protection on the drives. RAM discs are great if you can spare them and have a UPS though.

17

So I run a small Kubernetes cluster (k3s) backed by MariaDB hosted on a Synology NAS with only HDDs rather than etcd colocated on the control nodes. For resiliency purposes it's been great, nodes are basically pure compute resources I can wipe out and recreate with ease and not worry about data loss. However, for over a year now I've lived with the constant chatter of active hard drives in my office.

The Kube DB workload is extremely read heavy and very active: many thousands of selects per minutes with only a handful of writes. Clickclickclickclickclickclick. Seems like a good case for caching, and luckily my NAS has 2 NVMe slots for an SSD cache. I bought a couple data center drives with PLP (Kingston DC1000B, probably overkill, but not crazy expensive), pop them in, set up a read/write cache for the database and Kube NFS volumes and...silence, wonderful silence. It's almost constantly at 100% cache hits. Bonus points if things are faster as well.

I'm very happy. Never optimized an application for noise levels before ๐Ÿ˜.

[-] macgregor@lemmy.world 5 points 1 year ago

Fyi you will not be able to do live video transcoding with a raspberry pi. I overclocked my pi4's CPU and GPU and it just can't handle anything but direct play and maybe audio stream transcoding, though I've never had luck with any transcoding period. I either download a format I know can direct play or recently started using tdarr (server on pi, node running on my desktop when I need it) to transcode into a direct play format before it hits my Jellyfin library. Even just using my AMD Ryzen 5 (no GPU) it transcodes like 100x faster than a tdarr node given 2 of the rpi cpu cores. You could probably live transcode with a decent CPU (newer Intel CPUs are apparently very good at it) if you run Jellyfin on the NAS but then you're at odds with your low power consumption goals. Otherwise rpi Jellyfin is great.

Good luck, I'd like to build a NAS myself at some point to replace or supplement my Synology.

[-] macgregor@lemmy.world 1 points 1 year ago

I don't see how star fleet allowed Data to remain onboard after that one. Being in the tech industry I often feel the Federation's infosec is lacking in often trivial ways (unless the episode calls for better security of course ๐Ÿ™‚), but maybe they have just accepted that sort of thing as the cost of doing space business since it happens all the time. So Data's benefits out weigh his risk.

macgregor

joined 1 year ago