Blog

Technical notes on what I’m building.

Networking, embedded systems, and infrastructure — the real problems that show up along the way.

Aug 11, 2026 · Featured

Why Your Kubernetes Node Freezes: Three Storage Failure Modes

Three unrelated storage failure modes on the same k3s cluster all present as an unresponsive node — Longhorn iSCSI stalls under memory pressure, CIFS mounts entering D-state, and kubelet mis-measuring ephemeral-storage. How to tell them apart before reaching for the power button.

Recent posts
Sep 23, 2026

Tailscale Pings Work, ICMP Doesn't: firewalld's Unzoned tailscale0

On Fedora with firewalld, `tailscale up` can leave the tailscale0 interface unassigned to any zone, silently dropping real traffic while tailscale's own control-plane pings keep working.

Sep 22, 2026

How a CIFS Reconnect Stale-Handled Every Pod on a Shared PV

A CIFS globalmount on a TrueNAS SMB share went stale on every k3s node at once, and csi-driver-smb kept bind-mounting the dead handle into every new pod — fixed with noserverino, a real mount-stat liveness probe, and a DaemonSet that force-unmounts stale CIFS globalmounts.

Aug 15, 2026

Why a KVM Guest on NAT Loses Internet When Docker Is Installed

Docker sets the kernel FORWARD chain policy to DROP and leaves DOCKER-USER empty, silently killing traffic from libvirt's default NAT network even when firewalld and libvirt are both configured correctly.

Jul 2, 2026

Jellyfin Evictions Traced to kubelet's root-dir on Wrong Disk

kubelet computed ephemeral-storage capacity from the small /var partition instead of the 838G data disk, evicting Jellyfin pods that used 1.1MB. Fixed by bind-mounting the big disk at /var/lib/kubelet instead of moving root-dir, which breaks Longhorn CSI.

Jun 26, 2026

k3s Node Freeze: Longhorn iSCSI Stalls and Memory Pressure

Longhorn iSCSI I/O stalls and memory pressure were freezing k3s nodes and requiring physical power-button reboots. How kdump revealed what journald couldn't.

Jun 26, 2026

SMB Mounts in Kubernetes Will Freeze Your Node — Here's What Actually Works

CIFS mounts in Kubernetes have no reliable timeout option on most kernels. Every obvious fix fails. This documents what was tried, what the kernel actually supports, and the sidecar pattern that works.

Jun 30, 2026

Persistent SSH and Tailscale on Steam Deck / SteamOS Across Updates

Key-only SSH and Tailscale on Steam Deck / SteamOS that survive every update — the atomic update whitelist for SSH and the official deck-tailscale installer, explained.

Jun 26, 2026

Headscale and Tailscale on OPNSense: Subnet Router and Route Advertising via WebUI

Install the os-tailscale plugin on OPNSense, connect to Tailscale or Headscale, and advertise subnet routes — the WebUI steps most guides skip, including firewall rules and route approval.

Jun 24, 2026

PPiNAS: 6-Bay NAS on a Raspberry Pi 5, and the ASM1166 Boot Hang

Building a 6-bay NAS with a Raspberry Pi 5 and an ASM1166 SATA controller — including the silent boot hang caused by the Pi 5's MSI implementation.