kubernetes/pkg/registry/core/service/ipallocator/controller/repairip.go

const maxRetries

const workers

type RepairIPAddress

// NewRepair creates a controller that periodically ensures that all clusterIPs are uniquely allocated across the cluster
// and generates informational warnings for a cluster that is not in sync.
func NewRepairIPAddress(interval time.Duration,
	client kubernetes.Interface,
	serviceInformer coreinformers.ServiceInformer,
	serviceCIDRInformer networkinginformers.ServiceCIDRInformer,
	ipAddressInformer networkinginformers.IPAddressInformer) *RepairIPAddress {}

// RunUntil starts the controller until the provided ch is closed.
func (r *RepairIPAddress) RunUntil(onFirstSuccess func(), stopCh chan struct{}

// runOnce verifies the state of the ClusterIP allocations and returns an error if an unrecoverable problem occurs.
func (r *RepairIPAddress) runOnce() error {}

// doRunOnce verifies the state of the ClusterIP allocations and returns an error if an unrecoverable problem occurs.
func (r *RepairIPAddress) doRunOnce() error {}

func (r *RepairIPAddress) svcWorker() {}

func (r *RepairIPAddress) processNextWorkSvc() bool {}

func (r *RepairIPAddress) handleSvcErr(err error, key string) {}

// syncServices reconcile the Service ClusterIPs to verify that each one has the corresponding IPAddress object associated
func (r *RepairIPAddress) syncService(key string) error {}

func (r *RepairIPAddress) recreateIPAddress(name string, svc *v1.Service) error {}

func (r *RepairIPAddress) ipWorker() {}

func (r *RepairIPAddress) processNextWorkIp() bool {}

func (r *RepairIPAddress) handleIPErr(err error, key string) {}

// syncIPAddress verify that the IPAddress that are owned by the ipallocator controller reference an existing Service
// to avoid leaking IPAddresses. IPAddresses that are owned by other controllers are not processed to avoid hotloops.
// IPAddress that reference Services and are part of the ClusterIP are validated in the syncService loop.
func (r *RepairIPAddress) syncIPAddress(key string) error {}

// isIPOutOfRange returns true if the IP is not contained in any of the ServiceCIDRs
func (r *RepairIPAddress) isIPOutOfRange(ip net.IP) bool {}

func newIPAddress(name string, svc *v1.Service) *networkingv1beta1.IPAddress {}

func serviceToRef(svc *v1.Service) *networkingv1beta1.ParentReference {}

func getFamilyByIP(ip net.IP) v1.IPFamily {}

// managedByController returns true if the controller of the provided
// EndpointSlices is the EndpointSlice controller.
func managedByController(ip *networkingv1beta1.IPAddress) bool {}

func verifyIPAddressLabels(ip *networkingv1beta1.IPAddress) bool {}