Files
headlamp-tns-csi-plugin/docs/troubleshooting/benchmark.md
T
Chris Farhood f1feb5c2f7 feat: native Headlamp integration, TrueNAS API, docs, and CI for v0.2.0
Native Headlamp integrations:
- registerResourceTableColumnsProcessor: add Protocol/Pool/Server columns to
  native StorageClass table and Protocol/Volume Handle to PV table
- registerDetailsViewSection: inject TNS-CSI section into PV detail pages
- registerDetailsViewSection: inject driver role/status into tns-csi Pod pages
- registerDetailsViewHeaderAction: Benchmark shortcut on StorageClass detail
- registerAppBarAction: driver health badge (N/Nc M/Mn, color-coded)
- Trim sidebar from 6 → 4 entries (Overview, Snapshots, Metrics, Benchmark)

TrueNAS API integration:
- src/api/truenas.ts: ConfigStore-backed settings, WebSocket JSON-RPC client
  for pool.query (auth.login_with_api_key + pool.query)
- src/components/TnsCsiSettings.tsx: API key + server override settings UI
  with connection test button
- TnsCsiDataContext: fetch real pool stats (size/allocated/free/status)
- OverviewPage: three-tier pool capacity display (real data → error → metrics
  fallback)

Documentation:
- README, CHANGELOG, CONTRIBUTING, SECURITY
- docs/: architecture, deployment (Helm), getting-started, user-guide,
  troubleshooting

CI:
- .github/workflows/ci.yaml: lint + type-check + test on PR/push
- .github/workflows/release.yaml: workflow_dispatch versioned release

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
2026-02-18 16:37:56 -05:00

3.0 KiB

Benchmark Issues

Benchmark Fails to Start

Check RBAC

The Benchmark page requires permissions to create and delete Jobs and PVCs:

kubectl auth can-i create jobs -n <benchmark-namespace> \
  --as=system:serviceaccount:kube-system:headlamp

kubectl auth can-i create persistentvolumeclaims -n <benchmark-namespace> \
  --as=system:serviceaccount:kube-system:headlamp

Apply the additional permissions if missing — see RBAC Issues or SECURITY.md.

Check the Target Namespace Exists

The namespace you select in the Benchmark form must exist. Create it if needed:

kubectl create namespace <benchmark-namespace>

Benchmark Stuck in "Running"

Check the kbench Pod

kubectl get pods -n <benchmark-namespace> \
  -l app.kubernetes.io/managed-by=headlamp-tns-csi-plugin

Common states:

Pod State Cause Action
Pending PVC not provisioned or scheduler issue Check PVC status and StorageClass
Init:Error kbench image pull failure Check image pull policy and network
Running Benchmark in progress Wait for completion
Completed Finished — results should appear Check FIO log section
Error / OOMKilled kbench ran out of memory Reduce test size or capacity

Check the PVC

kubectl get pvc -n <benchmark-namespace> \
  -l app.kubernetes.io/managed-by=headlamp-tns-csi-plugin

If the PVC is stuck in Pending, the StorageClass provisioner may not be able to create the volume:

kubectl describe pvc -n <benchmark-namespace> <pvc-name>

Look for events at the bottom of the describe output.

View kbench Logs Directly

kubectl logs -n <benchmark-namespace> \
  -l app.kubernetes.io/managed-by=headlamp-tns-csi-plugin \
  --tail=100

Leftover Resources After Failed Benchmark

If the benchmark was stopped or the plugin page was closed during a run, the Job and PVC may not have been cleaned up:

# List leftover resources
kubectl get jobs,pvc -n <benchmark-namespace> \
  -l app.kubernetes.io/managed-by=headlamp-tns-csi-plugin

# Clean up manually
kubectl delete jobs,pvc -n <benchmark-namespace> \
  -l app.kubernetes.io/managed-by=headlamp-tns-csi-plugin

The plugin adds the app.kubernetes.io/managed-by=headlamp-tns-csi-plugin label to all benchmark resources precisely to enable safe cleanup with this label selector.

No Results Shown After Benchmark Completes

The plugin parses the FIO log output from the kbench pod. If results don't appear:

  1. Check the pod completed successfully (status Completed, exit code 0)
  2. View the raw log: kubectl logs -n <ns> <kbench-pod>
  3. Look for the FIO result section — it should contain lines like READ: bw=... or WRITE: bw=...

If the kbench version produces output in a different format, the FIO log parser may not recognize it. Open a GitHub Issue with a sample of the log output.