When you create a Kubernetes namespace, you can specify subnets for the namespace with the annotation ncp/subnets if SNAT is not configured for the namespace. The subnets will be used to allocate IP addresses to the pods in the namespace.
To enable this feature, set enable_namespace_subnets to True
under the [K8s]
section in ncp.ini. The default is False
. Once set to True
, you must not set it back to False
.
Details about this feature:
- The value of the ncp/subnets annotation should be a comma-separated list of IP addresses in CIDR format.
- You can update the annotation with additional subnets.
- If a pod is created in the namespace and no IP address from the subnets is available, the namespace is annotated with the error NAMESPACE_SUBNETS_EXHAUSTED. You can update the ncp/subnets annotation with additional subnets and the pod will be allocated an IP address.
- You can remove a subnet from the annotation if no IP address has been allocated from it.
- This feature is only supported in policy mode.
- This feature is only supported for new namespaces.
- Adding the annotation to an existing namespace is not supported. The namespace will be annotated with the error SUBNETS_ON_EXISTING_NAMESPACE_NOT_SUPPORTED.
- Removing the annotation is not supported. If you remove the annotation, NCP will add it back and log a warning in the NCP log.
- This feature is not supported on Tanzu Application Service (TAS), Tanzu Kubernetes Grid Integrated (TKGI), or vSphere with Kubernetes.
- Both IPv4 and IPv6 are supported.
- Removing a subnet from the annotation will be ignored if an IP address from the subnet has been allocated. NCP will add the subnet back and log an error.