Repository navigation
troubleshooting
This page tells you how to find the cause of a problem, and what to do. Most problems show in the status of the pods or in the log of the agent.
These commands show the status, the events and the log of the agents. The examples use the namespace caretta.
kubectl get pods --namespace caretta
kubectl describe daemonset caretta --namespace caretta
kubectl logs --namespace caretta daemonset/carettaThe agent writes one JSON object for each log line. The field msg has the message, and the field error has the cause of an error. For a log that is easier to read, set logFormat to text.
For an agent that restarted, add --previous to kubectl logs to see the log from before the restart.
If kubectl describe daemonset caretta shows an event with violates PodSecurity, the namespace does not allow privileged pods. Label the namespace as in Pod Security.
The field error tells you which step failed:
| The error starts with | Cause | What to do |
|---|---|---|
loading probes: error removing memory lock |
The kernel did not let the agent lift the memory limit for eBPF data. | Make sure that the agent has the SYS_RESOURCE capability. |
loading probes: error loading BPF spec |
The image is damaged or incomplete. | Install the image again from a release. |
loading probes: error loading BPF objects from go-side |
The kernel did not load the eBPF programs. If the error contains no BTF found for kernel version, the kernel does not have BTF. Otherwise, the log also has the message The kernel's eBPF verifier rejected caretta's programs with the details in verifier_log. |
Make sure that the kernel is 5.4 or later and has BTF. See Requirements. If it does, open an issue with the verifier_log and the output of uname -r on the node. |
loading probes: error attaching kprobe |
The kernel did not let the agent attach to tcp_data_queue. |
Make sure that the agent has the PERFMON capability, or SYS_ADMIN on kernels before 5.8. |
loading probes: error attaching tracepoint |
The agent did not find the tracepoint sock/inet_sock_set_state. |
Make sure that tracefs is mounted on the node at tracefsPath. See Other tracefs paths. |
watching cluster's state |
The agent did not read the pods, nodes or services from the Kubernetes API. | Make sure that the service account of the agent has its ClusterRole. If networkPolicy.enabled is true, make sure that networkPolicy.apiServer allows your API server. |
starting Prometheus server |
Another process on the node uses the metrics port. | Set prometheusPort to another port. |
The readiness probe fails with cluster snapshot loading or probes not attached until the agent finishes its start. In a large cluster, the start can take some minutes. The startup probe waits 5 minutes at most.
If the agent is still not ready after 5 minutes, read its log. A slow or unreachable Kubernetes API is the usual cause.
-
Get the reason for the last restart:
kubectl get pods --namespace caretta -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.containerStatuses[0].lastState.terminated.reason}{"\n"}{end}' -
Find the reason in this table:
Reason Cause What to do OOMKilledThe agent used more memory than its limit. Increase resources.limits.memory, or decreasemaxConnections. See Memory.Error, after the eventLiveness probe failed: HTTP probe failed with statuscode: 503The agent did not finish a poll for too long. Read the log from before the restart, with --previous. A node that is very busy, or a full table of connections, can slow the polls.ErrorThe agent stopped because of an error. Read the log from before the restart, with --previous.
-
Wait one minute after the agents are ready. The first links appear after one poll and one collection by VictoriaMetrics.
-
Make sure that the time range of the dashboard includes the last few minutes.
-
Make sure that VictoriaMetrics collects the metrics. In the Explore view of Grafana, run this query:
up{job="caretta"}Each agent must show the value
1. If the query has no result, VictoriaMetrics does not reach the agents. IfnetworkPolicy.enabledistrue, make sure that your network plugin enforces NetworkPolicies, and that you did not remove the rule for VictoriaMetrics. -
Make sure that the agents publish links. Run this query:
count(caretta_links_observed)If the result is
0, the agents see no traffic. Run a workload that sends traffic, for example one of the example apps.
| The address | Cause | What to do |
|---|---|---|
| Is outside the cluster | The address has no DNS name, or enableDnsResolving is false. A new address also shows as an IP address until the agent gets its name, usually at the next poll. |
Nothing, if the address has no DNS name. |
| Is in the cluster | The address belongs to a pod or a node that the agent does not know, for example a pod that stopped more than 2 minutes ago. | If the address stays, open an issue. |
The agent did not find the owner of the pod. The log has the message Couldn't find a pod's owner; using the closest one found. The field error tells you why:
| The error starts with | Cause |
|---|---|
Unsupported kind for lookup |
The owner is a kind that the agent does not know, for example a custom resource. The name is the closest owner that the agent knows. |
missing |
The agent did not have the owner yet, usually when the owner and the pod were new. The agent tries again at the next change to the pod. |
If traverseUpHierarchy is false, the map always shows pod names. This is correct.
| Problem | What to do |
|---|---|
| You do not know the password. | Get it from the Secret, as in Open the map in Grafana. |
The password is caretta. |
You upgraded from the groundcover chart. See The Grafana password. |
| The dashboard is not there. | Make sure that the ConfigMap caretta-grafana-dashboards exists in the namespace of Caretta. |
The agent logs a warning or an error for each problem. This table lists each message:
| Message | Level | Meaning |
|---|---|---|
Startup failed |
Error | The agent did not start. See The agent stops with "Startup failed". |
The kernel's eBPF verifier rejected caretta's programs |
Error | The kernel did not load the eBPF programs. The field verifier_log tells you why. |
Skipping poll |
Warning | The agent did not read the full table of connections. It tries again at the next poll. If this message repeats, the liveness probe restarts the agent. |
Couldn't read a closed connection before deleting it; skipping it |
Warning | The agent did not remove one closed connection from the kernel. The metric caretta_failed_deletions counts these. |
Couldn't delete a closed connection from the map |
Warning | As above. |
Couldn't turn a deleted connection into a link |
Warning | The agent removed a closed connection, but did not add its bytes to a link. |
Couldn't find a pod's owner; using the closest one found |
Warning | See The map shows a pod name instead of its Deployment. |
Metrics server failed |
Error | The metrics server stopped, and the agent stops. Kubernetes restarts it. |
Unclean shutdown |
Error | The agent did not stop in 20 seconds, or did not remove its eBPF programs. The kernel removes them when the process stops. |
If a problem is not on this page, open an issue. Include the version of Caretta, the log of the agent, and the output of uname -r on the node.
This wiki is a copy of the docs folder, updated with each release. To change a page, edit its file there: changes made here are overwritten.