Supported versions:
Unsupported versions:
This topic discusses steps you can take to troubleshoot and fix problems with the
Cassandra datastore. Cassandra is a
persistent datastore
that runs in the cassandra component of the
hybrid runtime architecture.
See also
Runtime service configuration overview.
When starting up, the Cassandra pods remain in the Pending state.
When you use kubectl to view the pod states, you see that one or more
Cassandra pods are stuck in the Pending state. The
Pending state indicates that Kubernetes is unable to schedule the pod
on a node: the pod cannot be created. For example:
kubectl get pods -n namespace
NAME READY STATUS RESTARTS AGE
adah-resources-install-4762w 0/4 Completed 0 10m
apigee-cassandra-0 0/1 Pending 0 10m
...A pod stuck in the Pending state can have multiple causes. For example:
Use kubectl
to describe the pod to determine the source of the error. For example:
kubectl -n namespace describe pods pod_name
For example:
kubectl -n apigee describe pods apigee-cassandra-0
The output may show one of these possible problems:
Modify the Cassandra node pool so that it has sufficient CPU and memory resources. See Resizing a node pool for details.
If you determine a persistent volume issue, describe the PersistentVolumeClaim (PVC) to determine why it is not being created:
kubectl -n namespace get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE cassandra-data-apigee-cassandra-0 Bound pvc-b247faae-0a2b-11ea-867b-42010a80006e 10Gi RWO standard 15m ...
apigee-cassandra-0:
kubectl apigee describe pvc cassandra-data-apigee-cassandra-0 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning ProvisioningFailed 3m (x143 over 5h) persistentvolume-controller storageclass.storage.k8s.io "apigee-sc" not found
Note that in this example, the StorageClass named apigee-sc does not exist. To
resolve this problem, create the missing StorageClass in the cluster, as explained in
Change the default StorageClass.
See also Debugging Pods.
When starting up, the Cassandra pods remain in the CrashLoopBackoff state.
When you use kubectl to view the pod states, you see that one or more
Cassandra pods are in the CrashLoopBackoff state.
This state indicates that Kubernetes is unable to create the pod. For example:
kubectl get pods -n namespace
NAME READY STATUS RESTARTS AGE
adah-resources-install-4762w 0/4 Completed 0 10m
apigee-cassandra-0 0/1 CrashLoopBackoff 0 10m
...
A pod stuck in the CrashLoopBackoff state can have multiple causes. For example:
Check the Cassandra error log to determine the cause of the problem.
kubectl get pods -n namespace
kubectl logs pod_id -n namespace
Look for the following clues in the pod's log:
If you see this log message:
Cannot start node if snitch's data center (us-east1) differs from previous data center
kubectl -n namespace get pvckubectl -n namespace delete pvc cassandra-data-apigee-cassandra-0
If you see this log message:
Caused by: java.io.FileNotFoundException: /apigee/cassandra/ssl/truststore.p12 (No such file or directory)
Verify the key and certificates if provided in your overrides file are correct and valid. For example:
cassandra: sslRootCAPath: path_to_root_ca-file sslCertPath: path-to-tls-cert-file sslKeyPath: path-to-tls-key-file
When starting up, the Cassandra pods remain in the Pending state. This problem can indicate an underlying node failure.
$ kubectl get pods -n your_namespace NAME READY STATUS RESTARTS AGE cassandra-0 0/1 Pending 0 13s cassandra-1 1/1 Running 0 8d cassandra-2 1/1 Running 0 8d
kubectl get nodes -n your_namespace NAME STATUS ROLES AGE VERSION ip-10-30-1-190.ec2.internal Ready <none> 8d v1.13.2 ip-10-30-1-22.ec2.internal Ready master 8d v1.13.2 ip-10-30-1-36.ec2.internal NotReady <none> 8d v1.13.2 ip-10-30-2-214.ec2.internal Ready <none> 8d v1.13.2 ip-10-30-2-252.ec2.internal Ready <none> 8d v1.13.2 ip-10-30-2-47.ec2.internal Ready <none> 8d v1.13.2 ip-10-30-3-11.ec2.internal Ready <none> 8d v1.13.2 ip-10-30-3-152.ec2.internal Ready <none> 8d v1.13.2 ip-10-30-3-5.ec2.internal Ready <none> 8d v1.13.2
$ kubectl exec -it apigee-cassandra-0 -- nodetool status
$ kubectl exec -it apigee-cassandra-0 -- nodetool removenode deadnode_hostIDkubectl get pvc -n your_namespace
kubectl delete pvc volumeClaim_name -n your_namespaceapiVersion: v1
kind: PersistentVolume
metadata:
name: cassandra-data-3
spec:
capacity:
storage: 100Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage
local:
path: /apigee/data
nodeAffinity:
"required":
"nodeSelectorTerms":
- "matchExpressions":
- "key": "kubernetes.io/hostname"
"operator": "In"
"values": ["ip-10-30-1-36.ec2.internal"]kubectl apply -f volume-template.yaml
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2026-07-23 UTC.