npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@gtadi/k8s-node-debugger

v1.1.1

Published

Spin up a privileged debug pod on a target Kubernetes node and inspect its network stack (iptables, resolv.conf, conntrack, routes, sockets) from a browser UI.

Readme

k8s node debugger

Spin up a privileged debug pod on any Kubernetes node and inspect its full network stack from a browser — no SSH required.

One command creates the pod, opens the browser, and cleans up when you're done.

node bin/k8s-node-debugger.js <node-name>

Screenshots

Firewall — iptables, nftables, and IPVS tabs

Firewall view

Conntrack — live connection tracking

Conntrack view

Node Health — CPU, memory, disk, PSI, OOM, kubelet logs

Node Health view

GPU Health — temperature, power, utilization, memory, ECC errors, clock throttle

GPU Health view

GPU Status — driver version, CUDA, per-GPU metrics, processes

GPU Status view

Install

npm install -g @gtadi/k8s-node-debugger

Or run without installing:

npx @gtadi/k8s-node-debugger <node-name>

Requires kubectl on your PATH with an active kubeconfig. The debug image (nicolaka/netshoot) is pulled from Docker Hub on first use.

From source

git clone [email protected]:goutamtadi1/k8s-node-debugger.git
cd k8s-node-debugger
npm install
node bin/k8s-node-debugger.js <node-name>

Usage

# list nodes in the current context
node bin/k8s-node-debugger.js --list

# debug a specific node (opens http://localhost:7878)
node bin/k8s-node-debugger.js <node-name>

# options
node bin/k8s-node-debugger.js <node-name> \
  --namespace kube-system \   # namespace for the debug pod (default: default)
  --context my-ctx \          # kubeconfig context (default: current)
  --port 9000 \               # UI port (default: 7878)
  --keep \                    # leave the pod running after exit
  --no-open                   # don't auto-open the browser

Press Ctrl-C to stop the server and delete the debug pod.

What it shows

| Section | Probes | |---|---| | Firewall | iptables (all tables), iptables nat, nftables, IPVS — each as a tab | | DNS | resolv.conf, nsswitch.conf, /etc/hosts | | Conntrack | connection table, per-CPU stats, count/max gauge — each as a tab | | Routing | IPv4 routes, IPv6 routes, policy rules | | Interfaces | ip addr, ip link stats, ARP/neighbors | | Sockets | listening sockets, all TCP/UDP with process names | | Kernel | key net.* sysctls | | Health | CPU & load, memory, disk usage, PSI pressure, OOM kills, kubelet logs — each as a tab | | GPU | nvidia-smi status, GPU processes, DCGM health check | | Terminal | streaming terminal — run any command inside the pod (tcpdump, dig, ping, conntrack -E …) |

Node Health view features

  • CPU & load — load averages (1/5/15 min) vs core count, CPU model, steal %, top processes
  • Memory — used/available/cached/swap gauges from /proc/meminfo
  • Disk usagedf -h per filesystem with usage bars
  • PSI pressure — CPU, memory, and I/O stall metrics from /proc/pressure/*; colour-coded ok/warn/critical
  • OOM kills — parsed dmesg entries with process names and timestamps; empty means no OOM events since boot
  • kubelet logs — last 100 lines from journalctl, errors and warnings highlighted

iptables view features

  • Tabs per table (mangle · security · raw · filter · nat) with rule counts
  • Collapsible chain cards with default-policy badge and packet/byte counters
  • Colour-coded target badges: ACCEPT / DROP / REJECT / MASQUERADE / DNAT / LOG / MARK / k8s chain / …
  • Human-readable rule summaries with port service names (SSH, HTTPS, etcd, kubelet, k8s-API, NodePort range …)
  • Live search across all tables and chains
  • KUBE-SVC-* / KUBE-SEP-* chains collapsed by default; toggle with K8s chains button
  • Click any rule to reveal the raw iptables-save line
  • Raw toggle to fall back to plain text

conntrack view features

  • Stat cards: Total · TCP ESTABLISHED · TCP TIME_WAIT · UDP · ICMP · total bytes
  • Protocol distribution bar and TCP state breakdown bar
  • Top 8 source IPs and top 8 destination ports (with service names)
  • Filter by protocol and TCP state; full-text search by IP, port, or state
  • Connection rows show state badge, ASSURED/UNREPLIED flag, src:port → dst:port, TTL, bytes, and a NAT tag when the reply source differs from the original destination
  • Paginated 200 at a time
  • Per-CPU stats table with drops/errors highlighted in red
  • Count/max capacity gauge (green → amber → red at 50% / 80%)

How it works

The debug pod (nicolaka/netshoot) is created with:

  • hostNetwork: true — shares the node's network namespace
  • hostPID: true — allows nsenter to enter the host mount namespace
  • privileged: true — required for iptables / conntrack / tcpdump
  • Host root mounted at /host — for reading node files
  • Tolerations for all taints — schedules onto control-plane nodes too

The server shells out to your local kubectl, so your active kubeconfig, current context, and any exec auth plugins (EKS, GKE, AKS) are reused automatically.

Environment variables

| Variable | Default | Description | |---|---|---| | KUBECTL_BIN | kubectl | Path to the kubectl binary | | DEBUGGER_IMAGE | nicolaka/netshoot:latest | Debug container image |