When something goes wrong in InventarioITU, the fastest path to a fix is to isolate the failure to a single layer — Kubernetes scheduling, container runtime, database connectivity, LDAP authentication, or network policy. Start withDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/carlamndz/InventarioITU/llms.txt
Use this file to discover all available pages before exploring further.
kubectl get pods to get a high-level view of the cluster state, then drill into the specific service that is misbehaving using the targeted commands below. Each accordion section describes a distinct failure mode, its likely causes, and the exact commands needed to confirm and resolve it.
Pods stuck in Pending or CrashLoopBackOff
Pods stuck in Pending or CrashLoopBackOff
A pod stuck in Look at the If the pod has already restarted, fetch logs from the previous run:Common fixes:
Pending has not been scheduled onto a node yet. A pod in CrashLoopBackOff started but its main process exited with an error, and Kubernetes is retrying with an exponential back-off.Step 1 — Describe the pod to see scheduling events and failure reasons:Events section at the bottom of the output. Common messages and their causes:Unschedulable: 0/1 nodes are available— the cluster has no node with sufficient CPU or memory. Check resource requests in the Deployment manifest.PersistentVolumeClaim is not bound— the PersistentVolumeClaim referenced by the pod does not have a matching PersistentVolume. Verify withkubectl get pvcandkubectl get pv.Back-off pulling image— the image name or tag is wrong, or the registry is unreachable. Double-check theimage:field in the manifest.
- Increase the node’s available resources or lower the container’s
resources.requestsvalues. - Create the missing PersistentVolume or resize the storage class.
- Correct the image name and re-apply the manifest with
kubectl apply -f.
Cannot connect to SQL Server (ubicacion-db)
Cannot connect to SQL Server (ubicacion-db)
The The Verify that the A response of
ubicacion-db pod runs SQL Server and stores all location and equipment assignment data. Connection failures from inventario-web to ubicacion-db on port 1433 typically point to one of three causes: the pod is not running, the Kubernetes Service is misconfigured, or the SA password does not meet SQL Server’s complexity requirements.Step 1 — Confirm the pod is running:STATUS column must show Running and READY must be 1/1. If the pod is in CrashLoopBackOff, check the logs — SQL Server will refuse to start if SA_PASSWORD is shorter than 8 characters or does not contain a mix of uppercase, lowercase, digits, and symbols.Step 2 — Check the Kubernetes Service:PORT(S) column shows 1433 and that SELECTOR matches the label app=ubicacion-db.Step 3 — Test the TCP port from the web pod:Connection to ubicacion-db 1433 port [tcp/*] succeeded! confirms that the network path is open. If the connection is refused or times out, check the Calico NetworkPolicy in k8s/network-policies/ to ensure traffic from inventario-web to ubicacion-db on port 1433 is permitted.Common fix — SA_PASSWORD complexity:SQL Server requires a password of at least 8 characters containing uppercase letters, lowercase letters, digits, and special characters. Update the password in your Kubernetes Secret and restart the pod:Cannot connect to MongoDB (inventario-db)
Cannot connect to MongoDB (inventario-db)
MongoDB stores the hardware component records for each inventoried machine. The Step 2 — Test TCP connectivity from the web pod:Step 3 — Verify the connection string in the web app:The If authentication is enabled on the MongoDB instance, the URI must include credentials:Check the current value in the running pod:Common fix: If
inventario-db pod must be reachable from inventario-web on port 27017.Step 1 — Verify the pod is running:inventario-web container connects to MongoDB via the MONGO_URI environment variable. Its value must follow this pattern:MONGO_URI is missing or points to the wrong host, update the Kubernetes Secret or ConfigMap that supplies it, then restart the web pod with kubectl rollout restart deployment inventario-web.LDAP authentication failures
LDAP authentication failures
Authentication failures manifest as login errors in the LDAP error code Step 3 — Verify all LDAP environment variables are set correctly:Confirm that:
inventario-web UI or as bind errors in the application logs. The most frequent causes are an incorrect bind DN, a wrong password, or a mismatch between LDAP_USER_SEARCH_BASE and the actual directory structure.Step 1 — Check the application logs for the LDAP error code:49 means invalid credentials (wrong bind DN or password). Error code 32 means the search base DN does not exist in the directory.Step 2 — Test the bind manually from within the web pod:LDAP_BIND_DNmatches the exact DN of the admin account in the directory (e.g.,cn=admin,dc=itu,dc=edu,dc=ar).LDAP_USER_SEARCH_BASEis set toou=usuarios,dc=itu,dc=edu,dc=ar— this must match the OU where user entries are stored.LDAP_BASE_DNisdc=itu,dc=edu,dc=ar.
ou=usuarios organizational unit was never created, no user searches will succeed. Add the OU via an LDIF file and ldapadd before attempting any logins.Network policy blocking expected traffic
Network policy blocking expected traffic
Calico NetworkPolicies restrict which pods can communicate with which services. A misconfigured policy can silently drop traffic that should be allowed, causing connection timeouts that look like application bugs.Step 1 — Confirm Calico is installed and its pods are healthy:All Review each policy with If the connection succeeds after deletion, the removed policy was too restrictive. Update its rules to permit the required traffic and re-apply it with
calico-node and calico-kube-controllers pods must be in Running state. If any Calico pod is crashing, network policies will not be enforced consistently and you may see intermittent connectivity.Step 2 — List all active network policies:kubectl describe networkpolicy <name> to understand its podSelector, ingress, and egress rules.Step 3 — Isolate whether a policy is the cause:Temporarily delete a suspected policy to test if connectivity is restored:kubectl apply -f. Never leave policies deleted in a production environment — restore the file immediately after your test.Common fix: A NetworkPolicy that selects inventario-web pods must include explicit ingress rules allowing traffic from inventario-db and ubicacion-db on their respective ports, and the policies on those database pods must include corresponding egress/ingress rules permitting traffic from the web pod’s label selector.Minikube service not accessible from the host
Minikube service not accessible from the host
When running InventarioITU locally with Minikube, the This command returns the host IP and NodePort assigned by Minikube. Open that URL in a browser to reach the web frontend.Step 2 — Verify the NodePort is in the valid range:Kubernetes NodePort services must use a port in the range 30000–32767. Check the assigned port:If the port is outside this range, it was likely specified incorrectly in the Service manifest. Update the Leave the tunnel process running for the duration of your session. The service will then become accessible at
inventario-web service may not be reachable at localhost:3000 because Minikube runs in its own VM or container network.Step 1 — Get the correct access URL:nodePort field and re-apply.Step 3 — Check for a LoadBalancer type requiring a tunnel:If the Service type is LoadBalancer rather than NodePort, the external IP will remain in <pending> state on Minikube unless a tunnel is running. Start the tunnel in a separate terminal:127.0.0.1:3000.Diagnostic Commands Reference
The commands in the table below cover the most common diagnostic tasks across all layers of the InventarioITU stack. Keep this table handy when working through any of the issues described above.
| Task | Command |
|---|---|
| View pod logs | kubectl logs <pod-name> |
| View previous pod logs | kubectl logs <pod-name> --previous |
| Describe pod | kubectl describe pod <pod-name> |
| List all pods with status | kubectl get pods -o wide |
| Test TCP port reachability | nc -zv <host> <port> |
| LDAP directory search | ldapsearch -x -H ldap://<host>:389 -D "<bind-dn>" -w <password> -b "<base-dn>" "<filter>" |
| MongoDB shell | mongosh mongodb://<host>:27017 |
| SQL Server CLI | sqlcmd -S <host> -U sa -P <password> |
| Restart a deployment | kubectl rollout restart deployment <name> |
| List network policies | kubectl get networkpolicies |
| Get Minikube service URL | minikube service <name> --url |