What's Actually Happening

Kubernetes cannot find referenced secrets. Pods fail to start due to missing secret references.

The Error You'll See

```bash $ kubectl describe pod mypod

Warning Failed 5m kubelet Error: secret "my-secret" not found ```

Why This Happens

  1. 1.Secret not created
  2. 2.Wrong namespace
  3. 3.Wrong secret name
  4. 4.RBAC permissions
  5. 5.Secret deleted

Step 1: Check Secret Exists

bash
kubectl get secrets -A
kubectl get secret my-secret -n mynamespace
kubectl describe secret my-secret

Step 2: Check Namespace

bash
# Secret and pod must be in same namespace
kubectl get pod mypod -o jsonpath='{.metadata.namespace}'
kubectl get secrets -n <namespace>

Step 3: Create Missing Secret

bash
kubectl create secret generic my-secret --from-literal=key=value -n mynamespace
kubectl create secret docker-registry my-secret --docker-server=server --docker-username=user --docker-password=pass

Step 4: Check Pod Specification

bash
kubectl get pod mypod -o yaml | grep -A 5 secretRef

Step 5: Check RBAC

bash
kubectl auth can-i get secrets --as=system:serviceaccount:mynamespace:mysa
kubectl get rolebinding -n mynamespace

Step 6: Check Secret Name

bash
# Ensure exact name match (case-sensitive)
kubectl get secrets -n mynamespace | grep -i my-secret

Step 7: Create from File

bash
kubectl create secret generic my-secret --from-file=cert.pem -n mynamespace

Step 8: Decode Secret

bash
kubectl get secret my-secret -o jsonpath='{.data.key}' | base64 -d

Step 9: Import from YAML

bash
kubectl apply -f secret.yaml

Step 10: Verify in Pod

bash
kubectl exec mypod -- ls -la /etc/secrets
kubectl exec mypod -- cat /etc/secrets/key
  • [Fix Kubernetes ConfigMap Not Found](/articles/fix-kubernetes-configmap-not-found)
  • [Fix Kubernetes PVC Not Binding](/articles/fix-kubernetes-pvc-not-binding)