const serviceSyncPeriod …
const nodeSyncPeriod …
const minRetryDelay …
const maxRetryDelay …
const ToBeDeletedTaint …
type cachedService …
type serviceCache …
type Controller …
func New(
cloud cloudprovider.Interface,
kubeClient clientset.Interface,
serviceInformer coreinformers.ServiceInformer,
nodeInformer coreinformers.NodeInformer,
clusterName string,
featureGate featuregate.FeatureGate,
) (*Controller, error) { … }
func (c *Controller) enqueueService(obj interface{ … }
func (c *Controller) enqueueNode(obj interface{ … }
func (c *Controller) Run(ctx context.Context, workers int, controllerManagerMetrics *controllersmetrics.ControllerManagerMetrics) { … }
func (c *Controller) serviceWorker(ctx context.Context) { … }
func (c *Controller) nodeWorker(ctx context.Context, workers int) { … }
func (c *Controller) processNextNodeItem(ctx context.Context, workers int) bool { … }
func (c *Controller) processNextServiceItem(ctx context.Context) bool { … }
func (c *Controller) init() error { … }
func (c *Controller) processServiceCreateOrUpdate(ctx context.Context, service *v1.Service, key string) error { … }
type loadBalancerOperation …
const deleteLoadBalancer …
const ensureLoadBalancer …
const maxNodeNamesToLog …
func (c *Controller) syncLoadBalancerIfNeeded(ctx context.Context, service *v1.Service, key string) (loadBalancerOperation, error) { … }
func (c *Controller) ensureLoadBalancer(ctx context.Context, service *v1.Service) (*v1.LoadBalancerStatus, error) { … }
func (c *Controller) storeLastSyncedNodes(svc *v1.Service, nodes []*v1.Node) { … }
func (c *Controller) getLastSyncedNodes(svc *v1.Service) []*v1.Node { … }
func (s *serviceCache) ListKeys() []string { … }
func (s *serviceCache) GetByKey(key string) (interface{ … }
func (s *serviceCache) allServices() []*v1.Service { … }
func (s *serviceCache) get(serviceName string) (*cachedService, bool) { … }
func (s *serviceCache) getOrCreate(serviceName string) *cachedService { … }
func (s *serviceCache) set(serviceName string, service *cachedService) { … }
func (s *serviceCache) delete(serviceName string) { … }
func needsCleanup(service *v1.Service) bool { … }
func needsUpdate(oldService *v1.Service, newService *v1.Service) bool { … }
func getPortsForLB(service *v1.Service) []*v1.ServicePort { … }
func portsEqualForLB(x, y *v1.Service) bool { … }
func portSlicesEqualForLB(x, y []*v1.ServicePort) bool { … }
func portEqualForLB(x, y *v1.ServicePort) bool { … }
func nodeNames(nodes []*v1.Node) sets.String { … }
func loggableNodeNames(nodes []*v1.Node) []string { … }
func shouldSyncUpdatedNode(oldNode, newNode *v1.Node) bool { … }
func (c *Controller) syncNodes(ctx context.Context, workers int) sets.String { … }
func (c *Controller) nodeSyncService(svc *v1.Service) bool { … }
func nodesSufficientlyEqual(oldNodes, newNodes []*v1.Node) bool { … }
func (c *Controller) updateLoadBalancerHosts(ctx context.Context, services []*v1.Service, workers int) (servicesToRetry sets.String) { … }
func (c *Controller) lockedUpdateLoadBalancerHosts(service *v1.Service, hosts []*v1.Node) error { … }
func wantsLoadBalancer(service *v1.Service) bool { … }
func loadBalancerIPsAreEqual(oldService, newService *v1.Service) bool { … }
func (c *Controller) syncService(ctx context.Context, key string) error { … }
func (c *Controller) processServiceDeletion(ctx context.Context, key string) error { … }
func (c *Controller) processLoadBalancerDelete(ctx context.Context, service *v1.Service, key string) error { … }
func (c *Controller) addFinalizer(service *v1.Service) error { … }
func (c *Controller) removeFinalizer(service *v1.Service) error { … }
func removeString(slice []string, s string) []string { … }
func (c *Controller) patchStatus(service *v1.Service, previousStatus, newStatus *v1.LoadBalancerStatus) error { … }
type NodeConditionPredicate …
var allNodePredicates …
var stableNodeSetPredicates …
func nodeIncludedPredicate(node *v1.Node) bool { … }
func nodeUnTaintedPredicate(node *v1.Node) bool { … }
func nodeReadyPredicate(node *v1.Node) bool { … }
func nodeNotDeletedPredicate(node *v1.Node) bool { … }
func listWithPredicates(nodeLister corelisters.NodeLister, predicates ...NodeConditionPredicate) ([]*v1.Node, error) { … }
func filterWithPredicates(nodes []*v1.Node, predicates ...NodeConditionPredicate) []*v1.Node { … }
func respectsPredicates(node *v1.Node, predicates ...NodeConditionPredicate) bool { … }