Continuum findet, validiert und behebt Code-Schwachstellen: Es beweist, welche Befunde in Ihrer Umgebung tatsächlich ausnutzbar sind, priorisiert sie nach geschäftlicher Auswirkung und schlägt Korrekturen vor – mit menschlicher Freigabe, bevor etwas ausgeliefert wird.
Kubernetes ist eine Control Plane, die davon ausgeht, dass ihre Nodes erreichbar sind, ihr etcd dauerhaft ist und ihr Betreiber eine Person mit Laptop und VPN ist. Verlegen Sie es in eine Fabrikhalle, auf einen Mobilfunkmast, in einen Einzelhandelslagerraum oder auf ein Schiff, und jede dieser Annahmen bricht. Das Netzwerk lügt. Der Strom flackert. Die Hardware ist klein. Und die Person, die es bereitgestellt hat, ist dreihundert Kilometer entfernt, wahrscheinlich schlafend.
Dieser Artikel ist ein Feldführer für den Betrieb von Kubernetes am Edge mit den Werkzeugen, die dort tatsächlich funktionieren: K3s als Laufzeit, Fleet als Flottenmanager, GitOps als Auslieferungsmechanismus und eine Reihe von Praktiken, um die Bedingungen zu überstehen, über die die Cloud nie nachdenken muss. Er ist aus der Perspektive des Betreibers geschrieben – was Sie bereitstellen, was kaputtgeht und worauf Sie achten müssen.
Das Wort Edge wird für drei verschiedene Dinge verwendet, und sie zu vermischen ist der erste Fehler.
Die Architektur ändert sich mit der Stufe. Ein Far-Edge-Standort betreibt einen einzelnen K3s-Node mit einer Handvoll Pods und einem lokalen Store-and-Forward-Puffer. Ein Near-Edge-Standort betreibt einen kleinen HA-Cluster. Eine Device-Edge-Bereitstellung ist oft gar kein Kubernetes – es ist ein Container auf einem Gerät, der von derselben Control Plane verwaltet wird, die auch die Cluster verwaltet.
Dieser Artikel konzentriert sich auf das Far und Near Edge, wo Kubernetes seinen Wert verdient: viele Standorte, eine Control Plane, deklarative Konfiguration und die Fähigkeit, eine Änderung an tausend Standorten ohne Flugticket auszurollen.
K3s ist für die meisten Edge-Fälle die richtige Antwort, und die Gründe sind nicht die üblicherweise genannten.
Es ist nicht „Kubernetes Lite“ im Sinne eines Spielzeugs. Es ist eine zertifizierte Kubernetes-Distribution mit API-Server, Scheduler, Controller-Manager und Kubelet in einer einzigen Binärdatei, mit SQLite als Standard-Datenspeicher und einem eingebetteten containerd. Der Footprint ist klein – etwa 50 MB Binärdatei, ~250 MB RAM im Leerlauf – und es läuft auf einem Raspberry Pi, einem Industrie-PC oder einer VM mit zwei Kernen.
Die Gründe, die am Edge zählen:
Die Kompromisse: K3s wird standardmäßig mit Traefik, CoreDNS und einem Local-Path-Provisioner ausgeliefert. Für Edge sollten Sie Traefik normalerweise deaktivieren und Ihr eigenes Ingress mitbringen, und Sie sollten mit dem Local-Path-Provisioner vorsichtig sein, da lokaler Speicher auf Edge-Hardware unzuverlässig ist.
# Minimale Edge-Installation: kein Traefik, kein gebündelter Metrics-Server, Air-Gap-freundlich
curl -sfL https://get.k3s.io | sh -s - \
--disable traefik \
--disable metrics-server \
--write-kubeconfig-mode 644
# Überprüfen
k3s kubectl get nodes -o wide
systemctl status k3s --no-pager
Das Edge-Muster, das funktioniert, ist eine Hub-and-Spoke-Topologie. Ein einzelner Verwaltungscluster – der in Ihrer Cloud oder Ihrem On-Prem-Rechenzentrum läuft – hält den gewünschten Zustand für jeden Edge-Standort. Jeder Edge-Standort betreibt seinen eigenen K3s-Cluster. Der Verwaltungscluster führt nicht die Edge-Workloads aus; er führt die Controller aus, die die Konfiguration an sie pushen.
Das Werkzeug dafür ist Fleet, Ranchers GitOps-Engine, obwohl Argo CD und Flux auch funktionieren. Fleet ist speziell für das Problem „viele Cluster, eine Quelle der Wahrheit“ gebaut: Es beobachtet ein Git-Repository, bündelt die Manifests und rollt sie auf eine Reihe von Zielclustern aus, die durch Labels ausgewählt werden.
Der Grund, warum Fleet besser zum Edge passt als die Alternativen:
# fleet.yaml im Stammverzeichnis Ihres GitOps-Repos
defaultNamespace: edge-apps
helm:
repo: https://charts.example.com
chart: edge-agent
version: "1.4.2"
values:
telemetryEndpoint: https://telemetry.example.com
targetCustomizations:
- name: retail
clusterSelector:
matchLabels:
site-type: retail
helm:
values:
storeId: "{{ .ClusterLabels.storeId }}"
- name: factory
clusterSelector:
matchLabels:
site-type: factory
helm:
values:
modbusEnabled: true
Der Cluster-Selektor ist der Schlüssel. Sie labeln jeden Edge-Cluster, wenn er sich registriert – site-type, region, hardware-generation, customer – und Fleet leitet die richtige Konfiguration an die richtigen Standorte. Ein neuer Standort, der sich mit den richtigen Labels registriert, erhält automatisch die richtige Konfiguration. Kein Ticket, kein manueller Schritt.
Am Edge ist GitOps keine Präferenz. Es ist der einzige Auslieferungsmechanismus, der die Bedingungen übersteht.
Der Grund ist einfach: Der Edge-Cluster kann nicht erreicht werden. SSH ist blockiert, das VPN ist down, und die Person mit den Schlüsseln ist in einem Flugzeug. Der einzige Kanal, der zuverlässig funktioniert, ist ausgehendes HTTPS vom Edge zur Verwaltungsebene (oder zu einem Git-Host). GitOps verwandelt diesen Kanal in den gesamten Auslieferungspfad: Der Edge-Cluster zieht seinen gewünschten Zustand, wendet ihn an und meldet den Status zurück. Kein eingehender Zugriff erforderlich.
Die Regeln, die das zum Funktionieren bringen:
latest am Edge bereit. Pinnen Sie Chart-Versionen, Image-Digests und Fleet-Bundle-Versionen. Ein unkontrolliertes Update, das einen Standort beschädigt, beschädigt tausend.# Fleet-Rollout mit Canary
rolloutStrategy:
maxUnavailable: 5%
maxUnavailablePartitions: 1
autoPartitionSize: 10%
partitions:
- name: canary
maxUnavailable: 1
clusterSelector:
matchLabels:
canary: "true"
- name: production
maxUnavailable: 5%
Das Netzwerk am Edge ist nicht langsam. Es ist intermittierend, asymmetrisch und feindselig. Zellulare Backhaul-Verbindungen verlieren Pakete. Satellitenverbindungen haben 600 ms Latenz. Fabriknetzwerke sind aus politischen Gründen per Air-Gap getrennt. Das Design muss davon ausgehen, dass die Verbindung die meiste Zeit down ist, und Konnektivität als Bonus behandeln.
Praktiken, die zählen:
# K3s Air-Gap: Private Registry-Mirror-Konfiguration
# /etc/rancher/k3s/registries.yaml
mirrors:
docker.io:
endpoint:
- "https://registry.edge.local:5000"
"registry.edge.local:5000":
endpoint:
- "https://registry.edge.local:5000"
configs:
"registry.edge.local:5000":
tls:
insecure_skip_verify: false
auth:
username: edge
password: "${REGISTRY_PASSWORD}"
Sie können keinen vollständigen Prometheus + Grafana + Loki + Tempo-Stack auf einem 2-Kern-, 4-GB-Edge-Node betreiben. Der Observability-Footprint muss proportional zur Hardware sein.
Das Muster, das funktioniert:
# VictoriaMetrics-Agent auf dem Edge
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: vmagent
namespace: monitoring
spec:
selector:
matchLabels:
app: vmagent
template:
metadata:
labels:
app: vmagent
spec:
containers:
- name: vmagent
image: victoriametrics/vmagent:v1.102.0
args:
- "-promscrape.config=/config/scrape.yml"
- "-remoteWrite.url=https://metrics.example.com/api/v1/write"
- "-remoteWrite.tmpDataPath=/data/buffer"
- "-remoteWrite.maxDiskUsagePerURL=1GB"
volumeMounts:
- name: config
mountPath: /config
- name: buffer
mountPath: /data
volumes:
- name: config
configMap:
name: vmagent-config
- name: buffer
hostPath:
path: /var/lib/vmagent
type: DirectoryOrCreate
Die Einstellung maxDiskUsagePerURL ist das Sicherheitsnetz: Wenn der Puffer voll ist, verwirft vmagent die ältesten Daten, anstatt abzustürzen oder die Festplatte zu füllen. Auf Edge-Hardware ist eine volle Festplatte ein Standortausfall.
Die Aktualisierung von tausend Edge-Clustern ist der schwierigste Teil der Arbeit, und hier scheitern die meisten Edge-Bereitstellungen.
# System-Upgrade-Controller-Plan für K3s
apiVersion: upgrade.cattle.io/v1
kind: Plan
metadata:
name: k3s-upgrade
namespace: system-upgrade
spec:
concurrency: 10
cordon: true
nodeSelector:
matchExpressions:
- key: node-role.kubernetes.io/control-plane
operator: In
values: ["true"]
serviceAccountName: system-upgrade
upgrade:
image: rancher/k3s-upgrade
version: v1.30.4-k3s1
Das concurrency: 10 ist das Sicherheitsventil. Aktualisieren Sie niemals die gesamte Flotte auf einmal.
Edge-Standorte sind physisch zugänglich. Ein Gerät in einem Einzelhandelslagerraum kann abgesteckt, geöffnet oder gestohlen werden. Das Sicherheitsmodell muss davon ausgehen, dass die Hardware kompromittiert ist.
latest am Edge.Kubernetes am Edge ist keine kleinere Version von Kubernetes in der Cloud. Es ist eine andere Sache: ein Werkzeug, das Bedingungen überstehen muss, denen die Cloud nie ausgesetzt ist, verwaltet von Menschen, die nie vor Ort sind, läuft auf Hardware, die alt und klein ist. Die Werkzeuge, die funktionieren – K3s, Fleet, GitOps, unveränderliches OS, leichte Observability – sind diejenigen, die diese Bedingungen akzeptieren, anstatt gegen sie anzukämpfen.
Der Cluster ist ein Werkzeug. Wie alle Werkzeuge sollte er in der Arbeit zurücktreten. Am Edge besteht die Arbeit darin, tausend Standorte am Laufen zu halten, während niemand zusieht. Die Kunst besteht darin, etwas zu bauen, das das kann, und ihm dann aus dem Weg zu gehen.