Die Einführung eines Kubernetes-Clusters ist für viele Unternehmen eine unverzichtbare Lösung, um skalierbare Anwendungen zu betreiben. Doch die Kosten für gemanagte Kubernetes-Dienste können schnell mehrere hundert Euro pro Monat erreichen – ein erheblicher Posten im IT-Budget. Eine kostengünstige Alternative bietet die Einrichtung eines eigenen Kubernetes-Clusters auf einer einzelnen Hetzner-Instanz. Dieser Ansatz ermöglicht nicht nur eine drastische Reduzierung der Betriebskosten, sondern bietet auch die Flexibilität, den Cluster bei Bedarf zu löschen und aus einem Backup wiederherzustellen.
In diesem Leitfaden erfahren Sie, wie Sie einen Kubernetes-Cluster mit k3s auf einer Hetzner-Cloud-Instanz einrichten, Backups mit Velero organisieren und die Kosten auf ein Minimum reduzieren. Die Lösung eignet sich besonders für Entwickler, die eine kosteneffiziente Umgebung für Test- und Entwicklungszwecke benötigen, ohne auf die Vorteile eines Kubernetes-Clusters verzichten zu müssen.
Einrichten eines kostengünstigen Kubernetes-Clusters
Der erste Schritt besteht darin, die notwendigen Tools zu installieren und die Umgebung vorzubereiten. Dazu gehören der Hetzner Cloud CLI, kubectl für die Kubernetes-Verwaltung sowie Helm für die Bereitstellung von Anwendungen. Zusätzlich wird das Backup-Tool Velero benötigt, um den Cluster bei Bedarf wiederherstellen zu können.
Wichtige Komponenten und deren Funktionen
- Hetzner Cloud CLI (hcloud): Ermöglicht die Verwaltung von Hetzner-Cloud-Ressourcen über die Kommandozeile.
- kubectl: Das Standard-Tool zur Interaktion mit Kubernetes-Clustern.
- Helm: Ein Paketmanager für Kubernetes, der die Bereitstellung von Anwendungen vereinfacht.
- Velero: Ein Tool zur Sicherung und Wiederherstellung von Kubernetes-Clustern.
- Azure CLI (az): Wird für die Integration des Azure Blob Storage als Backup-Speicher benötigt.
Installation der erforderlichen Tools
Um die Tools zu installieren, führen Sie folgende Befehle aus:
# Hetzner Cloud CLI installieren
wget $(curl -s | jq -r '.assets[0].browser_download_url' | sed 's%checksums.txt%hcloud-linux-amd64.tar.gz%g') -P /tmp/
tar -xvzf /tmp/hcloud-linux-amd64.tar.gz -C /usr/local/bin hcloud
sudo chmod +x /usr/local/bin/hcloud
# kubectl installieren
curl -LO " -L -s )/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
# Helm installieren
curl -fsSL -o get_helm.sh
chmod +x get_helm.sh
sudo ./get_helm.sh
# Azure CLI installieren (falls nicht vorhanden)
curl -sL | sudo bashKonfiguration des Kubernetes-Clusters mit k3s
Nach der Installation der Tools können Sie den Kubernetes-Cluster auf der Hetzner-Instanz einrichten. k3s ist eine leichtgewichtige Kubernetes-Distribution, die sich ideal für den Betrieb auf einer einzelnen Instanz eignet.
Cluster-Erstellung und Vorbereitung
- Erstellen Sie eine neue Hetzner-Cloud-Instanz mit ausreichend Ressourcen (z. B. CX21 mit 2 vCPUs und 4 GB RAM).
- Installieren Sie k3s auf der Instanz:
curl -sfL | sh -s - --disable traefik- Überprüfen Sie die Installation:
kubectl get nodesIntegration von Traefik und Prometheus
Traefik dient als Gateway und Load Balancer, während Prometheus für das Monitoring zuständig ist. Diese Komponenten werden mit Helm installiert:
# Traefik installieren
helm repo add traefik
helm repo update
helm install traefik traefik/traefik
# Prometheus installieren
helm repo add prometheus-community
helm repo update
helm install prometheus prometheus-community/kube-prometheus-stackBackups mit Velero organisieren
Ein zentraler Bestandteil der Lösung ist die Sicherung des Clusters mit Velero. Dabei wird der Cluster in regelmäßigen Abständen gesichert und kann bei Bedarf wiederhergestellt werden. Als Backup-Speicher dient ein Azure Blob Storage.
Velero einrichten
- Installieren Sie Velero auf dem Cluster:
# Velero CLI installieren
curl -LO
tar -xzf velero-v1.12.0-linux-amd64.tar.gz
sudo mv velero-v1.12.0-linux-amd64/velero /usr/local/bin/
# Azure Blob Storage für Backups vorbereiten
az login
az storage account create --name <storage-account-name> --resource-group <resource-group> --location <location> --sku Standard_LRS
az storage container create --name <container-name> --account-name <storage-account-name>- Erstellen Sie eine
credentials-veleroDatei mit den Azure-Zugangsdaten:
AZURE_CLIENT_ID=<client-id>
AZURE_CLIENT_SECRET=<client-secret>
AZURE_SUBSCRIPTION_ID=<subscription-id>
AZURE_TENANT_ID=<tenant-id>
AZURE_RESOURCE_GROUP=<resource-group>- Installieren Sie Velero mit dem Azure-Plugin:
velero install --provider azure --plugins velero/velero-plugin-for-microsoft-azure:v1.0.0 --bucket <container-name> --secret-file ./credentials-veleroAutomatisierung der Backups
Um regelmäßige Backups zu erstellen, können Sie einen CronJob in Kubernetes erstellen. Dieser führt täglich ein Backup des Clusters durch:
apiVersion: batch/v1
kind: CronJob
metadata:
name: velero-backup
spec:
schedule: "0 2 * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: velero
image: velero/velero:v1.12.0
command: ["/velero", "backup", "create", "--include-namespaces=default", "--ttl", "24h"]
volumeMounts:
- name: credentials
mountPath: /credentials
readOnly: true
restartPolicy: OnFailure
volumes:
- name: credentials
secret:
secretName: velero-credentialsKostenkontrolle und Wiederherstellung
Ein entscheidender Vorteil dieser Lösung ist die Möglichkeit, den Cluster bei Bedarf zu löschen und die Kosten auf null zu reduzieren. Die einzige anfallende Kosten entstehen durch den Azure Blob Storage und die Hetzner-Instanz, die bei Nichtnutzung deaktiviert werden kann.
Cluster löschen und wiederherstellen
- Cluster löschen:
- Erstellen Sie zunächst ein Backup mit Velero.
- Setzen Sie alle persistenten Volumes auf
Retain, um Datenverlust zu vermeiden. - Löschen Sie die Hetzner-Instanz über die Kommandozeile oder das Webinterface.
- Cluster wiederherstellen:
- Erstellen Sie eine neue Hetzner-Instanz.
- Installieren Sie k3s und Velero.
- Stellen Sie den Cluster aus dem letzten Backup wieder her:
velero restore create --from-backup <backup-name> --exclude-resources kube-system,kube-public,kube-node-lease,veleroFazit: Flexibilität und Kosteneffizienz vereint
Die Einrichtung eines eigenen Kubernetes-Clusters auf einer Hetzner-Instanz bietet eine kostengünstige Alternative zu teuren gemanagten Lösungen. Durch die Integration von Velero für Backups und die Möglichkeit, den Cluster bei Bedarf zu löschen und wiederherzustellen, erhalten Sie eine flexible und skalierbare Umgebung, die sich an Ihre Anforderungen anpassen lässt. Diese Lösung eignet sich besonders für Entwickler und kleine Teams, die eine kosteneffiziente Kubernetes-Umgebung benötigen, ohne auf die Vorteile eines Managed Service verzichten zu müssen.
KI-Zusammenfassung
Deploy a production-ready Kubernetes cluster for just $10/month using k3s, Velero, and Azure Blob Storage. Step-by-step guide with cost breakdown.