Back to all posts

Day 1: Setting Up k3s on My VPS

1 min read
kubernetesk3shomelabdevops

Today marks the beginning of my Kubernetes homelab journey. I've decided to document the setup and evolution of my k3s cluster running on a VPS.

Why k3s?

After considering various options (minikube, kind, full kubeadm), I chose k3s for several reasons:

  • Lightweight: Single binary under 100MB
  • Production-ready: CNCF-certified Kubernetes distribution
  • Built-in essentials: Traefik ingress, CoreDNS, local-path provisioner
  • Easy HA: Simple to add nodes later

Initial Setup

The installation was straightforward:

curl -sfL https://get.k3s.io | sh -

After a minute or so, I had a running cluster:

sudo kubectl get nodes
NAME         STATUS   ROLES                  AGE   VERSION
vmi2951245   Ready    control-plane,master   1m    v1.34.3+k3s1

First Namespaces

I immediately set up the foundational infrastructure:

# monitoring namespace for Prometheus/Grafana
apiVersion: v1
kind: Namespace
metadata:
  name: monitoring
---
# microservices namespace for shared infrastructure
apiVersion: v1
kind: Namespace
metadata:
  name: microservices

What's Next

Over the coming days, I'll be:

  1. Setting up ArgoCD for GitOps deployments
  2. Configuring cert-manager for TLS certificates
  3. Adding Prometheus and Grafana for observability
  4. Deploying my first applications

This is just the beginning. The goal is to build a production-grade platform for running my portfolio projects and experimenting with cloud-native technologies.


This post is part of my K8s Cluster Journal - documenting the evolution of my homelab infrastructure.