The container refused to start, and the logs showed one clue: port 8443 already in use.
That number matters when you’re working with sidecar injection. Port 8443 is where the webhook server listens inside your service mesh control plane. If you’ve configured a mutating admission webhook for automatic sidecar injection — Istio, Linkerd, or your own — this is the port Kubernetes uses to talk to the injector. Misunderstanding it can break deployments, slow rollouts, or hide injection failures behind generic error messages.
In most Kubernetes clusters, the sidecar injector runs inside a pod with a secure TLS listener on port 8443. When the API server sends a create request for a pod, it hits this port in the webhook pod. The injector mutates the submitted pod spec, adding the sidecar container, volumes, and init containers your mesh needs. This is how automatic injection works without manual edits to manifests.
If another process or sidecar is bound to 8443, your injector pod can crash or restart in a loop. That means injections fail silently, leaving pods without the expected proxy sidecar. The fallout can be unpredictable: broken mTLS, failed routing, or missing telemetry data. It can also introduce vulnerabilities if the service assumes mesh-level security.