Documentation ¶
Index ¶
- Variables
- type LoadBalancer
- type LoadBalancerRR
- func (lb *LoadBalancerRR) CleanupStaleStickySessions(svcPort proxy.ServicePortName)
- func (lb *LoadBalancerRR) DeleteService(svcPort proxy.ServicePortName)
- func (lb *LoadBalancerRR) NewService(svcPort proxy.ServicePortName, affinityType v1.ServiceAffinity, ttlSeconds int) error
- func (lb *LoadBalancerRR) NextEndpoint(svcPort proxy.ServicePortName, srcAddr net.Addr, sessionAffinityReset bool) (string, error)
- func (lb *LoadBalancerRR) OnEndpointsAdd(endpoints *v1.Endpoints)
- func (lb *LoadBalancerRR) OnEndpointsDelete(endpoints *v1.Endpoints)
- func (lb *LoadBalancerRR) OnEndpointsSynced()
- func (lb *LoadBalancerRR) OnEndpointsUpdate(oldEndpoints, endpoints *v1.Endpoints)
- type Proxier
- type ServicePortPortalName
Constants ¶
This section is empty.
Variables ¶
var ( ErrMissingServiceEntry = errors.New("missing service entry") ErrMissingEndpoints = errors.New("missing endpoints") )
var ( // ErrProxyOnLocalhost is returned by NewProxier if the user requests a proxier on // the loopback address. May be checked for by callers of NewProxier to know whether // the caller provided invalid input. ErrProxyOnLocalhost = fmt.Errorf("cannot proxy on localhost") )
Functions ¶
This section is empty.
Types ¶
type LoadBalancer ¶
type LoadBalancer interface { // NextEndpoint returns the endpoint to handle a request for the given // service-port and source address. NextEndpoint(service proxy.ServicePortName, srcAddr net.Addr, sessionAffinityReset bool) (string, error) NewService(service proxy.ServicePortName, sessionAffinityType v1.ServiceAffinity, stickyMaxAgeMinutes int) error DeleteService(service proxy.ServicePortName) CleanupStaleStickySessions(service proxy.ServicePortName) }
LoadBalancer is an interface for distributing incoming requests to service endpoints.
type LoadBalancerRR ¶
type LoadBalancerRR struct {
// contains filtered or unexported fields
}
LoadBalancerRR is a round-robin load balancer.
func NewLoadBalancerRR ¶
func NewLoadBalancerRR() *LoadBalancerRR
NewLoadBalancerRR returns a new LoadBalancerRR.
func (*LoadBalancerRR) CleanupStaleStickySessions ¶
func (lb *LoadBalancerRR) CleanupStaleStickySessions(svcPort proxy.ServicePortName)
func (*LoadBalancerRR) DeleteService ¶
func (lb *LoadBalancerRR) DeleteService(svcPort proxy.ServicePortName)
func (*LoadBalancerRR) NewService ¶
func (lb *LoadBalancerRR) NewService(svcPort proxy.ServicePortName, affinityType v1.ServiceAffinity, ttlSeconds int) error
func (*LoadBalancerRR) NextEndpoint ¶
func (lb *LoadBalancerRR) NextEndpoint(svcPort proxy.ServicePortName, srcAddr net.Addr, sessionAffinityReset bool) (string, error)
NextEndpoint returns a service endpoint. The service endpoint is chosen using the round-robin algorithm.
func (*LoadBalancerRR) OnEndpointsAdd ¶
func (lb *LoadBalancerRR) OnEndpointsAdd(endpoints *v1.Endpoints)
func (*LoadBalancerRR) OnEndpointsDelete ¶
func (lb *LoadBalancerRR) OnEndpointsDelete(endpoints *v1.Endpoints)
func (*LoadBalancerRR) OnEndpointsSynced ¶
func (lb *LoadBalancerRR) OnEndpointsSynced()
func (*LoadBalancerRR) OnEndpointsUpdate ¶
func (lb *LoadBalancerRR) OnEndpointsUpdate(oldEndpoints, endpoints *v1.Endpoints)
type Proxier ¶
type Proxier struct {
// contains filtered or unexported fields
}
Proxier is a simple proxy for TCP connections between a localhost:lport and services that provide the actual implementations.
func NewProxier ¶
func NewProxier(loadBalancer LoadBalancer, listenIP net.IP, netsh netsh.Interface, pr utilnet.PortRange, syncPeriod, udpIdleTimeout time.Duration) (*Proxier, error)
NewProxier returns a new Proxier given a LoadBalancer and an address on which to listen. It is assumed that there is only a single Proxier active on a machine. An error will be returned if the proxier cannot be started due to an invalid ListenIP (loopback)
func (*Proxier) OnServiceAdd ¶
func (*Proxier) OnServiceDelete ¶
func (*Proxier) OnServiceSynced ¶
func (proxier *Proxier) OnServiceSynced()
func (*Proxier) OnServiceUpdate ¶
type ServicePortPortalName ¶
type ServicePortPortalName struct { types.NamespacedName Port string PortalIPName string }
ServicePortPortalName carries a namespace + name + portname + portalip. This is the unique identifier for a windows service port portal.
func (ServicePortPortalName) String ¶
func (spn ServicePortPortalName) String() string