Troubleshooting
Troubleshooting
PersistenceReachable=False
- Check the datastore host/port and that the password Secret exists with the referenced key.
- The operator pings the datastore from its own pod (in
temporal-system), so a Postgreshostmust be a namespace-qualified FQDN (e.g.temporal-pg-rw.temporal.svc.cluster.local), not a bare service name. - For Postgres, confirm the database and visibility database exist. The operator
does not create databases — both
temporalandtemporal_visibilitymust exist before schema setup. remaining connection slots are reserved for ... SUPERUSER(SQLSTATE 53300) means Postgres ran out of connections. Each service pod pools to both stores; raisemax_connections(200 is a good starting point for a small cluster).
SchemaReady=False
- Inspect the schema Jobs:
kubectl get jobs -l app.kubernetes.io/component=schema. - View logs of a failed schema Job for
temporal-sql-tool/temporal-cassandra-toolerrors.
MTLSReady=False
- Ensure cert-manager is installed and the referenced
issuerRefexists. - Check the
Certificateresources:kubectl describe certificate <cluster>-internode.
Available=False
kubectl get deploy -l app.kubernetes.io/instance=<cluster>and inspect pod events (image pulls, probe failures, membership join issues).- On mTLS clusters the request-serving pods use TCP probes rather than gRPC ones (the native gRPC prober cannot present a client certificate); see the “mTLS health probes” section under Operations for details.
Namespace/SearchAttribute not registering
- These wait for the cluster’s
Ready=True. Confirm the cluster is ready first.