Add tip: set --allocate-node-cidrs=false with Calico IPAM#2589
Add tip: set --allocate-node-cidrs=false with Calico IPAM#2589ctauchen merged 1 commit intotigera:mainfrom
Conversation
Closes tigera#1885. When using Calico IPAM, Kubernetes node CIDR allocation is unnecessary and can produce confusing CIDRNotAvailable events. Add a tip to the IPAM getting-started page across all products and versions. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
✅ Deploy Preview for calico-docs-preview-next ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
✅ Deploy Preview succeeded!Built without sensitive environment variables
To edit notification comments on pull requests, go to your Netlify project configuration. |
| Because Calico IPAM does not use the Kubernetes node CIDR allocations (`Node.spec.podCIDR`), you can set `--allocate-node-cidrs=false` on the kube-controller-manager. | ||
| This prevents Kubernetes from allocating unused node CIDRs and avoids `CIDRNotAvailable` events on nodes. | ||
|
|
||
| If you bootstrapped your cluster with kubeadm and passed `--pod-network-cidr`, kubeadm enables node CIDR allocation automatically. |
There was a problem hiding this comment.
Might want to rephrase this - it sort of implies that you shouldn't pass pod-network-cidr, but that argument is useful for other reasons.
There was a problem hiding this comment.
Pull request overview
Adds documentation guidance for Calico IPAM users to disable Kubernetes node CIDR allocation (--allocate-node-cidrs=false) to avoid unused allocations and noisy CIDRNotAvailable events, with kubeadm reconfiguration guidance. This aligns the IPAM getting-started docs across OSS, Enterprise, and Cloud (including versioned docs).
Changes:
- Add a
:::tipexplaining why/how to set--allocate-node-cidrs=falsewhen using Calico IPAM. - Add kubeadm-specific note about
--pod-network-cidrenabling node CIDR allocation and link to Kubernetes reconfiguration docs.
Reviewed changes
Copilot reviewed 11 out of 11 changed files in this pull request and generated 11 comments.
Show a summary per file
| File | Description |
|---|---|
| calico/networking/ipam/get-started-ip-addresses.mdx | Adds the new tip to the unversioned Calico OSS IPAM getting-started page. |
| calico_versioned_docs/version-3.31/networking/ipam/get-started-ip-addresses.mdx | Adds the new tip to Calico OSS v3.31 docs. |
| calico_versioned_docs/version-3.30/networking/ipam/get-started-ip-addresses.mdx | Adds the new tip to Calico OSS v3.30 docs. |
| calico_versioned_docs/version-3.29/networking/ipam/get-started-ip-addresses.mdx | Adds the new tip to Calico OSS v3.29 docs. |
| calico-enterprise/networking/ipam/get-started-ip-addresses.mdx | Adds the new tip to the unversioned Calico Enterprise IPAM getting-started page. |
| calico-enterprise_versioned_docs/version-3.23-1/networking/ipam/get-started-ip-addresses.mdx | Adds the new tip to Calico Enterprise v3.23-1 docs. |
| calico-enterprise_versioned_docs/version-3.22-2/networking/ipam/get-started-ip-addresses.mdx | Adds the new tip to Calico Enterprise v3.22-2 docs. |
| calico-enterprise_versioned_docs/version-3.21-2/networking/ipam/get-started-ip-addresses.mdx | Adds the new tip to Calico Enterprise v3.21-2 docs. |
| calico-enterprise_versioned_docs/version-3.20-2/networking/ipam/get-started-ip-addresses.mdx | Adds the new tip to Calico Enterprise v3.20-2 docs. |
| calico-cloud/networking/ipam/get-started-ip-addresses.mdx | Adds the new tip to the unversioned Calico Cloud IPAM getting-started page. |
| calico-cloud_versioned_docs/version-22-2/networking/ipam/get-started-ip-addresses.mdx | Adds the new tip to Calico Cloud v22-2 docs. |
| Because Calico IPAM does not use the Kubernetes node CIDR allocations (`Node.spec.podCIDR`), you can set `--allocate-node-cidrs=false` on the kube-controller-manager. | ||
| This prevents Kubernetes from allocating unused node CIDRs and avoids `CIDRNotAvailable` events on nodes. | ||
|
|
||
| If you bootstrapped your cluster with kubeadm and passed `--pod-network-cidr`, kubeadm enables node CIDR allocation automatically. | ||
| See the [Kubernetes documentation](https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-reconfigure/) for instructions on reconfiguring the controller manager after cluster creation. |
There was a problem hiding this comment.
The tip calls this out as "Calico IPAM" and references Node.spec.podCIDR, but later on this page the host-local IPAM section states it uses Node.Spec.PodCIDR. To prevent readers from thinking this applies to host-local too, reword the tip to explicitly scope it to the calico-ipam plugin and use consistent field notation (and optionally mention podCIDRs for dual-stack).
| Because Calico IPAM does not use the Kubernetes node CIDR allocations (`Node.spec.podCIDR`), you can set `--allocate-node-cidrs=false` on the kube-controller-manager. | ||
| This prevents Kubernetes from allocating unused node CIDRs and avoids `CIDRNotAvailable` events on nodes. | ||
|
|
||
| If you bootstrapped your cluster with kubeadm and passed `--pod-network-cidr`, kubeadm enables node CIDR allocation automatically. | ||
| See the [Kubernetes documentation](https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-reconfigure/) for instructions on reconfiguring the controller manager after cluster creation. |
There was a problem hiding this comment.
The new tip says Calico IPAM doesn’t use Node.spec.podCIDR, but later on the page host-local IPAM is documented as using Node.Spec.PodCIDR. To avoid a confusing contradiction, please scope the tip text to the calico-ipam plugin and keep the Node field naming consistent (and optionally mention podCIDRs for dual-stack).
| Because Calico IPAM does not use the Kubernetes node CIDR allocations (`Node.spec.podCIDR`), you can set `--allocate-node-cidrs=false` on the kube-controller-manager. | ||
| This prevents Kubernetes from allocating unused node CIDRs and avoids `CIDRNotAvailable` events on nodes. | ||
|
|
||
| If you bootstrapped your cluster with kubeadm and passed `--pod-network-cidr`, kubeadm enables node CIDR allocation automatically. | ||
| See the [Kubernetes documentation](https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-reconfigure/) for instructions on reconfiguring the controller manager after cluster creation. |
There was a problem hiding this comment.
The tip states Calico IPAM doesn’t use the Kubernetes node CIDR allocation (Node.spec.podCIDR), but the same page later documents host-local IPAM using Node.Spec.PodCIDR. Please clarify the tip applies specifically to the calico-ipam plugin and keep field naming consistent (and optionally mention podCIDRs for dual-stack).
| Because Calico IPAM does not use the Kubernetes node CIDR allocations (`Node.spec.podCIDR`), you can set `--allocate-node-cidrs=false` on the kube-controller-manager. | ||
| This prevents Kubernetes from allocating unused node CIDRs and avoids `CIDRNotAvailable` events on nodes. | ||
|
|
||
| If you bootstrapped your cluster with kubeadm and passed `--pod-network-cidr`, kubeadm enables node CIDR allocation automatically. | ||
| See the [Kubernetes documentation](https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-reconfigure/) for instructions on reconfiguring the controller manager after cluster creation. |
There was a problem hiding this comment.
The tip calls this out as "Calico IPAM" and references Node.spec.podCIDR, but later on this page the host-local IPAM section explicitly states it does use Node.Spec.PodCIDR. To avoid a confusing contradiction, consider rewording the tip to explicitly scope it to the calico-ipam plugin and align the field notation/capitalization (and optionally mention podCIDRs for dual-stack).
| Because Calico IPAM does not use the Kubernetes node CIDR allocations (`Node.spec.podCIDR`), you can set `--allocate-node-cidrs=false` on the kube-controller-manager. | ||
| This prevents Kubernetes from allocating unused node CIDRs and avoids `CIDRNotAvailable` events on nodes. | ||
|
|
||
| If you bootstrapped your cluster with kubeadm and passed `--pod-network-cidr`, kubeadm enables node CIDR allocation automatically. | ||
| See the [Kubernetes documentation](https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-reconfigure/) for instructions on reconfiguring the controller manager after cluster creation. |
There was a problem hiding this comment.
This tip says Calico IPAM doesn’t use Kubernetes node CIDR allocations and references Node.spec.podCIDR, but the same page later describes host-local IPAM using Node.Spec.PodCIDR. To avoid confusion, please explicitly scope the tip to the calico-ipam plugin and keep the Node field notation consistent (and optionally mention podCIDRs for dual-stack).
| Because Calico IPAM does not use the Kubernetes node CIDR allocations (`Node.spec.podCIDR`), you can set `--allocate-node-cidrs=false` on the kube-controller-manager. | ||
| This prevents Kubernetes from allocating unused node CIDRs and avoids `CIDRNotAvailable` events on nodes. | ||
|
|
||
| If you bootstrapped your cluster with kubeadm and passed `--pod-network-cidr`, kubeadm enables node CIDR allocation automatically. | ||
| See the [Kubernetes documentation](https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-reconfigure/) for instructions on reconfiguring the controller manager after cluster creation. |
There was a problem hiding this comment.
This tip is phrased as “Calico IPAM” and references Node.spec.podCIDR, but later the host-local section calls out Node.Spec.PodCIDR as being used. To avoid users thinking the recommendation applies to host-local IPAM too, please reword to explicitly scope it to the calico-ipam plugin and use consistent Node field notation (and optionally mention podCIDRs for dual-stack).
| Because Calico IPAM does not use the Kubernetes node CIDR allocations (`Node.spec.podCIDR`), you can set `--allocate-node-cidrs=false` on the kube-controller-manager. | ||
| This prevents Kubernetes from allocating unused node CIDRs and avoids `CIDRNotAvailable` events on nodes. | ||
|
|
||
| If you bootstrapped your cluster with kubeadm and passed `--pod-network-cidr`, kubeadm enables node CIDR allocation automatically. | ||
| See the [Kubernetes documentation](https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-reconfigure/) for instructions on reconfiguring the controller manager after cluster creation. |
There was a problem hiding this comment.
This tip references Node.spec.podCIDR and is phrased generally as “Calico IPAM”, but later the same page describes host-local IPAM using Node.Spec.PodCIDR. Please make the tip explicitly about the calico-ipam plugin and align the Node field notation/capitalization (and optionally mention podCIDRs for dual-stack).
| Because Calico IPAM does not use the Kubernetes node CIDR allocations (`Node.spec.podCIDR`), you can set `--allocate-node-cidrs=false` on the kube-controller-manager. | ||
| This prevents Kubernetes from allocating unused node CIDRs and avoids `CIDRNotAvailable` events on nodes. | ||
|
|
||
| If you bootstrapped your cluster with kubeadm and passed `--pod-network-cidr`, kubeadm enables node CIDR allocation automatically. | ||
| See the [Kubernetes documentation](https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-reconfigure/) for instructions on reconfiguring the controller manager after cluster creation. |
There was a problem hiding this comment.
This new tip is easy to misread as applying to all IPAM modes, but later the host-local IPAM section says it uses Node.Spec.PodCIDR. Please rephrase the tip to explicitly apply only when using the calico-ipam plugin and use consistent Node field notation (and optionally mention podCIDRs for dual-stack).
| Because Calico IPAM does not use the Kubernetes node CIDR allocations (`Node.spec.podCIDR`), you can set `--allocate-node-cidrs=false` on the kube-controller-manager. | ||
| This prevents Kubernetes from allocating unused node CIDRs and avoids `CIDRNotAvailable` events on nodes. | ||
|
|
||
| If you bootstrapped your cluster with kubeadm and passed `--pod-network-cidr`, kubeadm enables node CIDR allocation automatically. | ||
| See the [Kubernetes documentation](https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-reconfigure/) for instructions on reconfiguring the controller manager after cluster creation. |
There was a problem hiding this comment.
The new tip says Calico IPAM doesn’t use Node.spec.podCIDR, but later this page documents host-local IPAM using Node.Spec.PodCIDR. To avoid readers thinking the tip applies to host-local (or Calico generally), please scope it explicitly to the calico-ipam plugin and use consistent Node field notation (and optionally mention podCIDRs for dual-stack).
| Because Calico IPAM does not use the Kubernetes node CIDR allocations (`Node.spec.podCIDR`), you can set `--allocate-node-cidrs=false` on the kube-controller-manager. | ||
| This prevents Kubernetes from allocating unused node CIDRs and avoids `CIDRNotAvailable` events on nodes. | ||
|
|
||
| If you bootstrapped your cluster with kubeadm and passed `--pod-network-cidr`, kubeadm enables node CIDR allocation automatically. | ||
| See the [Kubernetes documentation](https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-reconfigure/) for instructions on reconfiguring the controller manager after cluster creation. |
There was a problem hiding this comment.
This new tip references Node.spec.podCIDR and is phrased as “Calico IPAM”, but later the page states host-local IPAM uses Node.Spec.PodCIDR. Please reword the tip to explicitly apply only to the calico-ipam plugin and align the Node field notation/capitalization (and optionally mention podCIDRs for dual-stack).

Summary
--allocate-node-cidrs=falseshould be set on the kube-controller-manager when using Calico IPAMNode.spec.podCIDR, so Kubernetes node CIDR allocation is unnecessary and can produce confusingCIDRNotAvailableeventsApplied across all products (Calico, Calico Enterprise, Calico Cloud) and all versions.
Closes #1885
Test plan
🤖 Generated with Claude Code