Skip to content

Commit 96f7788

Browse files
author
Kubernetes Submit Queue
authored
Merge pull request kubernetes#48797 from FengyunPan/fix-empty-cidr
Automatic merge from submit-queue (batch tested with PRs 48231, 47377, 48797, 49020, 49033) Fix parsing empty CIDR Fix kubernetes#48795 Checking ClusterCIDR and ServiceCIDR before parsing them. **Release note**: ```release-note NONE ```
2 parents 34e48e3 + dfc8b66 commit 96f7788

File tree

3 files changed

+30
-11
lines changed

3 files changed

+30
-11
lines changed

cmd/cloud-controller-manager/app/controllermanager.go

+9-5
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"os"
2525
goruntime "runtime"
2626
"strconv"
27+
"strings"
2728
"time"
2829

2930
clientv1 "k8s.io/api/core/v1"
@@ -209,11 +210,6 @@ func StartControllers(s *options.CloudControllerManagerServer, kubeconfig *restc
209210
versionedClient := client("shared-informers")
210211
sharedInformers := informers.NewSharedInformerFactory(versionedClient, resyncPeriod(s)())
211212

212-
_, clusterCIDR, err := net.ParseCIDR(s.ClusterCIDR)
213-
if err != nil {
214-
glog.Warningf("Unsuccessful parsing of cluster CIDR %v: %v", s.ClusterCIDR, err)
215-
}
216-
217213
// Start the CloudNodeController
218214
nodeController := nodecontroller.NewCloudNodeController(
219215
sharedInformers.Core().V1().Nodes(),
@@ -244,6 +240,14 @@ func StartControllers(s *options.CloudControllerManagerServer, kubeconfig *restc
244240
if routes, ok := cloud.Routes(); !ok {
245241
glog.Warning("configure-cloud-routes is set, but cloud provider does not support routes. Will not configure cloud provider routes.")
246242
} else {
243+
var clusterCIDR *net.IPNet
244+
if len(strings.TrimSpace(s.ClusterCIDR)) != 0 {
245+
_, clusterCIDR, err = net.ParseCIDR(s.ClusterCIDR)
246+
if err != nil {
247+
glog.Warningf("Unsuccessful parsing of cluster CIDR %v: %v", s.ClusterCIDR, err)
248+
}
249+
}
250+
247251
routeController := routecontroller.New(routes, client("route-controller"), sharedInformers.Core().V1().Nodes(), s.ClusterName, clusterCIDR)
248252
go routeController.Run(stop, s.RouteReconciliationPeriod.Duration)
249253
time.Sleep(wait.Jitter(s.ControllerStartInterval.Duration, ControllerStartJitter))

cmd/kube-controller-manager/app/core.go

+16-6
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ package app
2323
import (
2424
"fmt"
2525
"net"
26+
"strings"
2627
"time"
2728

2829
"github.com/golang/glog"
@@ -74,14 +75,23 @@ func startServiceController(ctx ControllerContext) (bool, error) {
7475
}
7576

7677
func startNodeController(ctx ControllerContext) (bool, error) {
77-
_, clusterCIDR, err := net.ParseCIDR(ctx.Options.ClusterCIDR)
78-
if err != nil {
79-
glog.Warningf("Unsuccessful parsing of cluster CIDR %v: %v", ctx.Options.ClusterCIDR, err)
78+
var clusterCIDR *net.IPNet
79+
var err error
80+
if len(strings.TrimSpace(ctx.Options.ClusterCIDR)) != 0 {
81+
_, clusterCIDR, err = net.ParseCIDR(ctx.Options.ClusterCIDR)
82+
if err != nil {
83+
glog.Warningf("Unsuccessful parsing of cluster CIDR %v: %v", ctx.Options.ClusterCIDR, err)
84+
}
8085
}
81-
_, serviceCIDR, err := net.ParseCIDR(ctx.Options.ServiceCIDR)
82-
if err != nil {
83-
glog.Warningf("Unsuccessful parsing of service CIDR %v: %v", ctx.Options.ServiceCIDR, err)
86+
87+
var serviceCIDR *net.IPNet
88+
if len(strings.TrimSpace(ctx.Options.ServiceCIDR)) != 0 {
89+
_, serviceCIDR, err = net.ParseCIDR(ctx.Options.ServiceCIDR)
90+
if err != nil {
91+
glog.Warningf("Unsuccessful parsing of service CIDR %v: %v", ctx.Options.ServiceCIDR, err)
92+
}
8493
}
94+
8595
nodeController, err := nodecontroller.NewNodeController(
8696
ctx.InformerFactory.Core().V1().Pods(),
8797
ctx.InformerFactory.Core().V1().Nodes(),

pkg/controller/route/routecontroller.go

+5
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,11 @@ func New(routes cloudprovider.Routes, kubeClient clientset.Interface, nodeInform
6464
if kubeClient != nil && kubeClient.Core().RESTClient().GetRateLimiter() != nil {
6565
metrics.RegisterMetricAndTrackRateLimiterUsage("route_controller", kubeClient.Core().RESTClient().GetRateLimiter())
6666
}
67+
68+
if clusterCIDR == nil {
69+
glog.Fatal("RouteController: Must specify clusterCIDR.")
70+
}
71+
6772
rc := &RouteController{
6873
routes: routes,
6974
kubeClient: kubeClient,

0 commit comments

Comments
 (0)