Calico IPAM doesn't use the .spec.podCIDR or .spec.podCIDRs on the Nodes, so there's no need for letting Kubernetes allocate CIDRs for Nodes. Add instructions to tell Calico IPAM users to set --allocate-node-cidrs=false on the Kubernetes controller manager when initializing a cluster. This will suppress Kubernetes' CIDR allocations and leave that job to the CNI IPAM plugin, where it belongs.
It should prevent messages like these from appearing on the Nodes when the Kubernetes controller manager options are misconfigured:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal CIDRNotAvailable 5m9s (x1134 over 13h) cidrAllocator Node worker-0 status is now: CIDRNotAvailable
There's talk among the Kubernetes team of deprecating podCIDR and podCIDRs anyway.
(The above contains speculation. Double check.)
see also: Slack discussion