mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 05:27:21 +00:00
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:
commit
61b30b062e
@ -40,12 +40,17 @@ import (
|
|||||||
|
|
||||||
func startCloudNodeController(ctx *cloudcontrollerconfig.CompletedConfig, cloud cloudprovider.Interface, stopCh <-chan struct{}) (http.Handler, bool, error) {
|
func startCloudNodeController(ctx *cloudcontrollerconfig.CompletedConfig, cloud cloudprovider.Interface, stopCh <-chan struct{}) (http.Handler, bool, error) {
|
||||||
// Start the CloudNodeController
|
// Start the CloudNodeController
|
||||||
nodeController := cloudcontrollers.NewCloudNodeController(
|
nodeController, err := cloudcontrollers.NewCloudNodeController(
|
||||||
ctx.SharedInformers.Core().V1().Nodes(),
|
ctx.SharedInformers.Core().V1().Nodes(),
|
||||||
// cloud node controller uses existing cluster role from node-controller
|
// cloud node controller uses existing cluster role from node-controller
|
||||||
ctx.ClientBuilder.ClientOrDie("node-controller"),
|
ctx.ClientBuilder.ClientOrDie("node-controller"),
|
||||||
cloud,
|
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)
|
go nodeController.Run(stopCh)
|
||||||
|
|
||||||
|
@ -62,16 +62,17 @@ func NewCloudNodeController(
|
|||||||
nodeInformer coreinformers.NodeInformer,
|
nodeInformer coreinformers.NodeInformer,
|
||||||
kubeClient clientset.Interface,
|
kubeClient clientset.Interface,
|
||||||
cloud cloudprovider.Interface,
|
cloud cloudprovider.Interface,
|
||||||
nodeStatusUpdateFrequency time.Duration) *CloudNodeController {
|
nodeStatusUpdateFrequency time.Duration) (*CloudNodeController, error) {
|
||||||
|
|
||||||
eventBroadcaster := record.NewBroadcaster()
|
eventBroadcaster := record.NewBroadcaster()
|
||||||
recorder := eventBroadcaster.NewRecorder(scheme.Scheme, v1.EventSource{Component: "cloud-node-controller"})
|
recorder := eventBroadcaster.NewRecorder(scheme.Scheme, v1.EventSource{Component: "cloud-node-controller"})
|
||||||
eventBroadcaster.StartLogging(klog.Infof)
|
eventBroadcaster.StartLogging(klog.Infof)
|
||||||
if kubeClient != nil {
|
|
||||||
klog.V(0).Infof("Sending events to api server.")
|
klog.Infof("Sending events to api server.")
|
||||||
eventBroadcaster.StartRecordingToSink(&v1core.EventSinkImpl{Interface: kubeClient.CoreV1().Events("")})
|
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.")
|
if _, ok := cloud.Instances(); !ok {
|
||||||
|
return nil, errors.New("cloud provider does not support instances")
|
||||||
}
|
}
|
||||||
|
|
||||||
cnc := &CloudNodeController{
|
cnc := &CloudNodeController{
|
||||||
@ -89,7 +90,7 @@ func NewCloudNodeController(
|
|||||||
UpdateFunc: cnc.UpdateCloudNode,
|
UpdateFunc: cnc.UpdateCloudNode,
|
||||||
})
|
})
|
||||||
|
|
||||||
return cnc
|
return cnc, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// This controller updates newly registered nodes with information
|
// This controller updates newly registered nodes with information
|
||||||
|
Loading…
Reference in New Issue
Block a user