Vanilla Kubernetes Setup with Tailscale

By Taha9 minutes read

Disclaimer

In this guide, I will use Fedora 41 Cloud Edition as the base operating system. Some steps may vary depending on the distribution you are using.


Prerequisites

Important

  • I will use the following machines:

    • Master Node:
      • Hostname: m1.srv.mtaha.dev
        CPU: Intel(R) Celeron(R) N3450 (4) @ 2.20 GHz (x86_64)
        RAM: 8 GB
        OS: Fedora 41 Cloud Edition
        Location: Homelab
        Machine: Zimaboard 832
    • Worker Node 1:
      • Hostname: w1.srv.mtaha.dev
        CPU: Intel Xeon (Skylake, IBRS, no TSX) (2) @ 2.10 GHz (x86_64)
        RAM: 4 GB
        OS: Fedora 41 Cloud Edition
        Location: Hetzner Cloud
        Machine: CX21
    • Worker Node 2:
      • Hostname: w2.srv.mtaha.dev
        CPU: ARM Cortex-A76 (4) @ 2.40 GHz (aarch64)
        RAM: 8 GB
        OS: Fedora 41 Cloud Edition
        Location: Homelab
        Machine: Raspberry Pi 5 - 8 GB

Step 1: Install Tailscale


Step 2: Set up Tailscale ACL


Step 3: Set up Hostname and Hosts File


Step 4: Set up FirewallD rules


Step 5: Enable CGroup and Disable Swap


Step 6: Enable IP Forwarding


Step 7: Update System Packages


Step 8: Regenerate Initramfs and Apply Bootloader Configuration


Step 9: Verify the Changes


Optional Step: Install K9s CLI


Step 10: Set up Kubernetes Repository


Step 11: Install Kubernetes Packages


Step 12: Set up Containerd to use CGroup


Step 13: Set up Kubelet Extra Args to Use Tailscale IP Address


Step 14: Initialize Kubernetes Cluster


Step 15: Join Worker Nodes to Kubernetes Cluster


Step 16: Install Helm Package Manager in Master Node


Step 17: Install CNI Plugin


Step 18: Install MetalLB Load Balancer


Step 19: Install local-path-provisioner Storage Class


Conclusion

References