mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +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) {
|
||||
// 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)
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user