mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-07 19:23:40 +00:00
Merge pull request #8887 from brendandburns/balancer
Add event generation when create/delete of balancers fails.
This commit is contained in:
commit
ae8bc2c47b
@ -27,6 +27,7 @@ import (
|
|||||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors"
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors"
|
||||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/client"
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/client"
|
||||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/client/cache"
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/client/cache"
|
||||||
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/client/record"
|
||||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/cloudprovider"
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/cloudprovider"
|
||||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/fields"
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/fields"
|
||||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels"
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/labels"
|
||||||
@ -62,22 +63,30 @@ type serviceCache struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type ServiceController struct {
|
type ServiceController struct {
|
||||||
cloud cloudprovider.Interface
|
cloud cloudprovider.Interface
|
||||||
kubeClient client.Interface
|
kubeClient client.Interface
|
||||||
clusterName string
|
clusterName string
|
||||||
balancer cloudprovider.TCPLoadBalancer
|
balancer cloudprovider.TCPLoadBalancer
|
||||||
zone cloudprovider.Zone
|
zone cloudprovider.Zone
|
||||||
cache *serviceCache
|
cache *serviceCache
|
||||||
|
eventBroadcaster record.EventBroadcaster
|
||||||
|
eventRecorder record.EventRecorder
|
||||||
}
|
}
|
||||||
|
|
||||||
// New returns a new service controller to keep cloud provider service resources
|
// New returns a new service controller to keep cloud provider service resources
|
||||||
// (like external load balancers) in sync with the registry.
|
// (like external load balancers) in sync with the registry.
|
||||||
func New(cloud cloudprovider.Interface, kubeClient client.Interface, clusterName string) *ServiceController {
|
func New(cloud cloudprovider.Interface, kubeClient client.Interface, clusterName string) *ServiceController {
|
||||||
|
broadcaster := record.NewBroadcaster()
|
||||||
|
broadcaster.StartRecordingToSink(kubeClient.Events(""))
|
||||||
|
recorder := broadcaster.NewRecorder(api.EventSource{Component: "service-controller"})
|
||||||
|
|
||||||
return &ServiceController{
|
return &ServiceController{
|
||||||
cloud: cloud,
|
cloud: cloud,
|
||||||
kubeClient: kubeClient,
|
kubeClient: kubeClient,
|
||||||
clusterName: clusterName,
|
clusterName: clusterName,
|
||||||
cache: &serviceCache{serviceMap: make(map[string]*cachedService)},
|
cache: &serviceCache{serviceMap: make(map[string]*cachedService)},
|
||||||
|
eventBroadcaster: broadcaster,
|
||||||
|
eventRecorder: recorder,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -206,6 +215,7 @@ func (s *ServiceController) processDelta(delta *cache.Delta) (error, bool) {
|
|||||||
case cache.Sync:
|
case cache.Sync:
|
||||||
err, retry := s.createLoadBalancerIfNeeded(namespacedName, service, cachedService.service)
|
err, retry := s.createLoadBalancerIfNeeded(namespacedName, service, cachedService.service)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
s.eventRecorder.Event(service, "creating loadbalancer failed", err.Error())
|
||||||
return err, retry
|
return err, retry
|
||||||
}
|
}
|
||||||
// Always update the cache upon success.
|
// Always update the cache upon success.
|
||||||
@ -217,6 +227,7 @@ func (s *ServiceController) processDelta(delta *cache.Delta) (error, bool) {
|
|||||||
case cache.Deleted:
|
case cache.Deleted:
|
||||||
err := s.balancer.EnsureTCPLoadBalancerDeleted(s.loadBalancerName(service), s.zone.Region)
|
err := s.balancer.EnsureTCPLoadBalancerDeleted(s.loadBalancerName(service), s.zone.Region)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
s.eventRecorder.Event(service, "deleting loadbalancer failed", err.Error())
|
||||||
return err, retryable
|
return err, retryable
|
||||||
}
|
}
|
||||||
s.cache.delete(namespacedName.String())
|
s.cache.delete(namespacedName.String())
|
||||||
|
Loading…
Reference in New Issue
Block a user