package proxy
import "k8s.io/kubernetes/pkg/proxy"
Package proxy implements the layer-3 network proxy.
Index ¶
- func GetLocalEndpointIPs(endpointsMap EndpointsMap) map[types.NamespacedName]sets.String
- type Endpoint
- type EndpointChangeTracker
- func NewEndpointChangeTracker(hostname string) *EndpointChangeTracker
- func (ect *EndpointChangeTracker) Update(previous, current *api.Endpoints, makeEndpoints func(IP string, port int, isLocal bool) Endpoint) bool
- type EndpointsMap
- type ProxyProvider
- type ServiceChangeTracker
- func NewServiceChangeTracker() *ServiceChangeTracker
- func (sct *ServiceChangeTracker) Update(previous, current *api.Service, makeServicePort func(servicePort *api.ServicePort, service *api.Service) ServicePort) bool
- type ServiceEndpoint
- type ServiceMap
- type ServicePort
- type ServicePortName
- type UpdateEndpointMapResult
- type UpdateServiceMapResult
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 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 // IsLocal returns true if the endpoint is running in same host as kube-proxy, otherwise returns false. IsLocal() bool // IP returns IP part of endpoints. IP() string // Equal checks if two endpoints are equal. Equal(Endpoint) bool }
Endpoint in an interface which abstracts information about an endpoint.
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) *EndpointChangeTracker
NewEndpointChangeTracker initializes an EndpointsChangeMap
func (*EndpointChangeTracker) Update ¶
func (ect *EndpointChangeTracker) Update(previous, current *api.Endpoints, makeEndpoints func(IP string, port int, isLocal bool) Endpoint) 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
- pass <nil, endpoints> as the <previous, current> pair.
Update item
- pass <oldEndpoints, endpoints> as the <previous, current> pair.
Delete item
- pass <endpoints, nil> as the <previous, current> pair.
type EndpointsMap ¶
type EndpointsMap map[ServicePortName][]Endpoint
EndpointsMap maps a service to one of its endpoint.
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() *ServiceChangeTracker
NewServiceChangeTracker initializes a ServiceChangeTracker
func (*ServiceChangeTracker) Update ¶
func (sct *ServiceChangeTracker) Update(previous, current *api.Service, makeServicePort func(servicePort *api.ServicePort, service *api.Service) ServicePort) 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
- pass <nil, service> as the <previous, current> pair.
Update item
- pass <oldService, service> as the <previous, current> pair.
Delete item
- pass <service, nil> as the <previous, current> pair.
makeServicePort() return a proxy.ServicePort based on the given Service and its ServicePort. We inject makeServicePort() so that giving caller side a chance to initialize proxy.ServicePort interface.
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 information.
type ServicePort ¶
type ServicePort interface { // String returns service string. An example format can be: `IP:Port/Protocol`. String() string // ClusterIP returns service cluster IP. ClusterIP() string // Protocol returns service protocol. Protocol() api.Protocol // HealthCheckNodePort returns service health check node port if present. If return 0, it means not present. HealthCheckNodePort() 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 ¶
Path | Synopsis |
---|---|
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/config | Package config provides decoupling between various configuration sources (etcd, files,...) and the pieces that actually care about them (loadbalancer, proxy). |
pkg/proxy/healthcheck | Package 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/winkernel | |
pkg/proxy/winuserspace |
- Version
- v1.10.0-beta.0
- Published
- Feb 21, 2018
- Platform
- windows/amd64
- Imports
- 8 packages
- Last checked
- 46 seconds ago –
Tools for package owners.