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)
ร—
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.
Thing is that I used to have a fixed always on #PoE+ node. But changed it so that all of them can be turn on and off. And because it will always turn the longest running off, it's now cycling through all the nodes over time and each one of them gets run down time.
Did a small but significant upgrade to the temporary #kubernetes node autoscaler. It will now turn on as many nodes as there are pending pods (whichever is lowest). This will save me from waiting up to 6 minutes before all nodes are online to handle #GitHub Actions workflows. And #talos boot timing is pretty consistent. Those were all turned in within a second of each other:
And this is how that looks, the #API call to the #Unifi switch happens in one go, and then the #switch firmware turns each port on one by one:
Had some cable come in today to get the #sonoff minis off the 90 degree adapters. It looks a looks a lot cleaner now. But it moves them into the top cable gutter, which is for the #USB cables anyway:
The final node (for now) came in yesterday. About to welcome "power" to the node pool:
But first I need to reassemble the #LEGO node enclosure because I messed things up somehow. Some parts of it were mirrored or in the wrong place. So it would have passed unit tests, but not work as expected:
And done, thanks to my wife for doing a "play test" with the instructions and finding a whole bunch of (small) improvements:
And it's up and running ๐ŸŽ‰
Maybe more than I should I enjoy seeing the hacked together node autoscaler in action on my home #kubernetes cluster
For the photos (and videos) I've borrowed the #FLIR for https://toot-toot.wyrihaxim.us/@wyri/112817844671480146 I've been building a bit of a set-up to be able to easily take photos of the bottom of a #RaspberryPi:
This is a recording of the moment a node is powered on all the way to the moment it becomes visible as a node in #Kubernetes. The #FLIR very nicely shows the spread of the head from the CPU to the rest of the board:
Was looking at my #Unifi dashboard today (because I had to add a bunch of #Shelly plugs into the system https://toot-toot.wyrihaxim.us/@wyri/112911419062070177) and noticed that each time traffic spikes, it matches the time the cluster scales up. In this case to do CI and build #Docker/#OCI images for a service:
About to get the two nodes that temporarily ran on #SDCards onto #USB #SATA #SSD's
The fun part is that I had to take them out of the cluster in #terraform, swap #SDCard for #SSD, plug them, back in, and update the Terraform to use the SSD instead of the SDcard.
On this afternoon's agenda:
* Reword the power cabling
* Replace the #network cables from the #core #switch to the #cluster/#home #office first switch
While prepping I grabbed the #FLIR to check how hot the #cat bed is because every time I open it up the bottom is warm. These readings show why. The #LEGO can hold this fine, but I added an extra brick worth of space just in case.
The switch internal temperature is 20 degrees Celcius higher than the outside:
Since I'm doing the power cabling, the network in the home office will be "off" so see you in an hour ๐Ÿ‘‹