Ga naar inhoud

NodeDiskIOSaturation

  • Bron: kube-prometheus-stack default rules
  • Alert: NodeDiskIOSaturation
  • Severity: warning

Betekenis

Hoge I/O-queue/disk-wachttijd op een node. De schijf kan het aantal I/O-verzoeken niet bijbenen (sustained queue depth / time-weighted I/O).

Typische trigger

Afgeleid van node_exporter disk-timers (o.a. node_disk_io_time_weighted_seconds_total). Duurt even voort voordat de alert vuurt.

Runbook

  1. Bepaal node en (indien bekend) device
  2. In Slack/Alertmanager zie je het instance/node label.
  3. In Prometheus:
    • topk(5, rate(node_disk_io_time_weighted_seconds_total[5m]))
    • topk(5, rate(node_disk_io_time_seconds_total[5m]))
  4. Welke pods veroorzaken I/O op die node?
  5. kubectl get pods -A -o wide --field-selector spec.nodeName=<NODE>
  6. Controleer bekende I/O-intensieve workloads (db, backup, logging, indexing).
  7. Heeft de pod PVC’s? Kijk PVC/SC:
    • kubectl -n <NS> get pod <POD> -o jsonpath='{.spec.volumes[*].persistentVolumeClaim.claimName}'
    • kubectl -n <NS> describe pvc <PVC>
  8. Cloud/volume-tuning (indien van toepassing)
  9. EBS: migreer naar gp3 en zet IOPS/throughput hoger; of kies snellere class.
  10. Overweeg node-type met snellere (NVMe) disks voor I/O-zware apps.
  11. Werkload-tuning
  12. Verminder parallelisme/gelijktijdigheid (backup/batch/cronjobs spreiden).
  13. Voor databases: batch/fsync-tuning, query-optimalisatie.
  14. Tijdelijke mitigatie
  15. Verplaats zware pods naar andere nodes (affinity/taints) of cordon/drain probleemnode.
  16. Validatie
  17. Alert gaat naar Resolved; grafieken van bovenstaande queries dalen zichtbaar.

Routing

  • Slack via default receiver; herhaalinterval ingesteld op 24h (ruisreductie).

Test

  • Genereer I/O op een testpod (bijv. fio, dd) en observeer de queries hierboven. (Niet op productie draaien.)