kubernetesk8s.io/kubernetes/pkg/proxy Index | Files | Directories

package proxy

import "k8s.io/kubernetes/pkg/proxy"

Package proxy implements the layer-3 network proxy.

Index

Functions

func GetLocalEndpointIPs

func GetLocalEndpointIPs(endpointsMap EndpointsMap) map[types.NamespacedName]sets.String

GetLocalEndpointIPs returns endpoints IPs if given endpoint is local - local means the endpoint is running in same host as kube-proxy.

Types

type BaseEndpointInfo

type BaseEndpointInfo struct {
	Endpoint string // TODO: should be an endpointString type
	// IsLocal indicates whether the endpoint is running in same host as kube-proxy.
	IsLocal bool
}

BaseEndpointInfo contains base information that defines an endpoint. This could be used directly by proxier while processing endpoints, or can be used for constructing a more specific EndpointInfo struct defined by the proxier if needed.

func (*BaseEndpointInfo) Equal

func (info *BaseEndpointInfo) Equal(other Endpoint) bool

Equal is part of proxy.Endpoint interface.

func (*BaseEndpointInfo) GetIsLocal

func (info *BaseEndpointInfo) GetIsLocal() bool

GetIsLocal is part of proxy.Endpoint interface.

func (*BaseEndpointInfo) IP

func (info *BaseEndpointInfo) IP() string

IP returns just the IP part of the endpoint, it's a part of proxy.Endpoint interface.

func (*BaseEndpointInfo) Port

func (info *BaseEndpointInfo) Port() (int, error)

Port returns just the Port part of the endpoint.

func (*BaseEndpointInfo) String

func (info *BaseEndpointInfo) String() string

String is part of proxy.Endpoint interface.

type BaseServiceInfo

type BaseServiceInfo struct {
	ClusterIP                net.IP
	Port                     int
	Protocol                 api.Protocol
	NodePort                 int
	LoadBalancerStatus       api.LoadBalancerStatus
	SessionAffinityType      api.ServiceAffinity
	StickyMaxAgeSeconds      int
	ExternalIPs              []string
	LoadBalancerSourceRanges []string
	HealthCheckNodePort      int
	OnlyNodeLocalEndpoints   bool
}

BaseServiceInfo contains base information that defines a service. This could be used directly by proxier while processing services, or can be used for constructing a more specific ServiceInfo struct defined by the proxier if needed.

func (*BaseServiceInfo) ClusterIPString

func (info *BaseServiceInfo) ClusterIPString() string

ClusterIPString is part of ServicePort interface.

func (*BaseServiceInfo) GetHealthCheckNodePort

func (info *BaseServiceInfo) GetHealthCheckNodePort() int

GetHealthCheckNodePort is part of ServicePort interface.

func (*BaseServiceInfo) GetProtocol

func (info *BaseServiceInfo) GetProtocol() api.Protocol

GetProtocol is part of ServicePort interface.

func (*BaseServiceInfo) String

func (info *BaseServiceInfo) String() string

String is part of ServicePort interface.

type Endpoint

type Endpoint interface {
	// String returns endpoint string.  An example format can be: `IP:Port`.
	// We take the returned value as ServiceEndpoint.Endpoint.
	String() string
	// GetIsLocal returns true if the endpoint is running in same host as kube-proxy, otherwise returns false.
	GetIsLocal() bool
	// IP returns IP part of the endpoint.
	IP() string
	// Port returns the Port part of the endpoint.
	Port() (int, error)
	// Equal checks if two endpoints are equal.
	Equal(Endpoint) bool
}

Endpoint in an interface which abstracts information about an endpoint. TODO: Rename functions to be consistent with ServicePort.

type EndpointChangeTracker

type EndpointChangeTracker struct {
	// contains filtered or unexported fields
}

EndpointChangeTracker carries state about uncommitted changes to an arbitrary number of Endpoints, keyed by their namespace and name.

func NewEndpointChangeTracker

func NewEndpointChangeTracker(hostname string, makeEndpointInfo makeEndpointFunc, isIPv6Mode *bool, recorder record.EventRecorder) *EndpointChangeTracker

NewEndpointChangeTracker initializes an EndpointsChangeMap

func (*EndpointChangeTracker) Update

func (ect *EndpointChangeTracker) Update(previous, current *api.Endpoints) bool

Update updates given service's endpoints change map based on the <previous, current> endpoints pair. It returns true if items changed, otherwise return false. Update can be used to add/update/delete items of EndpointsChangeMap. For example, Add item

Update item

Delete item

type EndpointsMap

type EndpointsMap map[ServicePortName][]Endpoint

EndpointsMap maps a service name to a list of all its Endpoints.

func (EndpointsMap) Merge

func (em EndpointsMap) Merge(other EndpointsMap)

Merge ensures that the current EndpointsMap contains all <service, endpoints> pairs from the EndpointsMap passed in.

func (EndpointsMap) Unmerge

func (em EndpointsMap) Unmerge(other EndpointsMap)

Unmerge removes the <service, endpoints> pairs from the current EndpointsMap which are contained in the EndpointsMap passed in.

type ProxyProvider

type ProxyProvider interface {
	// Sync immediately synchronizes the ProxyProvider's current state to proxy rules.
	Sync()
	// SyncLoop runs periodic work.
	// This is expected to run as a goroutine or as the main loop of the app.
	// It does not return.
	SyncLoop()
}

ProxyProvider is the interface provided by proxier implementations.

type ServiceChangeTracker

type ServiceChangeTracker struct {
	// contains filtered or unexported fields
}

ServiceChangeTracker carries state about uncommitted changes to an arbitrary number of Services, keyed by their namespace and name.

func NewServiceChangeTracker

func NewServiceChangeTracker(makeServiceInfo makeServicePortFunc, isIPv6Mode *bool, recorder record.EventRecorder) *ServiceChangeTracker

NewServiceChangeTracker initializes a ServiceChangeTracker

func (*ServiceChangeTracker) Update

func (sct *ServiceChangeTracker) Update(previous, current *api.Service) bool

Update updates given service's change map based on the <previous, current> service pair. It returns true if items changed, otherwise return false. Update can be used to add/update/delete items of ServiceChangeMap. For example, Add item

Update item

Delete item

type ServiceEndpoint

type ServiceEndpoint struct {
	Endpoint        string
	ServicePortName ServicePortName
}

ServiceEndpoint is used to identify a service and one of its endpoint pair.

type ServiceMap

type ServiceMap map[ServicePortName]ServicePort

ServiceMap maps a service to its ServicePort.

type ServicePort

type ServicePort interface {
	// String returns service string.  An example format can be: `IP:Port/Protocol`.
	String() string
	// ClusterIPString returns service cluster IP in string format.
	ClusterIPString() string
	// GetProtocol returns service protocol.
	GetProtocol() api.Protocol
	// GetHealthCheckNodePort returns service health check node port if present.  If return 0, it means not present.
	GetHealthCheckNodePort() int
}

ServicePort is an interface which abstracts information about a service.

type ServicePortName

type ServicePortName struct {
	types.NamespacedName
	Port string
}

ServicePortName carries a namespace + name + portname. This is the unique identifier for a load-balanced service.

func (ServicePortName) String

func (spn ServicePortName) String() string

type UpdateEndpointMapResult

type UpdateEndpointMapResult struct {
	// HCEndpointsLocalIPSize maps an endpoints name to the length of its local IPs.
	HCEndpointsLocalIPSize map[types.NamespacedName]int
	// StaleEndpoints identifies if an endpoints service pair is stale.
	StaleEndpoints []ServiceEndpoint
	// StaleServiceNames identifies if a service is stale.
	StaleServiceNames []ServicePortName
}

UpdateEndpointMapResult is the updated results after applying endpoints changes.

func UpdateEndpointsMap

func UpdateEndpointsMap(endpointsMap EndpointsMap, changes *EndpointChangeTracker) (result UpdateEndpointMapResult)

UpdateEndpointsMap updates endpointsMap base on the given changes.

type UpdateServiceMapResult

type UpdateServiceMapResult struct {
	// HCServiceNodePorts is a map of Service names to node port numbers which indicate the health of that Service on this Node.
	// The value(uint16) of HCServices map is the service health check node port.
	HCServiceNodePorts map[types.NamespacedName]uint16
	// UDPStaleClusterIP holds stale (no longer assigned to a Service) Service IPs that had UDP ports.
	// Callers can use this to abort timeout-waits or clear connection-tracking information.
	UDPStaleClusterIP sets.String
}

UpdateServiceMapResult is the updated results after applying service changes.

func UpdateServiceMap

func UpdateServiceMap(serviceMap ServiceMap, changes *ServiceChangeTracker) (result UpdateServiceMapResult)

UpdateServiceMap updates ServiceMap based on the given changes.

Source Files

doc.go endpoints.go service.go types.go

Directories

PathSynopsis
pkg/proxy/apis
pkg/proxy/apis/kubeproxyconfig
pkg/proxy/apis/kubeproxyconfig/fuzzer
pkg/proxy/apis/kubeproxyconfig/scheme
pkg/proxy/apis/kubeproxyconfig/v1alpha1
pkg/proxy/apis/kubeproxyconfig/validation
pkg/proxy/configPackage config provides decoupling between various configuration sources (etcd, files,...) and the pieces that actually care about them (loadbalancer, proxy).
pkg/proxy/healthcheckPackage healthcheck provides tools for serving kube-proxy healthchecks.
pkg/proxy/iptables
pkg/proxy/ipvs
pkg/proxy/ipvs/testing
pkg/proxy/metrics
pkg/proxy/userspace
pkg/proxy/util
pkg/proxy/util/testing
pkg/proxy/winkernel
pkg/proxy/winuserspace
Version
v1.10.0-beta.2
Published
Mar 7, 2018
Platform
js/wasm
Imports
15 packages
Last checked
2 minutes ago

Tools for package owners.