Skip to main content

More Info:

Do not bind the Controller Manager service to non-loopback insecure addresses.

Risk Level

Critical

Address

Security

Compliance Standards

  • CIS Kubernetes

Triage and Remediation

Remediation

Manual Steps

  1. On every control plane node, back up the existing manifest before editing:
  2. Edit the controller manager static pod manifest on that control plane node:
    In the spec.containers[0].command (or args) list, add or update the bind address argument so it reads exactly:
    Ensure there is no other --bind-address entry with a different value.
  3. Save the file and exit the editor. The kubelet will automatically detect the change to /etc/kubernetes/manifests/kube-controller-manager.yaml and restart the kube-controller-manager static pod. This will momentarily restart the controller manager component on that control plane node.
  4. Wait for the controller manager pod to restart and become Ready (run on any machine with kubectl access):
    Confirm the pod corresponding to this control plane node is in Running and Ready status.
  5. Verify the controller manager process is now using the loopback bind address on that control plane node:
    Confirm the output includes --bind-address=127.0.0.1 and does not show --bind-address with any other IP.
kubectl cannot modify the kube-controller-manager static pod manifest or its process flags. To remediate this finding, you must edit /etc/kubernetes/manifests/kube-controller-manager.yaml directly on every control plane node; see the Manual Steps section for exact instructions.

Additional Reading: