Right, so the lego parts haven't arrived yet. But the next 3 PoE+ hats for the next 3 nodes did!
Another thing that came in are two USB extension cables. Mainly got those to experiment with less tension on the USB <=> SATA cable
Yay! The #LEGO parts for experimenting just came in!
And the big frames to the right might be come a key part in making #LEGO node blades:
Even though this first attempt failed, it does make it look promising:
Made scale model pillars with diagonal beams for sturdiness but still some movement possible (had bigger ones with the green bars but didn't take a photo), for connecting the blades to:
Adding another big frame at the bottom makes it all even more stable:
Had another go at this tonight, and managed to get the RPI and SSD into the cube. Not perfect but getting there 😎
It was interesting to see the amount of traffic flowing through the cluster: https://t.co/IqhxR1XEwE
Cees-Jan Kiewiet (@wyri@haxim.us) on Twitter

“This seems to be fairly normal (k8s cluster) amount of traffic for my WIP cluster:”

Twitter
But sadly had to declare it dead after ETCD decided it ran out of storage: https://t.co/LEmDZxPyGw
Cees-Jan Kiewiet (@wyri@haxim.us) on Twitter

“R.I.P. Home #Kubernetes cluster”

Twitter
So preparing (with k3d) for a triple master cluster, S3 backup and snapshot and automatic recovery before starting it again. Will then do a series of chaos engineering tests to make sure it's resilient against power outages etc etc.
The triple master set up will have each master node on a different switch (!!!) (or access point). Mainly because one of the masters will replace my Raspberry Pi 1 that reads information from the smart meter in this house. The other extra master will have a special purpose.
The meterkast (utility closet) node casing and storage just came in. Never realised M.2 SSD's are so, tiny 😱
Yay! The fine folks at #LEGO_Group seem to have caught up with the custom bricks orders after the holidays zerg 🎉. So I can put together the node #lego enclosures in a few days and start the cluster back up.
Still going for the 3 master setup in the long term, but since I can already start it up with a single master going to focus on building and testing power outage and recovery testing. Hopefully including having a fresh node every time it starts, including the master 🤐
This is a first for me! #LEGO_Group put the custom bricks order in a box 😱. Building the node kube's tonight 🎉. Probably powering the cluster back up next week, and hopefully the more space between components should make it require less active cooling
Hah, progress! But seems I'm missing parts, connector pegs to be specifically so I can't do anything at the moment. Good thing I ordered 200 of those the other day. Might need a few more parts, so another #lego order will go out soon 🤣. But really loving the progress here 😍
Started prototyping a #Kubernetes node with a screen. Next steps are starting X and a browser in kiosk mode
Another big milestone. A new RPI 4 8GB came in, so I can start assembling the utility closet master node:
It's been a decade of two since I had to do configuration through jumpers
There is only one issue. Doing rapid rebuilding of the cluster to test things out is going to be a lot harder because this one won't be as easy to access as the others currently are...
Got it up and running at least https://t.co/0s4snsqtBh and while I love the #argon_forty casing I still think defaulting to using the USB3 instead of the USB2 port will leave plenty of users with I/O issues.
Cees-Jan Kiewiet (@wyri@haxim.us) on Twitter

“Set up a #kubernetes node that said, it's simple they said. 8 cables later:”

Twitter
#argon_forty All the nodes in my #k8s cluster run on SSD's on the #USB v2 port because the v3 port has stability issues. Couldn't even write the image to the M.2 #SATA #SSD using the v3 port. Hence the extension cables to hook it to the v2 port. So it has a tail:
But at least I now have two leader nodes, and I'm getting errors like this during some #terraform calls:
Whoop whoop, the #LEGO parts I ordered 6 weeks ago just came in! Time to finish the current enclosures and start with building the tower to put them in
The end result of tonight's thinking with the new #lego parts that came in. Fully hanging node enclosure with room to make it more blade-like/slide it in and out for easy maintenance but that is for another time. Plus the black technic baseplates are amazingly solid <3
The end result for tonight, it is not perfect, and there should be another set of parts arrive in two weeks, but we're getting there. Going to have to order more baseplates tho, those things are awesome and will make the whole project stable af.
Had a small set of #LEGO pieces come in a few days ago. And I finally managed to get a good and sturdy solution for the SSD, and also the RPI, which was a bit tricky with the SSD already in it. Making it about 90% done, the final thing I really want is a way to slide it in and
the enclosure tower. Because maintenance with everything fixed in place will be messy.
Alright, the new leader node was put into position earlier today:
Time to start terraforming this thing!
TR apply 1 done:
And that is TF apply 2 done:
And that is the 3rd TF apply done. The (almost) full cluster back up in 3 commands and about 30 minutes of waiting for everything to be installed and back to running:
Next up is rook as a potential replacement for longhorn to use NFS/ISCSI for storage instead. Longhorn is really cool, but with my current number of cluster reinstalls I'm looking for something easier to recover data with
Today I started with all 4 nodes running
The day ends with only two running because I don't need more, so why would I
Realised today that I could just stack all 3 into one tower above each other. Like the intended result:
Infinity Gauntlet in meeting mode for scale
Another win for the cluster today is the set up of NFS as PVC storage backend. The SSD's are useful and Longhorn did do what is intended to do. But NFS survives cluster reinstalls. And trying to KISS it here: https://t.co/AwqmBDit7w
Cees-Jan Kiewiet (@wyri@haxim.us) on X

@achetronic Yeah this took me less time to set up and get running than I spent today reading up on Rook:

X (formerly Twitter)
Installed #linuxserverio's Heimdall on the cluster today. A bit sad the #Unifi app isn't an enhanced app, but I'm pretty sure I can muster up writing some #laravelphp to turn it into an enchanted app 🤔
#linuxserverio #laravelphp Had lots of fun this weekend building a platform above the switch. Starting out with these half perfect towers (the top still needs diagonal support before adding more nodes):
#linuxserverio #laravelphp The switch is placed in the middle on top of the middle blue statch for additional support:
#linuxserverio #laravelphp It looks big, and it is big but this finally means I can start working on a long term cabling plan and have plenty of space underneath the switch to do so and for cooling:
#linuxserverio #laravelphp During the placement (without anything going down FYI), I found a slight miscalculation:
#linuxserverio #laravelphp After fixing that it has been standing fine like this for a day now. Just need to make the space between the top of the switch and the node platform smaller:
Really happy with the results of this weekend. Swapping all of this when all the nodes where up and running and my wife was playing online games that went through this switch made it "fun" as at some point I had the live running nodes on my lap while trying to get the switch in
That thing looks like an abstract painting at night 😍
Had some fun yesterday prototyping an easy way to support maintenance/swap nodes out without having to take the rack apart:
Think I found a good way to try and keep the cats off the platform, or at least detect when they get up it:
Worked on a PoC to make adding and removing node enclosures easier by not directly making them part of the structure. But instead by putting them on a cart you can take out:
First "big" success of the cluster: https://twitter.com/WyriHaximus/status/1534893994731352066 (sorry no Toot)
Cees-Jan Kiewiet (@wyri@haxim.us) on X

Nearly 10 years ago my first @Raspberry_Pi arrived. Two years later we moved to a different house. And last weekend, 8 years after that I finally took it off DSMR P1 duty and offline (for now). As it has been succeeded by a #kubernetes node running @home_assistant:

X (formerly Twitter)
Also, it looks like I missed the first birthday of the project (and thread): https://toot-toot.wyrihaxim.us/@wyri/109858081844775179
Cees-Jan Kiewiet :rp: :wm: (@wyri@haxim.us)

Content warning: Kubernetes home lab using lego thread imported from Bird site

Mastodon
The #LEGO node enclosure for Reality came out pretty well last night. Been iterating over this design for months and it's come together really well. Both the #raspberrypi and the #SSD in it are well kept in place. All supervised by #deathwing_t_cat who just wanted a nap 🤣.
Don't try this at home:
Made them in other colours as well, only purple is left to be build:
Came upstairs this morning and found out a certain cat has been on the cluster during the night and made a mess. Now the cool part is that this shows the latest iteration of node enclosure kept the SSD in place for those two nodes:
Been doing maintenance on the cables in the home office today, and as such 3/4 of the cluster was down for a few hours today:
It came back up with the switch in its new raised position after I took the old raise down for redesigning. And you might notice that the #IKEA cabinet it was on is no longer standing, but is now lying on it's side providing double the space and a lot more height to work with:
Now I can put all the nodes directly on the cabinet instead of stacking them on unstable towers. There will be a better more epic #LEGO #MOC to it all once I've figured it all out. But for today I'm happy with the progress:
Cees-Jan Kiewiet (@wyri@haxim.us) on X

It came in today 🎉!

X (formerly Twitter)
×
Those cooling fans do their work pretty well. Recorded the first below 30 degrees today 😱. To be fair, it has been freezing since yesterday 😅
Learned a few things about how #RabbitMQ runs as a cluster on the cluster and how it affects performance: https://toot-toot.wyrihaxim.us/@wyri/111766029001237630
Did some #lego patch panel maintenance aligning it with improvements in stud.io I made yesterday. Also started working on and closing the cable gutter. Not per se the most boring part. The gutter behind the nodes will require patch spots for each node for #RJ45 and #USB:
Thanks to my amazing wife, one of the cluster control plane nodes now has a #lego skeleton wizard guarding it
Achievement unlocked: Write a #kubernetes node autoscaler in an afternoon that scales up and down with demand. Completely hacked together in #php to my particular requirements. (Absolutely not built for the long term.) So now I have two #k8s nodes behind me that are off 💙.
One of them just turned on, WTF? Ow there was a long pending pod that had no where to go due to anti affinity 😅.
With some tweaking to the autoscaling, it's pretty clear it only sometimes scales up when needed. Got a bit batch of World of #Warcraft datamining scheduling for tomorrow, so will see how that impacts node usage. Overall I'm pleased with the makeshift node auto scaling. #kubernetes #k8s
Full list of cluster nodes + NAS for storage. Take a guess which are the controlplane:
Did another node cleaning, first time with the fans on all of them. They work great cooling them, but also at getting dust of then. Judging by where the dust settles it was a good call to pull the air through instead of blow it in the nodes. But nothing a (paint)brush can't remove. All nodes where as clean as if they would be new when done.
To help combat the dust, and as planned I've started working on an enclosure for the enclosures. Just a first stab at it, that worked out to have some stability issues to address.
Aside from roofing up, cable management is the next big topic. Need to take care of those cables so created a few more patch boxes for each node so it can just patch directly into the cable gutter:

One of the reasons I haven't published a blog post yet on the nodes, even though they are pretty much done. Is because I didn't finish the design yet. Well, earlier today I finished the design. Reinforced it in some locations, and included options to stack them.

The stacking will have to be designed. But finalizing the design is already a big milestone. Designs will be available (for sale) on Bricklink and/or ReBrickable at some point.

Been updating the node enclosures to this design and still very happy with it. Will design the stacking build soon and then do a blog post on the whole thing. Stacking is going to be `fun` with the whole big cooling fan in front. Which I'll make optional in the design so people can opt out of it. One major thing I want to do, before blogging about or and putting the design up on Bricklink/ReBrickable is to get some photo's with a camera to support the reasoning for this design.
One of the things I want to have once all nodes are in a "rack" so to say is to have some lights to indicate which node is on. Got a sonof mini wifi for each node so I can turn off the lights when no one is here. For the same reason I have big cooling fans: Our sleep at night. Light pollution is an issue with this many LED's around. So with the sonof mini wifi, and some node-red utilizing control through home assistant, with data from the everything presence 1. It will only turn on those lights
when there is someone near it. And when my gaming PC is on. Which effectively means it lags about a minute.
Started working on the cable gutter for all the #networking and #light (#USB) cables. Started with the patch panel on the left (home office) side.
After that, I did the node patch boxes and hooked each node into it. Tomorrow I'm putting a wall around the gutter to keep everything in one place. And after that figure out how to create a patch box for the USB lighting cables.
This is my current power supply situation for the cluster worker nodes, #PhilipsHue, and the switch supplemental cooling fan. Not ideal, but perfectly fine if it wasn't in the way of the #lego MOC I've been building around the cluster. So it has to move:
The initial thought was to use this one and put it under the MOC. Except it has 3 ports .... which is problematic because of the bulkyness of one adapter:
So instead I went with this tower, we have the same one downstairs powering the living room #lego display. Plenty of space and nothing will block each other. Plus it comes with 4 #USB powers we will utilize for (more) lego display lights and planned #ESPHome sensors on the stairs to the home office. Just need to pick and time and date as doing this will take that entire switch down, and create a network split between two and one control plane #kubernetes nodes.
The fun part is that I've already accidentally ran with 3 nodes, while I need 4 over the past week occasionally. Tweaked my home brow #kubernetes cluster autoscaler a bit to aggressive and it took out a node while it shouldn't.