Local Cloud Controller Manager
Node IP detection and lifecycle management for multi-location clusters.
The local-ccm package provides a lightweight cloud controller manager for self-managed clusters.
It handles node IP detection and node lifecycle without requiring an external cloud provider.
What it does
- External IP detection: Detects each node’s external IP via
ip route get(default target:8.8.8.8) - Node initialization: Removes the
node.cloudprovider.kubernetes.io/uninitializedtaint so pods can be scheduled - Node lifecycle controller (optional): Monitors NotReady nodes via ICMP ping and removes them after a configurable timeout
Install
cozypkg add cozystack.local-ccm
Talos machine config
All nodes in the cluster (including control plane) must have cloud-provider: external set
so that kubelet defers node initialization to the cloud controller manager:
machine:
kubelet:
extraArgs:
cloud-provider: external
Important
Thecloud-provider: external setting must be present on all nodes in the cluster,
including control plane nodes. Without it, the cluster-autoscaler cannot match Kubernetes
nodes to cloud provider instances (e.g. Azure VMSS).