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
- Variables
- func GetMasterServiceUpdateIfNeeded(svc *corev1.Service, servicePorts []corev1.ServicePort, ...) (s *corev1.Service, updated bool)
- type EndpointReconciler
- type EndpointsAdapter
- func (adapter *EndpointsAdapter) Create(namespace string, endpoints *corev1.Endpoints) (*corev1.Endpoints, error)
- func (adapter *EndpointsAdapter) EnsureEndpointSliceFromEndpoints(namespace string, endpoints *corev1.Endpoints) error
- func (adapter *EndpointsAdapter) Get(namespace, name string, getOpts metav1.GetOptions) (*corev1.Endpoints, error)
- func (adapter *EndpointsAdapter) Update(namespace string, endpoints *corev1.Endpoints) (*corev1.Endpoints, error)
- type Leases
- type Type
- type Types
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 *corev1.Service, servicePorts []corev1.ServicePort, serviceType corev1.ServiceType) (s *corev1.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 []corev1.EndpointPort, reconcilePorts bool) error // RemoveEndpoints removes this apiserver's lease. RemoveEndpoints(serviceName string, ip net.IP, endpointPorts []corev1.EndpointPort) error // StopReconciling turns any later ReconcileEndpoints call into a noop. StopReconciling() }
EndpointReconciler knows how to reconcile the endpoints for the apiserver service.
func NewLeaseEndpointReconciler ¶
func NewLeaseEndpointReconciler(epAdapter EndpointsAdapter, masterLeases Leases) EndpointReconciler
NewLeaseEndpointReconciler creates a new LeaseEndpoint reconciler
func NewMasterCountEndpointReconciler ¶
func NewMasterCountEndpointReconciler(masterCount int, epAdapter EndpointsAdapter) 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 EndpointsAdapter ¶
type EndpointsAdapter struct {
// contains filtered or unexported fields
}
EndpointsAdapter provides a simple interface for reading and writing both Endpoints and Endpoint Slices. NOTE: This is an incomplete adapter implementation that is only suitable for use in this package. This takes advantage of the Endpoints used in this package always having a consistent set of ports, a single subset, and a small set of addresses. Any more complex Endpoints resource would likely translate into multiple Endpoint Slices creating significantly more complexity instead of the 1:1 mapping this allows.
func NewEndpointsAdapter ¶
func NewEndpointsAdapter(endpointClient corev1client.EndpointsGetter, endpointSliceClient discoveryclient.EndpointSlicesGetter) EndpointsAdapter
NewEndpointsAdapter returns a new EndpointsAdapter.
func (*EndpointsAdapter) Create ¶
func (adapter *EndpointsAdapter) Create(namespace string, endpoints *corev1.Endpoints) (*corev1.Endpoints, error)
Create accepts a namespace and Endpoints object and creates the Endpoints object. If an endpointSliceClient exists, a matching EndpointSlice will also be created or updated. The created Endpoints object or an error will be returned.
func (*EndpointsAdapter) EnsureEndpointSliceFromEndpoints ¶
func (adapter *EndpointsAdapter) EnsureEndpointSliceFromEndpoints(namespace string, endpoints *corev1.Endpoints) error
EnsureEndpointSliceFromEndpoints accepts a namespace and Endpoints resource and creates or updates a corresponding EndpointSlice if an endpointSliceClient exists. An error will be returned if it fails to sync the EndpointSlice.
func (*EndpointsAdapter) Get ¶
func (adapter *EndpointsAdapter) Get(namespace, name string, getOpts metav1.GetOptions) (*corev1.Endpoints, error)
Get takes the name and namespace of the Endpoints resource, and returns a corresponding Endpoints object if it exists, and an error if there is any.
func (*EndpointsAdapter) Update ¶
func (adapter *EndpointsAdapter) Update(namespace string, endpoints *corev1.Endpoints) (*corev1.Endpoints, error)
Update accepts a namespace and Endpoints object and updates it. If an endpointSliceClient exists, a matching EndpointSlice will also be created or updated. The updated Endpoints object or an error will be returned.
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