Troubleshooting#
The components deploy as Argo CD Applications in health-gated waves: a wave does
not start until the previous one is Healthy. When the rollout stalls, one
Application is failing and the rest are waiting on it. Find the failing
Application, read why it failed, then go to that component’s page for the fix.
Find the failing Application#
List every Application with its sync and health status:
kubectl -n argocd get applications
Each row shows a sync status (Synced or OutOfSync) and a health status
(Healthy, Progressing, Degraded, or Missing). The Application that
is Degraded or stuck in Progressing is the one to investigate.
Applications still Missing are waiting on it, not broken. Component Application names
carry the cluster-name prefix, for example k8s-admin-openbao.
Read why it failed#
Show the failing Application’s sync result, health, and conditions:
kubectl -n argocd describe application <name>
The Conditions and the last sync Message usually name the cause: a Helm
render error, a failed hook Job, or a resource that never becomes healthy. When
the Application is Degraded, inspect its workload in the component’s
namespace:
kubectl -n <namespace> get pods
kubectl -n <namespace> describe pod <pod>
kubectl -n <namespace> logs <pod>
The pod events and logs show the runtime cause, such as an image-pull failure, a
CrashLoopBackOff, or a missing Secret. The Argo CD web UI shows the same
Application status, resource tree, and events once the gateway serves it.
Once you know which component is failing, refer to that component’s page for the fix. The following table maps the common cases.
Common failures#
Symptom |
Likely cause and where to look |
|---|---|
An Application stays |
The repository token lacks read access. Refer to Argo CD Installation for the required role and scope. |
An Application stays |
Argo CD has not polled yet. Trigger a refresh with |
OpenBao is sealed or in |
The |
A workload cannot mount its volume or find its persistent data. |
Check the PersistentVolumeClaim, pod events, and shared mounts. A missing or inconsistent NFS mount can leave data inaccessible when a pod moves to another node. Refer to Check Persistent Storage. |
A UI does not load even though every Application is |
The host name does not resolve to the address for the access path you chose, the head-node gateway proxy is not configured, or the gateway certificate does not cover the host name. Refer to Reach the UIs. |
Sign-in fails or bounces back to the sign-in page. |
The realm import is off, |
The seed step fails. |
The required NGC image-pull token is missing from |
The OpenBao configure Job fails. |
A |
BCM LDAP users do not appear in the realm. |
|
Argo CD fails to pull its Redis image with |
Argo CD pulls Redis from AWS ECR Public, which rate-limits anonymous
pulls. Set |
Check Persistent Storage#
On the active BCM head node, inspect the failing workload’s PersistentVolumeClaim (PVC) and pod events:
module load kubernetes/k8s-admin
kubectl -n <namespace> get pvc
kubectl -n <namespace> describe pvc <pvc-name>
kubectl -n <namespace> describe pod <pod-name>
A Pending PVC can indicate a provisioning failure or that it is waiting
for a consumer pod. Read the events before choosing a recovery action.
A Bound PVC confirms that Kubernetes assigned a volume; it does not prove
that the same data is accessible on every node.
If a pod cannot find previously initialized data, repeat Verify Shared Storage on every node in the cluster.
If the mounts are missing or inconsistent, stop the installation. Do not mount over directories used by running workloads. Establish how to stop the affected workloads and preserve any required data before correcting storage in BCM.