Troubleshooting
kubectl commands. If you're going to be debugging AIOStack (or any Kubernetes workload), it's worth installing before you start.Quick status check
Run these first to get a picture of what's happening:
# Overall pod status
kubectl get pods -n aiostack
# All AIOStack resources
kubectl get all -n aiostack
# Recent events (errors surface here first)
kubectl get events -n aiostack --sort-by='.lastTimestamp'
Pods not starting
Pods stuck in Pending
The node doesn't have enough resources or there's no node that satisfies the DaemonSet's scheduling requirements.
# Describe the stuck pod for scheduling details
kubectl describe pod -n aiostack -l app.kubernetes.io/name=observer
# Check node capacity and allocatable resources
kubectl describe nodes | grep -A 5 "Allocated resources"
# Check if any taints are blocking scheduling
kubectl get nodes -o custom-columns=NAME:.metadata.name,TAINTS:.spec.taints
Pods stuck in CrashLoopBackOff
The container is starting and immediately exiting. Check logs from the current and previous container:
# Current logs
kubectl logs -n aiostack -l app.kubernetes.io/name=observer --tail=100
# Logs from the previous (crashed) container
kubectl logs -n aiostack -l app.kubernetes.io/name=observer --previous --tail=100
# Same for the outpost
kubectl logs -n aiostack -l app.kubernetes.io/name=outpost --tail=100
kubectl logs -n aiostack -l app.kubernetes.io/name=outpost --previous --tail=100
Pods stuck in ImagePullBackOff
The cluster cannot pull the AIOStack container image.
kubectl describe pod -n aiostack -l app.kubernetes.io/name=observer | grep -A 10 "Events:"
Check that your cluster nodes have outbound internet access to pull images. If you're in an air-gapped environment, contact support@aurva.io.
eBPF not working
Kernel version too old
AIOStack requires Linux kernel 5.15+. Verify on each node:
# Check kernel version on all nodes
kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.nodeInfo.kernelVersion}{"\n"}{end}'
If any node is below 5.15, AIOStack's observer will not be able to attach eBPF probes on that node.
eBPF probes failing to attach
# Look for eBPF-related errors in observer logs
kubectl logs -n aiostack -l app.kubernetes.io/name=observer --tail=200 | grep -i "ebpf\|probe\|kprobe\|uprobe\|permission\|denied"
The observer requires CAP_BPF and CAP_SYS_ADMIN capabilities. If your cluster has a restrictive PodSecurityPolicy or OPA/Gatekeeper rules blocking privileged containers, the probes will fail to load. Check with your cluster admin.
No data appearing in the console
Observer is running but nothing shows up
# Confirm observer pods are running on all nodes
kubectl get pods -n aiostack -o wide
# Check observer is seeing network traffic
kubectl logs -n aiostack -l app.kubernetes.io/name=observer --tail=200 | grep -i "connection\|trace\|event"
# Check outpost is connected to the control plane
kubectl logs -n aiostack -l app.kubernetes.io/name=outpost --tail=200 | grep -i "connected\|commander\|error\|failed"
Outpost cannot reach the control plane
The outpost communicates with hq.aurva.ai:443. Verify outbound connectivity from the cluster:
# Run a one-off pod to test connectivity
kubectl run -it --rm curl-test --image=curlimages/curl --restart=Never -n aiostack -- \
curl -v https://hq.aurva.ai
If the connection fails, check your cluster's egress network policies and firewall rules to ensure hq.aurva.ai:443 is reachable.
Wrong or missing Company ID
# Check the Company ID set in the outpost env
kubectl get pod -n aiostack -l app.kubernetes.io/name=outpost -o jsonpath='{.items[0].spec.containers[0].env}' | \
python3 -m json.tool | grep -A 1 "COMPANY_ID"
If the value is empty or wrong, reinstall with the correct COMPANY_ID from app.aurva.ai.
IAM / cloud inventory not working
IAM roles, RDS, or S3 not appearing
The outpost's cloud service account is either not configured or the role doesn't have the required permissions.
# Check if IAM role annotation is set on the service account (AWS)
kubectl get serviceaccount aiostack-outpost-sa -n aiostack -o yaml | grep "eks.amazonaws.com"
# Check outpost logs for permission errors
kubectl logs -n aiostack -l app.kubernetes.io/name=outpost --tail=200 | grep -i "iam\|permission\|unauthorized\|forbidden\|rds\|s3"
For AWS, verify the IRSA trust policy references the correct OIDC issuer and namespace:
# Get your cluster's OIDC issuer
aws eks describe-cluster --name <CLUSTER_NAME> --region <REGION> \
--query "cluster.identity.oidc.issuer" --output text
For GCP, verify the Workload Identity binding:
gcloud iam service-accounts get-iam-policy \
aiostack-outpost@<PROJECT_ID>.iam.gserviceaccount.com
Helm installation issues
Helm release already exists
# List existing releases
helm list -n aiostack
# Upgrade instead of install
helm upgrade myaiostack aiostack/aiostack --namespace aiostack \
--set outpost.env[3].name=COMPANY_ID \
--set outpost.env[3].value=<YOUR_COMPANY_ID>
# Or uninstall and reinstall
helm uninstall myaiostack -n aiostack
Helm repo not found or chart unavailable
# Re-add the repo and update
helm repo remove aiostack
helm repo add aiostack https://charts.aurva.ai/
helm repo update
# Confirm chart is available
helm search repo aiostack/aiostack
Values not taking effect
--set with commas in values (e.g. SKIP_NAMESPACES) requires escaping:
# Commas must be escaped with a backslash
--set "outpost.env[0].value=kube-system\,aiostack\,monitoring"
Namespace issues
Namespace already exists with a conflicting installation
# Check what's already running in the namespace
kubectl get all -n aiostack
# Check for existing Helm releases in that namespace
helm list -n aiostack
Use a different release name or namespace if there's a conflict:
helm install myaiostack-2 aiostack/aiostack --namespace aiostack-2 --create-namespace \
--set outpost.env[3].name=COMPANY_ID \
--set outpost.env[3].value=<YOUR_COMPANY_ID>
Watching logs in real time
# Stream observer logs
kubectl logs -n aiostack -l app.kubernetes.io/name=observer -f
# Stream outpost logs
kubectl logs -n aiostack -l app.kubernetes.io/name=outpost -f
# Watch pod status changes
kubectl get pods -n aiostack -w
# All containers across all pods
kubectl logs -n aiostack -l app.kubernetes.io/instance=myaiostack --all-containers --tail=50
Still stuck?
- GitHub Issues — search existing issues or open a new one
- support@aurva.io — include your Kubernetes version, cloud provider, and the output of
kubectl get pods -n aiostackand relevant logs