diff --git a/content/posts/2024-09-22-homelab.md b/content/posts/2024-09-22-homelab.md new file mode 100644 index 0000000..27fef83 --- /dev/null +++ b/content/posts/2024-09-22-homelab.md @@ -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). + +--- +