mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 03:11:40 +00:00
Fix parsing empty CIDR
Fix #48795 Checking ClusterCIDR and ServiceCIDR before parsing them.
This commit is contained in:
parent
e11020fa39
commit
dfc8b667a2
@ -24,6 +24,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
goruntime "runtime"
|
goruntime "runtime"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
clientv1 "k8s.io/api/core/v1"
|
clientv1 "k8s.io/api/core/v1"
|
||||||
@ -208,11 +209,6 @@ func StartControllers(s *options.CloudControllerManagerServer, kubeconfig *restc
|
|||||||
versionedClient := client("shared-informers")
|
versionedClient := client("shared-informers")
|
||||||
sharedInformers := informers.NewSharedInformerFactory(versionedClient, resyncPeriod(s)())
|
sharedInformers := informers.NewSharedInformerFactory(versionedClient, resyncPeriod(s)())
|
||||||
|
|
||||||
_, clusterCIDR, err := net.ParseCIDR(s.ClusterCIDR)
|
|
||||||
if err != nil {
|
|
||||||
glog.Warningf("Unsuccessful parsing of cluster CIDR %v: %v", s.ClusterCIDR, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Start the CloudNodeController
|
// Start the CloudNodeController
|
||||||
nodeController := nodecontroller.NewCloudNodeController(
|
nodeController := nodecontroller.NewCloudNodeController(
|
||||||
sharedInformers.Core().V1().Nodes(),
|
sharedInformers.Core().V1().Nodes(),
|
||||||
@ -243,6 +239,14 @@ func StartControllers(s *options.CloudControllerManagerServer, kubeconfig *restc
|
|||||||
if routes, ok := cloud.Routes(); !ok {
|
if routes, ok := cloud.Routes(); !ok {
|
||||||
glog.Warning("configure-cloud-routes is set, but cloud provider does not support routes. Will not configure cloud provider routes.")
|
glog.Warning("configure-cloud-routes is set, but cloud provider does not support routes. Will not configure cloud provider routes.")
|
||||||
} else {
|
} else {
|
||||||
|
var clusterCIDR *net.IPNet
|
||||||
|
if len(strings.TrimSpace(s.ClusterCIDR)) != 0 {
|
||||||
|
_, clusterCIDR, err = net.ParseCIDR(s.ClusterCIDR)
|
||||||
|
if err != nil {
|
||||||
|
glog.Warningf("Unsuccessful parsing of cluster CIDR %v: %v", s.ClusterCIDR, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
routeController := routecontroller.New(routes, client("route-controller"), sharedInformers.Core().V1().Nodes(), s.ClusterName, clusterCIDR)
|
routeController := routecontroller.New(routes, client("route-controller"), sharedInformers.Core().V1().Nodes(), s.ClusterName, clusterCIDR)
|
||||||
go routeController.Run(stop, s.RouteReconciliationPeriod.Duration)
|
go routeController.Run(stop, s.RouteReconciliationPeriod.Duration)
|
||||||
time.Sleep(wait.Jitter(s.ControllerStartInterval.Duration, ControllerStartJitter))
|
time.Sleep(wait.Jitter(s.ControllerStartInterval.Duration, ControllerStartJitter))
|
||||||
|
@ -23,6 +23,7 @@ package app
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
@ -71,14 +72,23 @@ func startServiceController(ctx ControllerContext) (bool, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func startNodeController(ctx ControllerContext) (bool, error) {
|
func startNodeController(ctx ControllerContext) (bool, error) {
|
||||||
_, clusterCIDR, err := net.ParseCIDR(ctx.Options.ClusterCIDR)
|
var clusterCIDR *net.IPNet
|
||||||
if err != nil {
|
var err error
|
||||||
glog.Warningf("Unsuccessful parsing of cluster CIDR %v: %v", ctx.Options.ClusterCIDR, err)
|
if len(strings.TrimSpace(ctx.Options.ClusterCIDR)) != 0 {
|
||||||
|
_, clusterCIDR, err = net.ParseCIDR(ctx.Options.ClusterCIDR)
|
||||||
|
if err != nil {
|
||||||
|
glog.Warningf("Unsuccessful parsing of cluster CIDR %v: %v", ctx.Options.ClusterCIDR, err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
_, serviceCIDR, err := net.ParseCIDR(ctx.Options.ServiceCIDR)
|
|
||||||
if err != nil {
|
var serviceCIDR *net.IPNet
|
||||||
glog.Warningf("Unsuccessful parsing of service CIDR %v: %v", ctx.Options.ServiceCIDR, err)
|
if len(strings.TrimSpace(ctx.Options.ServiceCIDR)) != 0 {
|
||||||
|
_, serviceCIDR, err = net.ParseCIDR(ctx.Options.ServiceCIDR)
|
||||||
|
if err != nil {
|
||||||
|
glog.Warningf("Unsuccessful parsing of service CIDR %v: %v", ctx.Options.ServiceCIDR, err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nodeController, err := nodecontroller.NewNodeController(
|
nodeController, err := nodecontroller.NewNodeController(
|
||||||
ctx.InformerFactory.Core().V1().Pods(),
|
ctx.InformerFactory.Core().V1().Pods(),
|
||||||
ctx.InformerFactory.Core().V1().Nodes(),
|
ctx.InformerFactory.Core().V1().Nodes(),
|
||||||
|
@ -64,6 +64,11 @@ func New(routes cloudprovider.Routes, kubeClient clientset.Interface, nodeInform
|
|||||||
if kubeClient != nil && kubeClient.Core().RESTClient().GetRateLimiter() != nil {
|
if kubeClient != nil && kubeClient.Core().RESTClient().GetRateLimiter() != nil {
|
||||||
metrics.RegisterMetricAndTrackRateLimiterUsage("route_controller", kubeClient.Core().RESTClient().GetRateLimiter())
|
metrics.RegisterMetricAndTrackRateLimiterUsage("route_controller", kubeClient.Core().RESTClient().GetRateLimiter())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if clusterCIDR == nil {
|
||||||
|
glog.Fatal("RouteController: Must specify clusterCIDR.")
|
||||||
|
}
|
||||||
|
|
||||||
rc := &RouteController{
|
rc := &RouteController{
|
||||||
routes: routes,
|
routes: routes,
|
||||||
kubeClient: kubeClient,
|
kubeClient: kubeClient,
|
||||||
|
Loading…
Reference in New Issue
Block a user