From 9329231c000cec4a9a997bc67030521de80ca0a3 Mon Sep 17 00:00:00 2001 From: Christopher Tauchen Date: Thu, 12 Mar 2026 17:12:33 +0000 Subject: [PATCH] Add tip about setting --allocate-node-cidrs=false with Calico IPAM Closes #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 --- .../networking/ipam/get-started-ip-addresses.mdx | 10 ++++++++++ .../networking/ipam/get-started-ip-addresses.mdx | 10 ++++++++++ .../networking/ipam/get-started-ip-addresses.mdx | 10 ++++++++++ .../networking/ipam/get-started-ip-addresses.mdx | 10 ++++++++++ .../networking/ipam/get-started-ip-addresses.mdx | 10 ++++++++++ .../networking/ipam/get-started-ip-addresses.mdx | 10 ++++++++++ .../networking/ipam/get-started-ip-addresses.mdx | 10 ++++++++++ calico/networking/ipam/get-started-ip-addresses.mdx | 10 ++++++++++ .../networking/ipam/get-started-ip-addresses.mdx | 10 ++++++++++ .../networking/ipam/get-started-ip-addresses.mdx | 10 ++++++++++ .../networking/ipam/get-started-ip-addresses.mdx | 10 ++++++++++ 11 files changed, 110 insertions(+) diff --git a/calico-cloud/networking/ipam/get-started-ip-addresses.mdx b/calico-cloud/networking/ipam/get-started-ip-addresses.mdx index b3a7f0e6bb..fdfa55a284 100644 --- a/calico-cloud/networking/ipam/get-started-ip-addresses.mdx +++ b/calico-cloud/networking/ipam/get-started-ip-addresses.mdx @@ -24,6 +24,16 @@ The **calico-ipam** plugin uses $[prodname]’s IP pool resource to control how By default, $[prodname] uses a single IP pool for the entire Kubernetes pod CIDR, but you can divide the pod CIDR into several pools. You can assign separate IP pools to particular selections of **nodes**, or to teams, users, or applications within a cluster using **namespaces**. +:::tip + +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. + +::: + You can control which pools $[prodname] uses for each pod using - node selectors diff --git a/calico-cloud_versioned_docs/version-22-2/networking/ipam/get-started-ip-addresses.mdx b/calico-cloud_versioned_docs/version-22-2/networking/ipam/get-started-ip-addresses.mdx index b3a7f0e6bb..fdfa55a284 100644 --- a/calico-cloud_versioned_docs/version-22-2/networking/ipam/get-started-ip-addresses.mdx +++ b/calico-cloud_versioned_docs/version-22-2/networking/ipam/get-started-ip-addresses.mdx @@ -24,6 +24,16 @@ The **calico-ipam** plugin uses $[prodname]’s IP pool resource to control how By default, $[prodname] uses a single IP pool for the entire Kubernetes pod CIDR, but you can divide the pod CIDR into several pools. You can assign separate IP pools to particular selections of **nodes**, or to teams, users, or applications within a cluster using **namespaces**. +:::tip + +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. + +::: + You can control which pools $[prodname] uses for each pod using - node selectors diff --git a/calico-enterprise/networking/ipam/get-started-ip-addresses.mdx b/calico-enterprise/networking/ipam/get-started-ip-addresses.mdx index eb5fafed11..1d912c14fc 100644 --- a/calico-enterprise/networking/ipam/get-started-ip-addresses.mdx +++ b/calico-enterprise/networking/ipam/get-started-ip-addresses.mdx @@ -24,6 +24,16 @@ The **calico-ipam** plugin uses $[prodname]’s IP pool resource to control how By default, $[prodname] uses a single IP pool for the entire Kubernetes pod CIDR, but you can divide the pod CIDR into several pools. You can assign separate IP pools to particular selections of **nodes**, or to teams, users, or applications within a cluster using **namespaces**. +:::tip + +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. + +::: + You can control which pools $[prodname] uses for each pod using - node selectors diff --git a/calico-enterprise_versioned_docs/version-3.20-2/networking/ipam/get-started-ip-addresses.mdx b/calico-enterprise_versioned_docs/version-3.20-2/networking/ipam/get-started-ip-addresses.mdx index eb5fafed11..1d912c14fc 100644 --- a/calico-enterprise_versioned_docs/version-3.20-2/networking/ipam/get-started-ip-addresses.mdx +++ b/calico-enterprise_versioned_docs/version-3.20-2/networking/ipam/get-started-ip-addresses.mdx @@ -24,6 +24,16 @@ The **calico-ipam** plugin uses $[prodname]’s IP pool resource to control how By default, $[prodname] uses a single IP pool for the entire Kubernetes pod CIDR, but you can divide the pod CIDR into several pools. You can assign separate IP pools to particular selections of **nodes**, or to teams, users, or applications within a cluster using **namespaces**. +:::tip + +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. + +::: + You can control which pools $[prodname] uses for each pod using - node selectors diff --git a/calico-enterprise_versioned_docs/version-3.21-2/networking/ipam/get-started-ip-addresses.mdx b/calico-enterprise_versioned_docs/version-3.21-2/networking/ipam/get-started-ip-addresses.mdx index eb5fafed11..1d912c14fc 100644 --- a/calico-enterprise_versioned_docs/version-3.21-2/networking/ipam/get-started-ip-addresses.mdx +++ b/calico-enterprise_versioned_docs/version-3.21-2/networking/ipam/get-started-ip-addresses.mdx @@ -24,6 +24,16 @@ The **calico-ipam** plugin uses $[prodname]’s IP pool resource to control how By default, $[prodname] uses a single IP pool for the entire Kubernetes pod CIDR, but you can divide the pod CIDR into several pools. You can assign separate IP pools to particular selections of **nodes**, or to teams, users, or applications within a cluster using **namespaces**. +:::tip + +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. + +::: + You can control which pools $[prodname] uses for each pod using - node selectors diff --git a/calico-enterprise_versioned_docs/version-3.22-2/networking/ipam/get-started-ip-addresses.mdx b/calico-enterprise_versioned_docs/version-3.22-2/networking/ipam/get-started-ip-addresses.mdx index eb5fafed11..1d912c14fc 100644 --- a/calico-enterprise_versioned_docs/version-3.22-2/networking/ipam/get-started-ip-addresses.mdx +++ b/calico-enterprise_versioned_docs/version-3.22-2/networking/ipam/get-started-ip-addresses.mdx @@ -24,6 +24,16 @@ The **calico-ipam** plugin uses $[prodname]’s IP pool resource to control how By default, $[prodname] uses a single IP pool for the entire Kubernetes pod CIDR, but you can divide the pod CIDR into several pools. You can assign separate IP pools to particular selections of **nodes**, or to teams, users, or applications within a cluster using **namespaces**. +:::tip + +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. + +::: + You can control which pools $[prodname] uses for each pod using - node selectors diff --git a/calico-enterprise_versioned_docs/version-3.23-1/networking/ipam/get-started-ip-addresses.mdx b/calico-enterprise_versioned_docs/version-3.23-1/networking/ipam/get-started-ip-addresses.mdx index eb5fafed11..1d912c14fc 100644 --- a/calico-enterprise_versioned_docs/version-3.23-1/networking/ipam/get-started-ip-addresses.mdx +++ b/calico-enterprise_versioned_docs/version-3.23-1/networking/ipam/get-started-ip-addresses.mdx @@ -24,6 +24,16 @@ The **calico-ipam** plugin uses $[prodname]’s IP pool resource to control how By default, $[prodname] uses a single IP pool for the entire Kubernetes pod CIDR, but you can divide the pod CIDR into several pools. You can assign separate IP pools to particular selections of **nodes**, or to teams, users, or applications within a cluster using **namespaces**. +:::tip + +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. + +::: + You can control which pools $[prodname] uses for each pod using - node selectors diff --git a/calico/networking/ipam/get-started-ip-addresses.mdx b/calico/networking/ipam/get-started-ip-addresses.mdx index 08f9be302a..b0c933773e 100644 --- a/calico/networking/ipam/get-started-ip-addresses.mdx +++ b/calico/networking/ipam/get-started-ip-addresses.mdx @@ -24,6 +24,16 @@ The **calico-ipam** plugin uses Calico’s IP pool resource to control how IP ad By default, Calico uses a single IP pool for the entire Kubernetes pod CIDR, but you can divide the pod CIDR into several pools. You can assign separate IP pools to particular selections of **nodes**, or to teams, users, or applications within a cluster using **namespaces**. +:::tip + +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. + +::: + You can control which pools Calico uses for each pod using - node selectors diff --git a/calico_versioned_docs/version-3.29/networking/ipam/get-started-ip-addresses.mdx b/calico_versioned_docs/version-3.29/networking/ipam/get-started-ip-addresses.mdx index 08f9be302a..b0c933773e 100644 --- a/calico_versioned_docs/version-3.29/networking/ipam/get-started-ip-addresses.mdx +++ b/calico_versioned_docs/version-3.29/networking/ipam/get-started-ip-addresses.mdx @@ -24,6 +24,16 @@ The **calico-ipam** plugin uses Calico’s IP pool resource to control how IP ad By default, Calico uses a single IP pool for the entire Kubernetes pod CIDR, but you can divide the pod CIDR into several pools. You can assign separate IP pools to particular selections of **nodes**, or to teams, users, or applications within a cluster using **namespaces**. +:::tip + +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. + +::: + You can control which pools Calico uses for each pod using - node selectors diff --git a/calico_versioned_docs/version-3.30/networking/ipam/get-started-ip-addresses.mdx b/calico_versioned_docs/version-3.30/networking/ipam/get-started-ip-addresses.mdx index 08f9be302a..b0c933773e 100644 --- a/calico_versioned_docs/version-3.30/networking/ipam/get-started-ip-addresses.mdx +++ b/calico_versioned_docs/version-3.30/networking/ipam/get-started-ip-addresses.mdx @@ -24,6 +24,16 @@ The **calico-ipam** plugin uses Calico’s IP pool resource to control how IP ad By default, Calico uses a single IP pool for the entire Kubernetes pod CIDR, but you can divide the pod CIDR into several pools. You can assign separate IP pools to particular selections of **nodes**, or to teams, users, or applications within a cluster using **namespaces**. +:::tip + +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. + +::: + You can control which pools Calico uses for each pod using - node selectors diff --git a/calico_versioned_docs/version-3.31/networking/ipam/get-started-ip-addresses.mdx b/calico_versioned_docs/version-3.31/networking/ipam/get-started-ip-addresses.mdx index 08f9be302a..b0c933773e 100644 --- a/calico_versioned_docs/version-3.31/networking/ipam/get-started-ip-addresses.mdx +++ b/calico_versioned_docs/version-3.31/networking/ipam/get-started-ip-addresses.mdx @@ -24,6 +24,16 @@ The **calico-ipam** plugin uses Calico’s IP pool resource to control how IP ad By default, Calico uses a single IP pool for the entire Kubernetes pod CIDR, but you can divide the pod CIDR into several pools. You can assign separate IP pools to particular selections of **nodes**, or to teams, users, or applications within a cluster using **namespaces**. +:::tip + +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. + +::: + You can control which pools Calico uses for each pod using - node selectors