CrashLoopBackOff when carrier-grade network address translation (CGNAT) filtering prevents access to the Kubernetes API. Start with the affected Pod’s logs to distinguish this connectivity problem from other causes. Then check its configuration and rollout.
In the following commands, replace [NAMESPACE] with the operator’s namespace, [PROXY-POD] with the affected proxy Pod, and [STATEFULSET] with its owning StatefulSet. The chart guide uses the tailscale namespace.
Check the proxy logs
To inspect the failure that caused a restart, read the previous container’s logs:kubernetes.default.svc or the API server ClusterIP can indicate a CGNAT configuration problem. These timeouts can appear during permission checks or reads of the proxy’s state Secret. A timeout while checking permissions doesn’t establish that Kubernetes denied access. If the logs report a permissions denial or an out-of-memory failure, investigate that error separately.
Check the carrier-grade NAT configuration
Tailscale’s CGNAT drop rule matches traffic from100.64.0.0/10 arriving outside the Tailscale interface. CoreWeave Kubernetes Service (CKS) uses 100.124.0.0/18 within that range for internal services. This filtering can prevent a proxy from reaching the Kubernetes API.
CoreWeave’s customized proxy image supports TS_CGNAT_OVERRIDE_RANGE to exempt the CKS range from this drop rule. This setting is separate from the Tailnet ipPool, which controls address allocation to Tailnet devices.
Check the configuration in your Helm values or GitOps repository:
- Use CoreWeave’s
tailscale-operatorchart and customized images. If an image doesn’t implement the extension, settingTS_CGNAT_OVERRIDE_RANGEdoesn’t provide the exemption. - Identify the ProxyClass selected by the resource that creates the failing proxy. The chart supplies a default ProxyClass with the override, but a resource-specific class replaces that selection rather than inheriting its settings.
- In the selected ProxyClass, set
TS_CGNAT_OVERRIDE_RANGEto100.124.0.0/18while preserving its other configuration. Apply the change through your deployment’s source of truth.
ProxyClass specification excerpt
Check the rollout before recreating a Pod
The operator reconciles ProxyClass changes into the proxy’s StatefulSet. Environment changes require replacement Pods, and StatefulSets use rolling updates by default. Before recreating a Pod, confirm that the StatefulSet’s Pod template contains the corrected proxy image and environment configuration. Inspect the rollout and affected Pod for errors:Ready and its logs no longer show the API connection timeouts:
Check image versions if crashes continue
If API connectivity is restored but the proxy still crashes, inspect the current error and compare the running operator and proxy images with your intended chart configuration:Server Errors