Zum Inhalt springen

Fehlerbehebung

In den Tabellen dieser Seite stehen Probleme, die beim Erproben des Kurses aufgetreten sind. Bevor du darin nach deinem Symptom suchst, geh die Schritte im nächsten Abschnitt durch. Sie helfen auch bei Problemen, die keine Tabelle aufführt.

  1. Halte das Symptom genau fest. Wer meldet was seit wann? Wie lautet die Fehlermeldung wörtlich?
  2. Grenze die Schicht ein und arbeite dich von unten nach oben. onehost list zeigt die Knoten, onevm list die VMs, kubectl get nodes den Cluster und kubectl -n argocd get applications den Abgleich mit Git. Erst danach schaust du dir die Anwendung an.
  3. Lies die Logs und Ereignisse der betroffenen Schicht, etwa mit journalctl -u <dienst>, mit kubectl describe und kubectl get events, über Loki in Grafana oder im Abschnitt MONITORING von onehost show.
  4. Suche die letzte Änderung. git log im Plattform-Repo zeigt, was über Git kam. Denk auch an das, was du oder jemand anderes von Hand geändert hat.
  5. Behebe die Ursache dort, wo der Zustand entsteht. Was aus Git kommt, korrigierst du in Git, was aus Code kommt, im Code. Eine Änderung von Hand an einem Objekt, das Argo CD verwaltet, setzt Self-Heal sofort zurück.
  6. Prüfe, ob das Symptom weg ist. Lass auch den Check des Teils laufen. Halte am Ende in wenigen Sätzen Ursache, Behebung und Vorbeugung fest.

Die Adressen, Ports und Befehle für diese Schritte stehen in der Lab-Referenz.

SymptomUrsacheWas hilftKapitel
VMware meldet «Virtualized Intel VT-x/EPT is not supported on this platform»Der Hypervisor von Windows läuft, etwa wegen Speicherintegrität, WSL 2 oder Docker DesktopHyper-V statt VMware verwenden oder auf smartlearn arbeitenEigener Hypervisor
Ein Knoten startet auf deinem PC nicht, zu wenig SpeicherDein PC hat nicht genug RAM für die Grösse der KnotenKnoten auf 8 GB stellenEigener Hypervisor
ssh meldet «Connection timed out»Der Server hat keine Adresse, oder der Name der Schnittstelle im Generator stimmt nichtAn der Konsole ip -br addr prüfen, die beiden Befehle mit dem Namen aus ip -br link wiederholen0.3
Nach einem Neustart ist ein Server nicht mehr erreichbarEr hatte nur die vorläufige Adresse von der Konsole, die Datei für netplan fehltAn der Konsole die vorläufige Adresse setzen, per SSH den Block für netplan aus dem Generator einfügen0.3
git: command not foundDie minimale Installation von Ubuntu enthält kein Gitsudo apt install -y git0.4
prepare.sh meldet «This VM has no address»Falsche Rolle, oder die Adressen in /etc/cc-lab.env passen nicht zur VMRolle prüfen, ip -br a mit /etc/cc-lab.env vergleichen0.4
prepare.sh meldet «sees no vmx or svm flag»Verschachtelte Virtualisierung ist für den Knoten ausgeschaltetAuf smartlearn der Dozentin oder dem Dozenten melden, bei Hyper-V Set-VMProcessor -ExposeVirtualizationExtensions $true bei ausgeschalteter VM0.2, Eigener Hypervisor
Werte aus /etc/cc-lab.env enden mit einem unsichtbaren ZeichenDie Datei kam über einen Windows-Editor mit Zeilenenden CR LFprepare.sh noch einmal ausführen, es entfernt die Zeichen0.3
Check start meldet [!!] bei SSH ohne PasswortDer Schlüssel des Front-ends fehlt auf einem Knotenssh-copy-id vom Front-end auf den Knoten0.5
SymptomUrsacheWas hilftKapitel
OneDeploy meldet UNREACHABLE für einen KnotenDer Schlüssel des Front-ends fehlt auf dem Knoten, oder der Knoten ist ausSchlüssel nachtragen, VM starten2.2
«Please make sure each cluster member can resolve all Front-end hostnames» oder «Could not find the requested service rsyslog.service»prepare.sh lief nicht auf allen VMsprepare.sh mit der richtigen Rolle auf jeder VM2.2
«opennebula-fireedge ... Depends nodejs» oder «Failed to set permissions on the temporary files»Der Pin für Node.js oder das Paket acl fehlt auf dem Front-endsudo ~/cc/lab/prepare.sh fe noch einmal2.2
Ein Host steht in onehost list auf errSSH vom Front-end als oneadmin zum Knoten klappt nicht, KVM fehlt, oder der Knoten ist ausgefallenonehost show <knoten>, Abschnitt MONITORING, auf dem Knoten ls /dev/kvm2.5
Die Weboberfläche lädt nichtPort 2616 ist vom Client aus nicht erreichbarIm Browser des Clients die Adresse des Front-ends im Labnetz verwenden, auf dem Front-end prüfen, ob opennebula-fireedge läuft2.2
Befehle wie onevm list melden einen Fehler bei der Anmeldung~/.one/one_auth fehltDatei wie in 2.2 anlegen2.2
onetemplate instantiate findet keinen passenden HostKnoten gesperrt oder voll reserviertonehost list, onehost enable, nicht mehr gebrauchte VMs löschen2.5
Eine VM bleibt pending mit «Not enough capacity on datastores»Das Monitoring der Knoten zeigt noch den alten freien Platzonehost forceupdate6.2
Ein Mitglied sieht cc-net nichtDie Gruppe ist noch im VDC default, oder der Cluster fehlt im VDConevdc show wolkenwerk, make-tenants.sh noch einmal3.1
Ein Mitglied kann keine VM mehr startenSeine Quota ist ausgeschöpftonegroup show <gruppe>, VMs aufräumen oder Quota bewusst anpassen3.2
Not authorized to perform CREATE DOCUMENT beim Start eines DienstesDie Gruppe darf keine Dokumente anlegenoneacl create "@<gid> DOCUMENT/* CREATE"3.5
oneshowback list zeigt Kosten 0VM vor dem Eintragen der Preise gestartet, oder calculate fehltVM mit onevm terminate beenden und aus der Vorlage neu starten, nach einer Weile oneshowback calculate3.3
Der Dienst von OneFlow wächst nichtLast zu kurz, oder OneFlow nimmt das Mittel aller VMs der Rolleoneflow show, mindestens drei Minuten Last, in allen VMs der Rolle Last erzeugen3.5
Eine wiederhergestellte VM gehört oneadminoneimage restore legt neue Objekte anonevm chown <vm> <benutzer> <gruppe>6.2
onevm backup lehnt eine VM abDie VM steht schon in einem Backup-Jobonebackupjob backup praxis-nightly sichert alle VMs des Jobs6.2
Nach der Wiederherstellung fehlt eine Datei, die kurz vor dem Backup entstandUbuntu hatte sie noch nicht auf die Disk geschriebenVor dem Backup in der VM sync ausführen6.2
SymptomUrsacheWas hilftKapitel
make-network.sh findet keine SchnittstelleSSH vom Front-end zu Knoten 1 fehltSchlüssel nachtragen oder die Schnittstelle als Argument angeben2.3
Die VM läuft, SSH auf ihre Adresse hängtcc-gateway läuft nicht, oder Multicast im Netz von smartlearn ist blockiertsudo cc-gateway status, bridge fdb show dev cc-vxlan2.3
SSH auf eine VM verlangt ein PasswortDer Schlüssel war bei oneadmin oder beim Gruppenadmin nicht hinterlegt, als die VM starteteSchlüssel mit oneuser update --append hinterlegen, VM beenden und aus der Vorlage neu starten2.4, 3.1
Downloads in einer VM brechen abMTU 1500 statt 1450 im NetzGUEST_MTU mit onevnet show cc-net prüfen, VM neu starten2.3
Nach der Härtung ist Gitea vom Client aus nicht mehr erreichbarDie Firewall lässt von aussen nur SSH und Port 2616 zuso gewollt, Gitea über einen Tunnel vom Client erreichen6.1
Nach der Härtung keine Anmeldung mehrDer Schlüssel des Clients fehlt auf dem Front-end oder passt nichtAn der Konsole des Front-ends anmelden, /etc/ssh/sshd_config.d/10-cc-hardening.conf entfernen, SSH mit sudo systemctl reload ssh neu laden, den Schlüssel mit ssh-copy-id eintragen und neu härten6.1
SymptomUrsacheWas hilftKapitel
tofu apply scheitert, kein Knoten hat genug SpeicherVMs aus Teil 2 oder 3 laufen nochonehost list, VMs beenden, Dienste mit oneflow delete löschen4.2
Inconsistent dependency lock filetofu init fehlt in dieser Kopietofu init im Ordner tofu4.2
Der Provider meldet einen Fehler bei der AnmeldungOPENNEBULA_USERNAME und OPENNEBULA_PASSWORD fehlen, etwa in einer neuen Shelldie beiden export aus 4.2 wiederholen4.2
tofu plan zeigt nach einer Änderung am Startskript nur update in-placeDas Startskript beendet sich, wenn k3s schon installiert ist, eine laufende VM übernimmt die Änderung deshalb nichttofu apply -replace für die betroffenen VMs6.2
Nodes werden nicht ReadyDas Startskript läuft noch oder ist gescheitertssh root@<server> journalctl -u one-context, systemctl status k3s, notfalls tofu apply -replace4.3
SSH oder kubectl verweigern nach einem NeubauAlter Schlüssel in known_hosts, alte kubeconfigssh-keygen -R <adresse>, kubeconfig mit get-kubeconfig.sh neu holen4.3
Ein Node ist NotReadyk3s läuft auf dieser VM nicht, oder die VM ist ausonevm list, ssh root@<adresse> systemctl status k3s oder k3s-agent4.3
Die Disk des Agents ist voll, KubePersistentVolumeFillingUpDie Disk der VM ist zu klein für das Image von Ollamadisk_size auf 30 GB, tofu apply5.5
SymptomUrsacheWas hilftKapitel
Argo CD zeigt authentication requiredFalsches Token oder ein Zeilenumbruch im SecretSecret mit bootstrap-argocd.sh neu schreiben4.4
Applications bleiben UnknownDer Platzhalter FRONTEND ist nicht ersetzt, oder Gitea läuft nichtgrep -r FRONTEND ~/platform, systemctl status gitea4.4
git push wird abgewiesenToken oder ~/.git-credentials falschDatei wie in 4.4 neu schreiben4.4
Eine Application meldet einen Fehler beim SyncEin Commit enthält ein ungültiges Manifestkubectl -n argocd describe application <name>, git log, den Commit mit git revert zurücknehmen4.4
Pods hängen in ImagePullBackOff oder ErrImagePullFalscher Image-Tag oder Image nicht erreichbarkubectl describe pod, Tag in Git prüfen4.4
Eine Änderung von Hand verschwindet nach SekundenSelf-Heal setzt den Stand aus Git zurückso gewollt, die Änderung in Git machen4.4
Ein neuer Ordner unter members erscheint nichtPush fehlt, oder das ApplicationSet hat noch nicht abgefragtgit log origin/main, eine Minute warten4.5
Die ersten Anfragen eines neuen Pods scheitern mit Connection refusedDie NetworkPolicy kennt die Adresse des Pods noch nichteinige Sekunden warten4.5
Deployment synchron, aber keine PodsDie Quota oder das Profil restricted weist sie abkubectl -n <ns> get events, Requests oder securityContext anpassen4.5, 6.1
SymptomUrsacheWas hilftKapitel
monitoring bleibt OutOfSync mit einer zu grossen AnnotationServerSideApply fehlt in der ApplicationApplication aus den Ergänzungen von Teil 5 übernehmen5.1
Grafana startet nicht, das Secret fehltmake-secrets.sh lief nicht, oder nach einem Neubau fehlt der Schlüssel von Sealed SecretsSkript ausführen oder Schlüssel einspielen, Pod neu starten5.1, 6.2
Ziele von OpenNebula sind downExporter nicht gestartet, oder Platzhalter für Adressen nicht ersetztinstall-exporters.sh, grep -r _IP ~/platform/monitoring5.1
Der OpenNebula-Exporter meldet 0 HostsEr läuft erst seit wenigen Sekundeneine halbe Minute warten5.1
Der Webshop ist als Ziel downDie NetworkPolicy lässt monitoring nicht zuNetworkPolicy aus den Ergänzungen von Teil 5 übernehmen5.1
In Loki fehlen die Logs eines NodesAlloy liest nur die Pods seines Nodes, NODE_NAME fehltWerte aus den Ergänzungen von Teil 5 übernehmen5.2
Der Burn-Rate-Alert kommt nichtDer Fehleranteil über eine Stunde ist noch zu tiefwarten oder FAIL_PERCENT erhöhen5.3
Der HPA zeigt <unknown>metrics-server braucht nach dem Start etwa eine Minutewarten5.4
Der HPA bleibt unter maxReplicas, Ereignis exceeded quotaDie Requests der Pods passen nicht mehr in die QuotaLimits oder Quota anpassen, Reserve für den Rollout lassen5.4
SymptomUrsacheWas hilftKapitel
Das Modell antwortet sehr langsamDie VM sieht kein AVX2, weil host-passthrough fehltBlock cpumodel in main.tf, VM neu starten5.5
Dein Triage-Dienst bekommt keine AlertsAlertmanager hat keine Route zu deinem Empfänger, oder der Alert ist nicht firingOberfläche von Alertmanager auf Port 30093, Logs des Dienstes5.5
Der Alert eines neuen Mitglieds erreicht deinen Triage-Dienst nichtDie Route in Alertmanager erfasst die Labels der neuen Regel nichtLabels der Regel mit der Route vergleichen, etwa mit amtool config routes test6.5
SymptomUrsacheWas hilftKapitel
Ein Namespace hat das Profil restricted nichtEin Patch mit op: add auf /metadata/labels hat alle Labels ersetztLabel als Merge-Patch setzen5.5, 6.1
Ein SealedSecret meldet «not managed by SealedSecret»Das Secret gab es schon, bevor der Controller kamAnnotation sealedsecrets.bitnami.com/managed=true, Controller neu starten6.1
Die Application secrets bleibt bei einem FehlerDer Controller von Sealed Secrets läuft noch nichtwarten, die Application versucht es erneut6.1
crontab: command not foundUbuntu 26.04 bringt kein cron mitden Timer mit install-backup-timer.sh einrichten6.2
Neue Snapshots kommen nicht auf dem Front-end anDer Timer cc-backup-k3s.timer ist nicht aktivsystemctl list-timers, Timer aktivieren6.2
Nach dem Neubau des Clusters fehlen Metriken, Logs und das Audit-LogDie Daten der Volumes lagen auf den Disks der alten VMsso gewollt, vor dem Neubau Screenshots machen und das Audit-Log kopieren6.2
Argo CD übernimmt nach einem Restore keine CommitsDie Controller arbeiten mit dem alten StandController in argocd und monitoring und den Controller von Sealed Secrets neu starten6.5
Der Knoten lagert aus, alle VMs werden langsamDie VM eines Mitglieds ist zu gross für den freien SpeicherVM mit höchstens 1 GB6.4

Texte und Abbildungen stehen unter CC BY-SA 4.0 und der Code unter der MIT-Lizenz. Die Quellen liegen auf GitHub.