Documentation
¶
Overview ¶
Package reconcilers provides objects for managing the list of active masters. NOTE: The Lease reconciler is not the intended way for any apiserver other than kube-apiserver to accomplish the task of Endpoint registration. This is a special case for the time being.
Package reconcilers master count based reconciler ¶
Package reconcilers a noop based reconciler ¶
Package reconcilers Endpoint Reconcilers for the apiserver
Index ¶
Constants ¶
const (
// MasterCountReconcilerType will select the original reconciler
MasterCountReconcilerType Type = "master-count"
// LeaseEndpointReconcilerType will select a storage based reconciler
LeaseEndpointReconcilerType = "lease"
// NoneEndpointReconcilerType will turn off the endpoint reconciler
NoneEndpointReconcilerType = "none"
)
Variables ¶
var AllTypes = Types{
MasterCountReconcilerType,
LeaseEndpointReconcilerType,
NoneEndpointReconcilerType,
}
AllTypes export all reconcilers
Functions ¶
func GetMasterServiceUpdateIfNeeded ¶
func GetMasterServiceUpdateIfNeeded(svc *api.Service, servicePorts []api.ServicePort, serviceType api.ServiceType) (s *api.Service, updated bool)
GetMasterServiceUpdateIfNeeded sets service attributes for the
given apiserver service.
- GetMasterServiceUpdateIfNeeded expects that the service object it manages will be managed only by GetMasterServiceUpdateIfNeeded; therefore, to understand this, you need only understand the requirements and the body of this function.
- GetMasterServiceUpdateIfNeeded ensures that the correct ports are are set.
Requirements:
- All apiservers MUST use GetMasterServiceUpdateIfNeeded and only GetMasterServiceUpdateIfNeeded to manage service attributes
- updateMasterService is called periodically from all apiservers.
Types ¶
type EndpointReconciler ¶
type EndpointReconciler interface {
// ReconcileEndpoints sets the endpoints for the given apiserver service (ro or rw).
// ReconcileEndpoints expects that the endpoints objects it manages will all be
// managed only by ReconcileEndpoints; therefore, to understand this, you need only
// understand the requirements.
//
// Requirements:
// * All apiservers MUST use the same ports for their {rw, ro} services.
// * All apiservers MUST use ReconcileEndpoints and only ReconcileEndpoints to manage the
// endpoints for their {rw, ro} services.
// * ReconcileEndpoints is called periodically from all apiservers.
ReconcileEndpoints(serviceName string, ip net.IP, endpointPorts []api.EndpointPort, reconcilePorts bool) error
StopReconciling(serviceName string, ip net.IP, endpointPorts []api.EndpointPort) error
}
EndpointReconciler knows how to reconcile the endpoints for the apiserver service.
func NewLeaseEndpointReconciler ¶
func NewLeaseEndpointReconciler(endpointStorage rest.StandardStorage, masterLeases Leases) EndpointReconciler
NewLeaseEndpointReconciler creates a new LeaseEndpoint reconciler
func NewMasterCountEndpointReconciler ¶
func NewMasterCountEndpointReconciler(masterCount int, endpointClient coreclient.EndpointsGetter) EndpointReconciler
NewMasterCountEndpointReconciler creates a new EndpointReconciler that reconciles based on a specified expected number of masters.
func NewNoneEndpointReconciler ¶
func NewNoneEndpointReconciler() EndpointReconciler
NewNoneEndpointReconciler creates a new EndpointReconciler that reconciles based on a nothing. It is a no-op.
type Leases ¶
type Leases interface {
// ListLeases retrieves a list of the current master IPs
ListLeases() ([]string, error)
// UpdateLease adds or refreshes a master's lease
UpdateLease(ip string) error
// RemoveLease removes a master's lease
RemoveLease(ip string) error
}
Leases is an interface which assists in managing the set of active masters