tailscale/tailscale · error
failed to watch IPN bus: %w
Error message
failed to watch IPN bus: %w
What it means
Opening an IPN bus watch with initial netmap failed at the start of health monitoring, so the proxy's readiness endpoint can never observe the node's addresses; monitoring returns the error to the caller.
Source
Thrown at kube/health/healthz.go:65
} else {
http.Error(w, "node currently has no tailscale IPs", http.StatusServiceUnavailable)
}
}
func (h *Healthz) Update(healthy bool) {
h.Lock()
defer h.Unlock()
if h.hasAddrs != healthy {
h.logger("Setting healthy %v", healthy)
}
h.hasAddrs = healthy
}
func (h *Healthz) MonitorHealth(ctx context.Context, lc *local.Client) error {
w, err := lc.WatchIPNBus(ctx, ipn.NotifyInitialNetMap)
if err != nil {
return fmt.Errorf("failed to watch IPN bus: %w", err)
}
for {
n, err := w.Next()
if err != nil {
return err
}
if self := n.SelfChange; self != nil {
h.Update(len(self.Addresses) != 0)
}
}
}
// RegisterHealthHandlers registers a simple health handler at /healthz.
// A containerized tailscale instance is considered healthy if
// it has at least one tailnet IP address.
func RegisterHealthHandlers(mux *http.ServeMux, podIPv4, podIPv6 string, logger logger.Logf) *Healthz {View on GitHub (pinned to 6e0912f979)
Solutions
- Watching the IPN bus for health checks failed; verify tailscaled is up and the local API socket is accessible.
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at kube/health/healthz.go:65 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tailscale/tailscale@6e0912f979 (2026-08-18).
Data as JSON: /api/errors/07f3d2f211c9122c.
Report an issue: GitHub.