Common Issues#
Solutions to the most frequently encountered problems in SCO.
Authentication and Access#
"Unable to connect to the server" or kubeconfig errors#
Cause: Expired token, wrong context, or incorrect server URL.
kubectl config current-context
# Re-download kubeconfig from the console and set it
export KUBECONFIG=~/.kube/my-project-new.yaml
kubectl cluster-info
Clear a cached OIDC token if using oidc-login:
rm -rf ~/.kube/cache/oidc-login/
"Forbidden" when applying a claim#
Cause: Your role in this project doesn't permit creating resources.
Fix: Contact your organisation administrator — you need edit or admin role to create resources.
Cannot log in to the console#
Cause: Wrong organisation URL, locked account, or SSO misconfiguration.
Fix: Ensure you're using the console URL for your specific organisation. If your account is locked after failed attempts, an administrator can unlock it.
Provisioning#
Claim stays in Provisioning#
Cause: A composed resource is failing to reconcile.
kubectl describe <kind> <name>
# Check Conditions and Events sections
Common causes:
- Quota exceeded — see below
- Invalid parameter — the error message identifies which field
- Infrastructure capacity — contact your platform administrator
"Exceeded quota" error#
kubectl describe resourcequota
Request a quota increase from your organisation administrator.
Claim stuck deleting#
Cause: Deletion is ordered — all composed resources must be removed before the claim disappears. This is expected behaviour.
VMs typically delete in under a minute. OpenShift clusters may take 5–10 minutes.
If stuck for more than 15 minutes, contact your platform administrator.
Virtual Machines#
VM Ready but SSH connection refused#
Cause: Cloud-init still running, wrong IP, or firewall issue.
Fix: Wait 2–3 minutes after Ready for cloud-init to complete, then retry.
kubectl get virtualmachine my-vm -o jsonpath='{.status}'
ssh -i ~/.ssh/my-key user@<vm-ip>
If using connection: private, the VM IP is only reachable from within the cluster. Use connection: public for external access.
Cloud-init script didn't run#
Cause: Syntax error in cloudInit.userData.
Fix: The file must start with #cloud-config. Validate your cloud-init YAML before applying.
OpenShift Clusters#
Cluster provisioning taking more than 20 minutes#
Hosted cluster provisioning takes 10–25 minutes for first-time setup. Monitor progress:
kubectl get openshiftcluster my-cluster -w
kubectl describe openshiftcluster my-cluster
If no progress after 30 minutes, contact your platform administrator.
Cluster kubeconfig shows empty status#
Cause: Cluster hasn't finished provisioning yet.
Fix: Wait for Ready: True, then check status for connection details:
kubectl get openshiftcluster my-cluster -o jsonpath='{.status}'
IAM and Users#
User created but cannot log in#
Cause: enabled or emailVerified not set to true.
kubectl get user alice -o yaml
Ensure both fields are true. Update the claim and reapply.
User removed from group but still has access#
Cause: Token caching — the existing session still carries old group membership.
Fix: The user must log out and back in to get a refreshed token. This resolves automatically at next login.
What's Next?#
- Troubleshooting Overview — Layer-by-layer diagnostic approach
- Provisioning Solutions — Provisioning guide