Kubernetes vs. Shared Hosting: Wann lohnt sich der Umstieg?
Kubernetes vs. Shared Hosting: Wann lohnt sich der Umstieg?
Shared Hosting ist der Einstieg für die meisten Webprojekte, und das aus gutem Grund. Für 5–15 €/Monat bekommt man eine Laufzeitumgebung, eine Datenbank und ein Webinterface. Kein Terminal, kein DevOps, kein Stress.
Aber irgendwann kommt der Punkt, an dem ein Projekt aus Shared Hosting herauswächst. Die Frage ist: Wann genau ist dieser Punkt erreicht, und ist Kubernetes dann wirklich die richtige Antwort?
Wann ein Projekt aus Shared Hosting herauswächst
Shared Hosting funktioniert hervorragend für WordPress-Seiten, klassische PHP-Anwendungen, kleine Node- oder Python-Apps und statische Websites. Interessant wird ein Wechsel, wenn eines dieser Szenarien zutrifft:
1. Deine Laufzeitumgebung wird nicht angeboten
Modernes Shared Hosting ist längst nicht mehr PHP-only. Bei ITSH laufen im Webhosting PHP 8.2 bis 8.5 sowie rein statische Seiten. Eng wird es, sobald du eine andere Laufzeit brauchst: Node.js, Python, Go, Rust, Java oder eine Anwendung, die eigene Systempakete und Binaries mitbringt. Dann führt der Weg über ein Container-Image, und damit über Kubernetes oder zumindest einen VPS.
2. Du brauchst mehrere langlebige Prozesse
Ein modernes SaaS-Produkt besteht selten aus einer einzigen Anwendung. Typisch ist:
- API-Backend
- Frontend (SPA oder SSR)
- Background Worker
- Datenbank
- Redis/Cache
Auf Shared Hosting bildest du davon in der Regel die Web-Anwendung, Cronjobs und die Datenbank ab. Für einen dauerhaft laufenden Queue-Worker, einen eigenen Cache oder einen Message Broker ist dort kein Platz. Das braucht eigene Server und damit eigene Verwaltung.
3. Deployments sind nicht reproduzierbar
Wenn dein Deployment aus einem FTP-Upload oder ein paar Klicks im Webpanel besteht, fehlt dir Reproduzierbarkeit. Was passiert, wenn das Deployment fehlschlägt? Wie rollst du zurück? Wer hat wann was deployt? Viele Hoster bieten inzwischen Git-Deployments an, das löst den Upload, aber nicht den deklarativen Zustand: Es gibt keine Deployment-History, kein Rollback per Kommando und keine Umgebung, die sich aus einem Repository vollständig neu aufbauen lässt.
4. Skalierung stößt an die Tarifgrenze
Shared Hosting teilt sich die Ressourcen eines Servers mit anderen Kunden. Die Site skaliert innerhalb der Grenzen deines Tarifs, aber du entscheidest nicht, wie viele Instanzen eines bestimmten Dienstes laufen, und du kannst Last nicht gezielt auf einzelne Komponenten verteilen. Ein Horizontal Pod Autoscaler, der genau den einen überlasteten Service repliziert, ist im Shared Hosting nicht vorgesehen.
5. Vendor Lock-in durch proprietäre Tools
Viele Hoster bieten eigene Deployment-Tools, Datenbank-Panels und Konfigurationsoberflächen. Eine Migration zu einem anderen Anbieter bedeutet oft, Teile der Infrastruktur neu aufzubauen.
Was ändert sich mit Kubernetes?
Kubernetes löst diese Probleme, allerdings auf Kosten von Komplexität. Hier ein ehrlicher Vergleich:
| Kriterium | Shared Hosting | Kubernetes |
|---|---|---|
| Unterstützte Sprachen | PHP, Node.js, Python (je nach Hoster) | Alles, was in einem Container läuft |
| Mehrere Services | Begrenzt (Web-App + Cronjobs) | Ja, beliebig viele |
| Deployments | FTP / Git / Webpanel | kubectl apply / GitOps |
| Rollbacks | Manuell | Automatisch (Deployment-History) |
| Skalierung | Vertikal, im Rahmen des Tarifs | Horizontal Pod Autoscaler |
| Reproduzierbarkeit | Gering | Vollständig (Infrastructure as Code) |
| Einstiegshürde | Sehr niedrig | Hoch (ohne Managed Service) |
| Preis | 5–15 €/Monat | Ab 3 €/Monat (ITSH PAYG) |
Der entscheidende Punkt: Kubernetes ist nicht automatisch teurer als Shared Hosting. Die Kosten hängen davon ab, wie man es betreibt.
Der Zwischenschritt, den viele überspringen
Zwischen Shared Hosting und Kubernetes gibt es einen logischen Zwischenschritt: einen VPS mit Docker. Für viele Szenarien reicht das, und es ist ein guter Weg, Container-Grundlagen zu lernen.
# Auf einem VPS: Docker Compose für ein einfaches Setup
docker compose up -d
Das Problem: Ab dem Moment, wo man Hochverfügbarkeit, automatische Restarts, Rolling Updates oder Skalierung braucht, baut man sich stückweise Kubernetes nach, nur schlechter.
Wann Kubernetes Sinn macht
Kubernetes lohnt sich, wenn mindestens zwei dieser Punkte zutreffen:
- Du betreibst mehr als einen langlebigen Service (API + Worker + Frontend)
- Ausfallzeiten bei Deployments sind nicht akzeptabel (Rolling Updates nötig)
- Du willst Infrastructure as Code (reproduzierbare Umgebungen)
- Deine Anwendung muss horizontal skalieren (mehr Replicas bei Last)
- Du hast mehrere Umgebungen (Staging + Production)
Wenn nur Punkt 1 zutrifft, reicht vermutlich Docker Compose auf einem VPS. Ab zwei Punkten wird Kubernetes interessant.
Wenn du noch unsicher bist, ob Kubernetes die richtige Antwort für dich ist, ist der billigste Weg, das herauszufinden, es einfach auszuprobieren: ITSH bietet einen dauerhaft kostenlosen Namespace, ohne Kreditkarte, ohne Verpflichtung. Deploy deine echte App eine Woche lang darauf, bevor du irgendetwas entscheidest.
Der Umstieg in der Praxis
Schritt 1: Anwendung containerisieren
Jede Komponente bekommt ein Dockerfile. Ein typisches Node.js-Beispiel:
FROM node:24-alpine AS build
WORKDIR /app
COPY package.json yarn.lock ./
RUN yarn install --frozen-lockfile
COPY . .
RUN yarn build
FROM node:24-alpine
WORKDIR /app
COPY --from=build /app/dist ./dist
COPY --from=build /app/node_modules ./node_modules
EXPOSE 3000
CMD ["node", "dist/server.js"]
Schritt 2: Kubernetes-Manifeste schreiben
Ein einfaches Deployment mit Service:
apiVersion: apps/v1
kind: Deployment
metadata:
name: api
spec:
replicas: 2
selector:
matchLabels:
app: api
template:
metadata:
labels:
app: api
spec:
containers:
- name: api
image: registry.example.com/api:latest
ports:
- containerPort: 3000
resources:
requests:
cpu: 250m
memory: 256Mi
limits:
cpu: 500m
memory: 512Mi
---
apiVersion: v1
kind: Service
metadata:
name: api
spec:
selector:
app: api
ports:
- port: 80
targetPort: 3000
Schritt 3: GitOps einrichten
Bei ITSH ist ArgoCD bereits vorkonfiguriert. Du verknüpfst ein Git-Repository mit deinem Namespace, und jeder Push auf den Main-Branch wird automatisch ausgerollt.
# Deployment-Status prüfen
kubectl get pods -n mein-namespace
kubectl rollout status deployment/api -n mein-namespace
Schritt 4: DNS und TLS
ITSH kümmert sich automatisch um TLS-Zertifikate. Du musst lediglich eine HTTPRoute anlegen und deinen DNS-Eintrag konfigurieren.
Was du nicht brauchst
Der häufigste Fehler beim Kubernetes-Einstieg: zu viel auf einmal. Folgendes brauchst du am Anfang nicht:
- Helm Charts: Einfache YAML-Manifeste reichen für den Start.
- Service Mesh (Istio/Linkerd): Erst relevant bei dutzenden Services.
- Custom Operators: Standardressourcen decken 95 % der Anwendungsfälle ab.
- Multi-Cluster-Setup: Ein Namespace reicht für die meisten KMU-Workloads.
Mit einem Managed Namespace bei ITSH entfällt zusätzlich die gesamte Cluster-Administration: kein etcd, keine Nodes, keine Ingress-Controller-Konfiguration.
Kostenvergleich: Shared Hosting vs. ITSH Namespace
Für eine typische Webanwendung (API + Frontend + Datenbank):
| Shared Hosting | ITSH Namespace S (15,00 € brutto/Monat) | |
|---|---|---|
| Preis | 10 €/Monat | 15,00 €/Monat |
| Sprachen | PHP, Node.js, Python | Alles, was in einem Container läuft |
| Services | Web-App + Cronjobs | Beliebig viele |
| Deployments | FTP / Git | GitOps (ArgoCD) |
| TLS | Ja | Ja (automatisch) |
| Skalierung | Vertikal, im Rahmen des Tarifs | Horizontal (HPA) |
| Backups | Täglich (DB) | Täglich (Wiederherstellung über den Support) |
| Standort | Variiert | Deutschland |
| DSGVO | Anbieterabhängig | Inklusive |
Für 5 € mehr im Monat bekommt man eine fundamental andere Infrastruktur: reproduzierbar, horizontal skalierbar und unabhängig davon, welche Laufzeitumgebungen ein Hoster gerade anbietet. Storage ist im Fixtarif nicht enthalten, PVCs werden separat abgerechnet.
Fazit
Shared Hosting ist nicht schlecht, es ist für einen bestimmten Anwendungsfall gemacht und erfüllt den sehr gut. Wenn dein Projekt über diesen hinauswächst, ist Kubernetes der logische nächste Schritt. Und dank Managed Namespaces muss dieser Schritt weder teuer noch kompliziert sein.
Du brauchst kein DevOps-Team und kein Cloud-Zertifikat. Du brauchst ein Dockerfile und ein paar YAML-Manifeste.