Skip to content

Commit

Permalink
add homelab research
Browse files Browse the repository at this point in the history
  • Loading branch information
dodwmd committed Sep 22, 2024
1 parent 3105ad4 commit 83a5709
Showing 1 changed file with 105 additions and 0 deletions.
105 changes: 105 additions & 0 deletions content/posts/2024-09-22-homelab.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
---
title: "Setting Up a Kubernetes Homelab with ARM64 vs AMD64: Which is Better?"
date: 2024-09-22T12:00:00+10:00
draft: false
tags: ["homelab", "kubernetes", "devops", "arm64", "amd64"]
categories: ["Homelab", "DevOps"]
---

As a DevOps engineer, I've always found it crucial to have a home lab to experiment, learn, and keep up with new technologies. Recently, I decided to set up my own homelab to run Kubernetes clusters. I had two primary requirements: keeping power consumption low and building redundancy with at least 3 nodes. My budget was around $1000-1300, and I considered both **ARM64** and **AMD64** processor-based systems.

In this post, I'll walk you through the hardware options I explored, compare the two architectures, and explain why you might choose one over the other depending on your use case.

---

## **ARM64 Setup: Low Power, Efficient, and Scalable**

For the ARM64 architecture, I looked at boards like the **Rock Pi 5** and **Odroid N2+**. These are small single-board computers (SBCs) that have gained popularity due to their low power consumption and performance, particularly in Kubernetes homelabs.

### **ARM64 Hardware Setup:**

#### **Master Nodes**
- **2x Rock Pi 5 (16GB RAM)**: At about $150-180 each, these provide great compute power for master nodes while staying within budget.

#### **Worker Nodes**
- **2x Rock Pi 5 (32GB RAM)**: I decided to add two worker nodes, each with 32GB of RAM to handle more demanding workloads. These came in at around $180-220 each.

#### **Storage**
- Each node comes with **NVMe PCIe SSDs** ranging from 120GB to 256GB for $40-60 per unit. Fast storage is essential for a smooth Kubernetes experience.

#### **Cases and Power Supply**
- Official cases and power supplies come in at around $25-35 and $15-20 per node, respectively. These keep the setup clean and well-cooled.

#### **Cost Breakdown**
- **Master Nodes (16GB each)**: ~$300-360.
- **Worker Nodes (32GB each)**: ~$360-440.
- **Storage**: ~$160-240.
- **Cases & Power Supply**: ~$100-140.

### **Total Cost**: ~$1020-1320

#### **Pros of ARM64 Setup:**
- **Low Power Consumption**: Each node consumes just 10-15W, keeping the overall energy use low. This is ideal if you're conscious of electricity costs or looking to run the cluster 24/7.
- **Smaller Footprint**: ARM64 boards are compact and easy to stack or store in small spaces.
- **Cost Efficiency**: With lower individual component costs, it's easier to expand the cluster later if needed.

#### **Cons of ARM64 Setup:**
- **Performance Limitations**: While ARM64 boards are great for lightweight workloads, they're not as powerful as AMD64 systems. For more compute-heavy tasks, you might feel the limitations.
- **Limited Expandability**: Upgrading RAM or storage isn't as straightforward with ARM boards, so planning for future use cases is crucial.

---

## **AMD64 Setup: More Power, Flexibility, and Mainstream Compatibility**

For the AMD64 architecture, I considered **Mini PCs** with **Ryzen 5 5500U processors**. These systems offer higher compute power and are more compatible with a wider range of software.

### **AMD64 Hardware Setup:**

#### **Master Nodes**
- **2x Mini PCs (AMD Ryzen 5 5500U, 16GB RAM)**: These come with 6 cores and 12 threads, offering solid performance. Each unit costs about $300-350, and they come pre-installed with **256GB NVMe SSDs**, which was a bonus.

#### **Worker Nodes**
- **2x Mini PCs (upgraded to 32GB RAM)**: I chose to upgrade the worker nodes to 32GB of RAM. The base unit cost was ~$300-350 with 16GB of RAM, and I added an extra 16GB of DDR4 for ~$40-60 per node.

#### **Cases and Power Supply**
- Since these are mini PCs, they come with everything integrated, including the power supply and cooling. No need for extra cases or custom power solutions here.

#### **Cost Breakdown**
- **Master Nodes (16GB each)**: ~$600-700.
- **Worker Nodes (32GB each)**: ~$680-820.
- **Storage**: Included (256GB NVMe per node).

### **Total Cost**: ~$1280-1320

#### **Pros of AMD64 Setup:**
- **More Powerful CPUs**: The Ryzen 5 5500U offers 6 cores and 12 threads, making it ideal for compute-heavy workloads, CI/CD pipelines, or even running virtual machines (VMs) alongside your Kubernetes cluster.
- **Better Flexibility**: It’s easier to upgrade RAM, storage, or even swap out parts in the future.
- **Mainstream Software Compatibility**: AMD64 architecture is supported by a broader range of applications, making it easier to work with tools outside of the ARM ecosystem.

#### **Cons of AMD64 Setup:**
- **Higher Power Consumption**: Each node consumes around 25-30W under load, which is higher than ARM-based alternatives.

---

## **ARM64 vs AMD64: Which Should You Choose?**

| Feature | **ARM64 Setup (Rock Pi 5)** | **AMD64 Setup (Ryzen 5 5500U Mini PCs)** |
|--------------------|-------------------------------------------------------|---------------------------------------------------|
| **Cost** | ~$1020-1320 | ~$1280-1320 |
| **CPU Power** | ARM Cortex-A76/A55 (Rock Pi 5), 6-8 cores per node | Ryzen 5 5500U, 6 cores/12 threads per node |
| **RAM** | 16GB for masters, 32GB for workers | 16GB for masters, 32GB for workers |
| **Storage** | 120GB-256GB NVMe SSDs | 256GB NVMe SSDs included with Mini PCs |
| **Power Usage** | 10-15W per node | 25-30W per node |
| **Expandability** | Limited, but supports PCIe SSDs on some boards | Easy to upgrade RAM and SSD |
| **Kubernetes Performance** | Adequate for lightweight to moderate workloads | Strong performance for heavier workloads |
| **Community Support** | Large community around Raspberry Pi, ARM K8s setups | Larger ecosystem for AMD64 and mainstream hardware |
| **Flexibility** | ARM-based, good for low-power, IoT, or lightweight clusters | More flexible for heavier workloads or VMs |

### **Summary**:
- **ARM64 (Rock Pi 5)** is better for low-power, lightweight Kubernetes clusters, especially if you’re focusing on low energy consumption and ARM-based workloads.
- **AMD64 (Ryzen Mini PCs)** provides more compute power, flexibility, and is better suited for more demanding workloads. If you expect your homelab to handle a variety of tasks or run heavier applications, the **AMD64 setup** will offer better performance, though at a slightly higher power cost.

Both setups fit within a similar budget range, so your choice depends on whether you prioritize power efficiency (ARM64) or computational power and flexibility (AMD64).

---

0 comments on commit 83a5709

Please sign in to comment.