Skip to content

Troubleshooting

The tables on this page show problems that came up while the course was tried out. Before you search them for your symptom, go through the steps in the next section. They also help with problems that no table lists.

  1. Pin down the symptom. Who reports what, since when, and what is the exact error message?
  2. Narrow down the layer and work from the bottom up. onehost list shows the nodes, onevm list the VMs, kubectl get nodes the cluster and kubectl -n argocd get applications the sync with Git. Only then is it worth looking at the application.
  3. Read the logs and events of that layer, such as journalctl -u <service>, kubectl describe and kubectl get events, Loki in Grafana or the MONITORING section of onehost show.
  4. Look for the latest change. git log in the platform repo shows what came through Git. Also think of anything you or someone else changed by hand.
  5. Fix the cause where the state comes from. What comes from Git gets fixed in Git, what comes from code gets fixed in the code. Self-heal immediately reverts a manual change to an object that Argo CD manages.
  6. Check that the symptom is gone and run the check of the part. Then write down cause, fix and prevention in a few sentences.

The addresses, ports and commands for these steps are in the lab reference.

SymptomCauseFixChapter
VMware reports "Virtualized Intel VT-x/EPT is not supported on this platform"The Windows hypervisor is running, for example because of memory integrity, WSL 2 or Docker DesktopUse Hyper-V instead of VMware or work on smartlearnOwn hypervisor
A node does not start on your PC for lack of memoryYour PC does not have enough RAM for the size of the nodesSet the nodes to 8 GBOwn hypervisor
ssh reports "Connection timed out"The server has no address, or the interface name in the generator is wrongCheck ip -br addr at the console, repeat the two commands with the name from ip -br link0.3
A server can no longer be reached after a rebootIt only had the temporary address from the console, the netplan file is missingSet the temporary address at the console again, paste the generator's netplan block in an SSH session0.3
git: command not foundThe minimal Ubuntu install has no Gitsudo apt install -y git0.4
prepare.sh reports "This VM has no address"Wrong role, or the addresses in /etc/cc-lab.env do not match the VMCheck the role, compare ip -br a with /etc/cc-lab.env0.4
prepare.sh reports "sees no vmx or svm flag"Nested virtualization is off for the nodeOn smartlearn tell your instructor, on Hyper-V run Set-VMProcessor -ExposeVirtualizationExtensions $true with the VM switched off0.2, Own hypervisor
Values from /etc/cc-lab.env end in an invisible characterThe file came through a Windows editor with CR LF line endingsRun prepare.sh again, it removes the characters0.3
The start check shows [!!] for SSH without a passwordThe front-end's key is missing on a nodessh-copy-id from the front-end to the node0.5
SymptomCauseFixChapter
OneDeploy reports UNREACHABLE for a nodeThe front-end's key is missing on the node, or the node is offAdd the key, start the VM2.2
"Please make sure each cluster member can resolve all Front-end hostnames" or "Could not find the requested service rsyslog.service"prepare.sh did not run on every VMRun prepare.sh with the right role on each VM2.2
"opennebula-fireedge ... Depends nodejs" or "Failed to set permissions on the temporary files"The Node.js pin or the acl package is missing on the front-endRun sudo ~/cc/lab/prepare.sh fe again2.2
A host shows err in onehost listSSH from the front-end as oneadmin to the node fails, KVM is missing, or the node is downonehost show <node>, section MONITORING, on the node ls /dev/kvm2.5
The web interface does not loadPort 2616 cannot be reached from the clientUse the front-end's address in the lab network in the client's browser, check on the front-end that opennebula-fireedge runs2.2
Commands like onevm list fail to log in~/.one/one_auth is missingCreate the file as in 2.22.2
onetemplate instantiate finds no suitable hostA node is disabled or fully reservedonehost list, onehost enable, delete VMs no longer needed2.5
A VM stays pending with "Not enough capacity on datastores"The node monitoring still shows the old free spaceonehost forceupdate6.2
A member cannot see cc-netThe group is still in the VDC default, or the cluster is missing from the VDConevdc show wolkenwerk, run make-tenants.sh again3.1
A member can no longer start a VMIts quota is used uponegroup show <group>, clean up VMs or change the quota on purpose3.2
Not authorized to perform CREATE DOCUMENT when starting a serviceThe group may not create documentsoneacl create "@<gid> DOCUMENT/* CREATE"3.5
oneshowback list shows a cost of 0The VM started before the prices were set, or calculate is missingEnd the VM with onevm terminate, start it again from the template and run oneshowback calculate after a while3.3
The OneFlow service does not growThe load was too short, or OneFlow averages over all VMs of the roleoneflow show, at least three minutes of load, load in every VM of the role3.5
A restored VM belongs to oneadminoneimage restore creates new objectsonevm chown <vm> <user> <group>6.2
onevm backup refuses a VMThe VM already belongs to a backup jobonebackupjob backup praxis-nightly backs up all VMs of the job6.2
After the restore, a file created shortly before the backup is missingUbuntu had not written it to disk yetRun sync in the VM before the backup6.2
SymptomCauseFixChapter
make-network.sh finds no interfaceSSH from the front-end to node 1 is missingAdd the key, or pass the interface as an argument2.3
The VM runs, but SSH to its address hangscc-gateway is not running, or multicast is blocked in the smartlearn networksudo cc-gateway status, bridge fdb show dev cc-vxlan2.3
SSH to a VM asks for a passwordThe key was not stored with oneadmin or the group admin when the VM startedStore the key with oneuser update --append, end the VM and start it again from the template2.4, 3.1
Downloads inside a VM break offMTU 1500 instead of 1450 in the networkCheck GUEST_MTU with onevnet show cc-net, restart the VM2.3
After hardening, Gitea can no longer be reached from the clientThe firewall lets in only SSH and port 2616 from outsideThat is intended, reach Gitea through a tunnel from the client6.1
No login possible after hardeningThe client's key is missing on the front-end or does not matchLog in at the front-end's console, remove /etc/ssh/sshd_config.d/10-cc-hardening.conf, reload SSH with sudo systemctl reload ssh, add the key with ssh-copy-id and harden again6.1
SymptomCauseFixChapter
tofu apply fails because no node has enough memoryVMs from part 2 or 3 are still runningonehost list, terminate VMs, delete services with oneflow delete4.2
Inconsistent dependency lock filetofu init has not run in this copytofu init in the tofu folder4.2
The provider fails to log inOPENNEBULA_USERNAME and OPENNEBULA_PASSWORD are not set, for example in a new shellRepeat the two export lines from 4.24.2
After a change to the start script, tofu plan shows only update in-placeThe start script exits when k3s is already installed, so a running VM does not pick up the changetofu apply -replace for the VMs concerned6.2
Nodes do not become ReadyThe start script is still running or failedssh root@<server> journalctl -u one-context, systemctl status k3s, if needed tofu apply -replace4.3
SSH or kubectl refuse after a rebuildAn old key in known_hosts, an old kubeconfigssh-keygen -R <address>, fetch the kubeconfig again with get-kubeconfig.sh4.3
A node is NotReadyk3s is not running on that VM, or the VM is offonevm list, ssh root@<address> systemctl status k3s or k3s-agent4.3
The agent's disk is full, KubePersistentVolumeFillingUpThe VM's disk is too small for the Ollama imageSet disk_size to 30 GB, tofu apply5.5
SymptomCauseFixChapter
Argo CD shows authentication requiredWrong token, or a line break in the secretRewrite the secret with bootstrap-argocd.sh4.4
Applications stay UnknownThe FRONTEND placeholder was not replaced, or Gitea is not runninggrep -r FRONTEND ~/platform, systemctl status gitea4.4
git push is rejectedWrong token or ~/.git-credentialsRewrite the file as in 4.44.4
An Application reports a sync errorA commit contains an invalid manifestkubectl -n argocd describe application <name>, git log, undo the commit with git revert4.4
Pods hang in ImagePullBackOff or ErrImagePullWrong image tag, or the image cannot be reachedkubectl describe pod, check the tag in Git4.4
A manual change disappears after a few secondsSelf-heal restores the state from GitThat is intended, make the change in Git4.4
A new folder under members does not show upThe push is missing, or the ApplicationSet has not polled yetgit log origin/main, wait a minute4.5
The first requests to a new pod fail with Connection refusedThe NetworkPolicy does not know the pod's address yetWait a few seconds4.5
A deployment is synced but has no podsThe quota or the restricted profile rejects themkubectl -n <ns> get events, adjust requests or securityContext4.5, 6.1
SymptomCauseFixChapter
monitoring stays OutOfSync with an annotation that is too largeServerSideApply is missing in the ApplicationTake the Application from the additions of part 55.1
Grafana does not start because the secret is missingmake-secrets.sh did not run, or after a rebuild the Sealed Secrets key is missingRun the script or apply the key, restart the pod5.1, 6.2
The OpenNebula targets are downThe exporters were not started, or the address placeholders were not replacedinstall-exporters.sh, grep -r _IP ~/platform/monitoring5.1
The OpenNebula exporter reports 0 hostsIt has been running for only a few secondsWait half a minute5.1
The web shop target is downThe NetworkPolicy does not admit monitoringTake the NetworkPolicy from the additions of part 55.1
Loki is missing the logs of one nodeAlloy reads only the pods on its own node, and NODE_NAME is missingTake the values from the additions of part 55.2
The burn rate alert does not fireThe error rate over one hour is still too lowWait, or raise FAIL_PERCENT5.3
The HPA shows <unknown>metrics-server needs about a minute after startingWait5.4
The HPA stays below maxReplicas with the event exceeded quotaThe pods' requests no longer fit into the quotaAdjust limits or quota, leave room for the rollout5.4
SymptomCauseFixChapter
The model answers very slowlyThe VM sees no AVX2 because host-passthrough is missingAdd the cpumodel block in main.tf, restart the VM5.5
Your triage service gets no alertsAlertmanager has no route to your receiver, or the alert is not firingAlertmanager UI on port 30093, logs of the service5.5
A new member's alert does not reach your triage serviceThe Alertmanager route does not match the labels of the new ruleCompare the labels of the rule with the route, for example with amtool config routes test6.5
SymptomCauseFixChapter
A namespace lacks the restricted profileA patch with op: add on /metadata/labels replaced all labelsSet the label with a merge patch5.5, 6.1
A SealedSecret reports "not managed by SealedSecret"The secret existed before the controller arrivedAnnotate with sealedsecrets.bitnami.com/managed=true, restart the controller6.1
The secrets Application stays in an error stateThe Sealed Secrets controller is not running yetWait, the Application retries6.1
crontab: command not foundUbuntu 26.04 ships without cronSet up the timer with install-backup-timer.sh6.2
New snapshots do not arrive on the front-endThe cc-backup-k3s.timer timer is not activesystemctl list-timers, enable the timer6.2
After the cluster rebuild, metrics, logs and the audit log are goneThe volume data lived on the disks of the old VMsThat is expected, take screenshots and copy the audit log before the rebuild6.2
Argo CD ignores new commits after a restoreThe controllers are working with the old stateRestart the controllers in argocd and monitoring and the Sealed Secrets controller6.5
The node swaps and every VM slows downA member's VM is too large for the free memoryKeep the VM at 1 GB or less6.4

Text and figures are licensed under CC BY-SA 4.0 and the code under the MIT License. The sources are on GitHub.