Status meines k3s-Homelab (Stand 02/2021)

Ich dachte mir, dass ich mal ein paar Worte zu meinem mittlerweile angewachsenen Kubernetes Homelab schreibe. Nicht, dass das irgendwas weltbewegendes wäre, aber sicherlich für den einen oder anderen ein kleiner Denkanstoß oder Inspiration für eigenes.

Hardware

Hardware wird keine dedizierte eingesetzt. Ich habe auf meinem Proxmox Server vier virtuelle Maschinen erstellt. Dazu gesellen sich allerdings derzeit noch zwei Raspberry Pi 4 mit 4 GB RAM.

Software

Als Betriebssystem setze ich durchgehend auf Ubuntu 20.04 LTS. Bei den virtuellen Maschinen natürlich die amd64 und bei den RPi arm64 Variante.

Der Cluster selbst läuft mit Ranchers k3s anstatt eines vollen k8s.

Screenshot der Lens app

Kubernetes Cluster

Allgemein

Der Cluster selbst besteht aus einem Master und fünf Worker. Ein Multimaster-Setup habe ich mir überlegt, allerdings für den Anfang verworfen. Auch wenn es mit k3s eigentlich ziemlich einfach gehen würde. Zumindest mit externer Datenbank.

Storage

Als Storage setze ich auf Longhorn. Longhorn, auch von Rancher, ist ein distributed block storage welches iSCSI im Hintergrund nutzt. Je Storage Node wird eine dedizierte Festplatte (so zumindest der empfohlene Weg) an den Cluster gereicht und alle Dateien werden entsprechend verteilt. Zwei Hosts sind hier das Minimum. Bei mir werden alle 4 virtuellen Maschinen dafür verwendet.

Ingress

In meinem kleinen k3s Tutorial habe ich Traefik als Ingress eingerichtet. Für meinen produktiven Cluster im Homelab allerdings setze ich auf NGINX. Es liegt einfach an der leichteren Konfiguration für Einsteiger. Traefik ist wie unter Docker sehr mächtig, allerdings hat mich das etwas überfordert, sodass ich mit dem leichteren Beginnen wollte.

Monitoring

Auch hier nutze ich den klassichen Weg und verwende den kube-prometheus-stack. Bohrte den allerdings noch mit etwas Loki auf. Loki ist ein Software um Logdateien aufzubereiten. Ähnlich wie man es vlt. vom Elastik Stack (ELK) kennt.

Ein Alerting via Alertmanager ist noch nicht im Einsatz. Dafür informiert mich Botkube über diverse Cluster-Ereignisse auf einen dedizierten Discord Server.

Grafana Dashboard des Prometheus Monitoring

Besonderheiten

Ich wollte von Anfang an nicht stur yaml-Dateien schreiben und diese mit kubectl in den Cluster jagen. Ich bin früh auf die k8s@home Community gestoßen die sich Rund um das Thema GitOps und Kubernetes im Homelab beschäftigen. Entsprechend wird mein Cluster auch komplett aus einem GitHub Repository gespeist. FluxCD zieht sich diese Daten und deployt sie im Cluster. Alles via Helm.

Das Problem ist noch, dass ich mich noch nicht um das Thema Secrets bemüht habe. Das steht für die nächste Zeit auf der Roadmap. Dann ist es auch möglich Tokens, Zertifikate und ähnliches auf GitHub zu speichern. Im können fast alle Dienste nur aus dem internen Netzwerk heraus erreicht werden.

Was hoste ich?

Ich würde diese Liste einfach mal nach Namespaces aufteilen. Ich liste allerdings nur weitere Software auf die nicht oben beschrieben sind.

home

  • Home Assistant mit code-server
  • Mosquitto
  • Heimdall

network

  • MetalLB
  • cloudflare-ddns
  • ntp

media

  • Gaps
  • Ombi
  • Tautulli
  • Plex

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.