diff --git a/pkg/controller/nodeipam/node_ipam_controller.go b/pkg/controller/nodeipam/node_ipam_controller.go index 8f87cf72b1e..c98be2cef01 100644 --- a/pkg/controller/nodeipam/node_ipam_controller.go +++ b/pkg/controller/nodeipam/node_ipam_controller.go @@ -106,13 +106,12 @@ func NewNodeIpamController( metrics.RegisterMetricAndTrackRateLimiterUsage("node_ipam_controller", kubeClient.CoreV1().RESTClient().GetRateLimiter()) } - if clusterCIDR == nil { - klog.Fatal("Controller: Must specify --cluster-cidr if --allocate-node-cidrs is set") - } - mask := clusterCIDR.Mask if allocatorType != ipam.CloudAllocatorType { // Cloud CIDR allocator does not rely on clusterCIDR or nodeCIDRMaskSize for allocation. - if maskSize, _ := mask.Size(); maskSize > nodeCIDRMaskSize { + if clusterCIDR == nil { + klog.Fatal("Controller: Must specify --cluster-cidr if --allocate-node-cidrs is set") + } + if maskSize, _ := clusterCIDR.Mask.Size(); maskSize > nodeCIDRMaskSize { klog.Fatal("Controller: Invalid --cluster-cidr, mask size of cluster CIDR must be less than --node-cidr-mask-size") } } diff --git a/pkg/controller/nodeipam/node_ipam_controller_test.go b/pkg/controller/nodeipam/node_ipam_controller_test.go index 331c19d6646..c44ff60a348 100644 --- a/pkg/controller/nodeipam/node_ipam_controller_test.go +++ b/pkg/controller/nodeipam/node_ipam_controller_test.go @@ -70,7 +70,8 @@ func TestNewNodeIpamControllerWithCIDRMasks(t *testing.T) { {"valid_cloud_allocator", "10.0.0.0/21", "10.1.0.0/21", 24, ipam.CloudAllocatorType, false}, {"valid_ipam_from_cluster", "10.0.0.0/21", "10.1.0.0/21", 24, ipam.IPAMFromClusterAllocatorType, false}, {"valid_ipam_from_cloud", "10.0.0.0/21", "10.1.0.0/21", 24, ipam.IPAMFromCloudAllocatorType, false}, - {"invalid_cluster_CIDR", "invalid", "10.1.0.0/21", 24, ipam.CloudAllocatorType, true}, + {"valid_skip_cluster_CIDR_validation_for_cloud_allocator", "invalid", "10.1.0.0/21", 24, ipam.CloudAllocatorType, false}, + {"invalid_cluster_CIDR", "invalid", "10.1.0.0/21", 24, ipam.IPAMFromClusterAllocatorType, true}, {"valid_CIDR_smaller_than_mask_cloud_allocator", "10.0.0.0/26", "10.1.0.0/21", 24, ipam.CloudAllocatorType, false}, {"invalid_CIDR_smaller_than_mask_other_allocators", "10.0.0.0/26", "10.1.0.0/21", 24, ipam.IPAMFromCloudAllocatorType, true}, } {