Overview
This guide provides solutions for common issues encountered when deploying and operating CrewAI Platform on Kubernetes. For additional support, generate a support bundle and contact your CrewAI representative.Diagnostic Commands
Before troubleshooting specific issues, gather diagnostic information:Common Issues
Pod CrashLoopBackOff
Symptoms:- Missing required secrets
- Database connection failure
- Resource limits too restrictive
- Invalid configuration
Pod Startup Failures
Diagnosis:- Check pod logs for errors
- Verify resource limits are not too restrictive
- Check secret availability
- Verify image pull secrets are configured
Database Connection Issues
Symptoms: Logs showcould not connect to server: Connection refused
Diagnosis:
If the application cannot connect to the database:
- Verify
DB_HOSTis set correctly for external databases - Check database credentials in secrets
- Ensure database allows connections from Kubernetes cluster
- Verify database name and port configuration
- Check security groups/firewall rules
- If using Built-in Integrations (
oauth.enabled: true) with an external database, ensure the OAuth database exists (default:oauth_db) - With an external database, ensure the Wharf database exists (default:
wharf; Wharf is enabled by default)
Storage/S3 Connection Issues
Diagnosis:- Verify AWS credentials are correct
- Check bucket name and region
- Ensure IAM permissions allow bucket access
- For MinIO, verify endpoint URL is accessible
Image Pull Errors
Symptoms:ErrImagePull, ImagePullBackOff
Solutions:
- Verify image name and tag exist
- Check pull secret configuration
- Verify registry credentials
- Check network connectivity to registry
Ingress Not Accessible
Symptoms: Cannot reach application via ingress hostname Diagnosis:- Verify ingress controller is installed
- Check ingress className matches your controller
- Verify DNS points to ingress load balancer
- Check TLS certificate configuration
Out of Memory (OOMKilled)
Symptoms: Pods restarting withOOMKilled
Solutions:
- Increase memory limits
- Tune
WEB_CONCURRENCYandRAILS_MAX_THREADS - Monitor actual memory usage
- Check for memory leaks
BuildKit Build Failures
Symptoms: Crew builds fail, BuildKit errors in logs Common Causes:- Registry authentication issues
- Insufficient BuildKit resources
- Network connectivity problems
Third-Party OpenTelemetry Auto-Instrumentation Conflicts
Symptoms: Deployed crews crash on startup or get stuck inInit, with logs similar to:
/otel-auto-instrumentation-python) and prepends it to PYTHONPATH. CrewAI crew images already ship their own OpenTelemetry SDK (bundled with CrewAI and its dependencies). When two different OpenTelemetry versions are spliced together on PYTHONPATH, the namespace package resolves to incompatible modules and the crew fails to import, producing the ImportError above. The AwsEksResourceDetector and getSamplingRules lines are the injected AWS agent failing to authenticate. They are warnings, but they confirm injection is active.
The telltale sign is the path /otel-auto-instrumentation-python in the traceback. That directory is injected by the operator and is not part of the crew image (/crew/.venv).
Solution: Exclude the CrewAI namespaces in the CloudWatch Observability add-on configuration. This is the only reliable fix on current versions of the add-on.
Apply an exclude block scoped to the CrewAI namespace, covering all languages (Auto Monitor injects Java, Python, Node.js, and .NET):
IN_PROGRESS while it rolls. Confirm the change took effect:
ACTIVE pick up the new configuration. A correctly excluded pod returns no auto-annotate-* or inject-* annotations in step 3, and its logs no longer show the ImportError.
Sending Crew Telemetry to CloudWatch or Other Backends
Disabling auto-injection does not mean losing observability. The conflict only affects application-level trace injection. The other telemetry paths are unaffected, and crew traces can still reach external backends through the supported configuration:- Container logs continue to flow to CloudWatch through your existing log agent (for example Fluent Bit). No instrumentation injection required.
- Pod and container metrics continue to flow through Container Insights and the CloudWatch agent. No injection required.
- Crew execution traces are emitted by each crew’s own OpenTelemetry SDK. Rather than letting a third-party operator inject a conflicting agent, configure an external collector under Settings → OpenTelemetry Collectors in the platform. The platform forwards crew traces (and logs) to any OTLP-compatible endpoint, including CloudWatch’s OTLP receiver, Datadog, Arize, or a generic OpenTelemetry collector. Provide the collector endpoint and any required headers; certificates are supported for TLS-secured endpoints.
PYTHONPATH collision that auto-injection causes.
Persistent Volume Issues
Symptoms: Pods stuck inPending state, PVC not binding
Solutions:
Authentication Provider Issues
Symptoms: Unable to log in, OAuth errors Solutions:Entra ID Issues
Okta Issues
Secret Management Issues
Symptoms: Pods fail to start, missing secret errors Solutions:Expected Behavior: Pod Restarts After Secret Updates
Observation: Pods restart after runninghelm upgrade when secret values change
This is expected behavior. When you update secret values in your Helm values file (e.g., rotating credentials), the chart automatically triggers a rolling restart of all affected pods to ensure they pick up the new credentials. This is by design and prevents stale credentials from being used.
What to expect:
- Pods restart in a rolling fashion (no downtime)
- Each pod restarts once to load new secret values
- The restart happens automatically - no manual pod deletion needed
Configuration Warnings
RAILS_MASTER_KEY Warning
Warning Message:RAILS_MASTER_KEY in either envVars or secrets in your values file.
Solution:
The chart automatically manages RAILS_MASTER_KEY and does not require manual configuration. Remove this setting from your values file:
RAILS_MASTER_KEY. Setting it manually can cause configuration conflicts.
Performance Issues
Symptoms: Slow response times, high latency Diagnostic Steps:- Scale web replicas:
- Increase resources:
- Tune concurrency:
- Add database read replicas (configure in external database)
Support and Resources
Documentation
- Installation Guide: Installation
- Configuration Guide: Configuration
- Configuration Reference: Reference
Generate Support Bundle
The support bundle collects comprehensive diagnostics for troubleshooting:- OAuth Service: When
oauth.enabled: true - Wharf Service: When
wharf.enabled: true - Cube Analytics: When
cube.enabled: true - BuildKit: When
buildkit.enabled: true - Internal Registry: When
internalRegistry.enabled: true - PostgreSQL: When
postgres.enabled: true - MinIO: When
minio.enabled: true
supportBundle.crewLogNamespaces to collect crew logs from additional namespaces:
.tar.gz file that can be shared with CrewAI support for analysis.
Share the generated support bundle file with CrewAI support for faster issue resolution.
Quick Diagnostic Commands
Contact Support
For assistance with CrewAI Platform:- Customer Portal:
https://enterprise.crewai.com/crewai - Support Team: Contact your CrewAI representative
- Emergency Issues: Generate and share support bundle with your support team
- Release History:
https://enterprise.crewai.com/crewai/release-history
