K3s Kubernetes-Installation: Leichte Container-Orchestrierung
Einzel- und Multi-Node Kubernetes-Cluster-Setup mit K3s, kubectl-Nutzung, Deployments und Services erstellen, Anwendungsverwaltung mit Helm. Kubernetes-Leitfaden für VPS-Umgebungen.
Inhaltsverzeichnis
K3s Kubernetes-Installation: Leichte Container-Orchestrierung
Kubernetes ist der Industriestandard für Container-Orchestrierung. Eine vollständige Kubernetes-Installation kann jedoch ressourcenintensiv und komplex sein. K3s ist eine leichtgewichtige Kubernetes-Distribution von Rancher — sie bietet alle Kubernetes-Funktionen in einer einzigen Binary und funktioniert hervorragend in ressourcenbeschränkten Umgebungen wie VPS.
Warum K3s wählen?
| Merkmal | Vollständiges Kubernetes | K3s |
|---|---|---|
| Binary-Größe | ~500MB+ | ~100MB |
| Mindest-RAM | 2GB+ | 512MB |
| Installationszeit | 30-60 Min | 5 Min |
| Abhängigkeiten | Viele | Minimal |
| Kubernetes-Kompatibilität | Vollständig | Vollständig |
| Produktionseinsatz | Ja | Ja |
K3s ist vollständig mit der Kubernetes-API kompatibel. kubectl, Helm und andere Kubernetes-Tools funktionieren nahtlos mit K3s. Ideal für kleine bis mittlere Produktionsumgebungen.
Systemanforderungen
# Mindestanforderungen
# CPU: 1 Kern
# RAM: 512MB (empfohlen: 1GB+)
# Disk: 5GB
# OS: Ubuntu 20.04+, Debian 11+, CentOS 8+
# System aktualisieren
apt update && apt upgrade -y
# Benötigte Tools installieren
apt install -y curl wget
Einzelknoten K3s-Installation (Server)
# K3s installieren (Server-Modus)
curl -sfL https://get.k3s.io | sh -
# Service-Status nach Installation prüfen
systemctl status k3s
# Cluster-Status prüfen
kubectl get nodes
# Alle Pods auflisten
kubectl get pods -A
Kubeconfig-Einrichtung
# Kubeconfig für kubectl kopieren
mkdir -p ~/.kube
cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
chmod 600 ~/.kube/config
# KUBECONFIG-Umgebungsvariable setzen
export KUBECONFIG=~/.kube/config
echo 'export KUBECONFIG=~/.kube/config' >> ~/.bashrc
# Cluster-Informationen anzeigen
kubectl cluster-info
Multi-Node Cluster-Setup
Master-Node (Server)
# Master-Node installieren und Token speichern
curl -sfL https://get.k3s.io | sh -
# Node-Token abrufen (für Worker-Nodes benötigt)
cat /var/lib/rancher/k3s/server/node-token
Worker-Node (Agent)
# Worker-Node mit Master verbinden
curl -sfL https://get.k3s.io | K3S_URL=https://MASTER_IP:6443 K3S_TOKEN=NODE_TOKEN sh -
# Auf Master prüfen, ob Worker beigetreten ist
kubectl get nodes
Grundlegende kubectl-Befehle
# Nodes auflisten
kubectl get nodes
kubectl get nodes -o wide
# Pods auflisten
kubectl get pods
kubectl get pods -n kube-system
kubectl get pods -A
# Deployments auflisten
kubectl get deployments
# Services auflisten
kubectl get services
# Ressourcendetails anzeigen
kubectl describe pod POD_NAME
kubectl describe node NODE_NAME
# Pod-Logs anzeigen
kubectl logs POD_NAME
kubectl logs -f POD_NAME
# Befehl in Pod ausführen
kubectl exec -it POD_NAME -- /bin/bash
Erstes Deployment erstellen
NGINX Deployment
# nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
# Deployment anwenden
kubectl apply -f nginx-deployment.yaml
# Deployment-Status prüfen
kubectl get deployments
kubectl rollout status deployment/nginx-deployment
Service erstellen
# nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 30080
type: NodePort
kubectl apply -f nginx-service.yaml
kubectl get services
# Zugriff: http://SERVER_IP:30080
Anwendungsverwaltung mit Helm
# Helm installieren
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
# Bitnami-Repository hinzufügen
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
# WordPress installieren
helm install my-wordpress bitnami/wordpress \
--set wordpressUsername=admin \
--set wordpressPassword=StarkesPasswort123! \
--set service.type=NodePort
# Installierte Charts auflisten
helm list
# Chart entfernen
helm uninstall my-wordpress
K3s-Verwaltung
# K3s aktualisieren
curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.28.0+k3s1 sh -
# K3s-Service verwalten
systemctl stop k3s
systemctl start k3s
systemctl restart k3s
# K3s-Logs anzeigen
journalctl -u k3s -f
# K3s deinstallieren
/usr/local/bin/k3s-uninstall.sh
Fazit
K3s bietet die volle Leistung von Kubernetes mit minimalem Ressourcenverbrauch. Es ist eine ideale Lösung für produktionsreife Container-Orchestrierung in VPS-Umgebungen. Mit K3s auf REXE-Servern können Sie Ihre Anwendungen einfach skalieren, hohe Verfügbarkeit gewährleisten und moderne DevOps-Praktiken implementieren.
Verwandte Artikel
Docker Volume und Netzwerkverwaltung: Persistenter Speicher und Netzwerkkonfiguration
Docker Volume-Typen (Named, Bind Mount, tmpfs), Volume-Verwaltung, Docker-Netzwerkmodi (Bridge, Host, Overlay), benutzerdefinierte Netzwerke und Container-Kommunikation. Umfassender Leitfaden.
Container-Logging: Docker und Kubernetes Log-Verwaltung
Docker-Log-Treiber, docker logs-Befehl, Kubernetes Pod-Logs, zentralisierte Log-Sammlung (Loki, ELK Stack), Log-Rotation und Best Practices für Log-Verwaltung in Produktionsumgebungen.
Docker-Sicherheit: Container-Umgebung absichern
Docker-Sicherheits-Best-Practices: Nicht-Root-Benutzer, Read-Only-Dateisystem, Seccomp-Profile, Image-Scanning, Docker-Socket-Sicherheit, Netzwerkisolierung und Secrets-Verwaltung.