Merge pull request #82329 from m3ngyang/node-ctrl-check

don't start the cloud node controller if cloudprovider.Instances is not supported
This commit is contained in:
Kubernetes Prow Robot 2019-09-11 15:26:08 -07:00 committed by GitHub
commit 61b30b062e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 9 deletions

View File

@ -40,12 +40,17 @@ import (
func startCloudNodeController(ctx *cloudcontrollerconfig.CompletedConfig, cloud cloudprovider.Interface, stopCh <-chan struct{}) (http.Handler, bool, error) {
// Start the CloudNodeController
nodeController := cloudcontrollers.NewCloudNodeController(
nodeController, err := cloudcontrollers.NewCloudNodeController(
ctx.SharedInformers.Core().V1().Nodes(),
// cloud node controller uses existing cluster role from node-controller
ctx.ClientBuilder.ClientOrDie("node-controller"),
cloud,
ctx.ComponentConfig.NodeStatusUpdateFrequency.Duration)
ctx.ComponentConfig.NodeStatusUpdateFrequency.Duration,
)
if err != nil {
klog.Warningf("failed to start cloud node controller: %s", err)
return nil, false, nil
}
go nodeController.Run(stopCh)

View File

@ -62,16 +62,17 @@ func NewCloudNodeController(
nodeInformer coreinformers.NodeInformer,
kubeClient clientset.Interface,
cloud cloudprovider.Interface,
nodeStatusUpdateFrequency time.Duration) *CloudNodeController {
nodeStatusUpdateFrequency time.Duration) (*CloudNodeController, error) {
eventBroadcaster := record.NewBroadcaster()
recorder := eventBroadcaster.NewRecorder(scheme.Scheme, v1.EventSource{Component: "cloud-node-controller"})
eventBroadcaster.StartLogging(klog.Infof)
if kubeClient != nil {
klog.V(0).Infof("Sending events to api server.")
eventBroadcaster.StartRecordingToSink(&v1core.EventSinkImpl{Interface: kubeClient.CoreV1().Events("")})
} else {
klog.V(0).Infof("No api server defined - no events will be sent to API server.")
klog.Infof("Sending events to api server.")
eventBroadcaster.StartRecordingToSink(&v1core.EventSinkImpl{Interface: kubeClient.CoreV1().Events("")})
if _, ok := cloud.Instances(); !ok {
return nil, errors.New("cloud provider does not support instances")
}
cnc := &CloudNodeController{
@ -89,7 +90,7 @@ func NewCloudNodeController(
UpdateFunc: cnc.UpdateCloudNode,
})
return cnc
return cnc, nil
}
// This controller updates newly registered nodes with information