Documentation ¶
Index ¶
- type BackendPool
- type BackendServices
- type Backends
- func (b *Backends) Add(port int64) error
- func (b *Backends) Delete(port int64) (err error)
- func (b *Backends) GC(svcNodePorts []int64) error
- func (b *Backends) Get(port int64) (*compute.BackendService, error)
- func (b *Backends) List() ([]interface{}, error)
- func (b *Backends) Shutdown() error
- func (b *Backends) Status(name string) string
- func (b *Backends) Sync(svcNodePorts []int64) error
- type BalancingMode
- type FakeBackendServices
- func (f *FakeBackendServices) CreateBackendService(be *compute.BackendService) error
- func (f *FakeBackendServices) DeleteBackendService(name string) error
- func (f *FakeBackendServices) GetBackendService(name string) (*compute.BackendService, error)
- func (f *FakeBackendServices) GetHealth(name, instanceGroupLink string) (*compute.BackendServiceGroupHealth, error)
- func (f *FakeBackendServices) ListBackendServices() (*compute.BackendServiceList, error)
- func (f *FakeBackendServices) UpdateBackendService(be *compute.BackendService) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BackendPool ¶
type BackendPool interface { Add(port int64) error Get(port int64) (*compute.BackendService, error) Delete(port int64) error Sync(ports []int64) error GC(ports []int64) error Shutdown() error Status(name string) string List() ([]interface{}, error) }
BackendPool is an interface to manage a pool of kubernetes nodePort services as gce backendServices, and sync them through the BackendServices interface.
type BackendServices ¶
type BackendServices interface { GetBackendService(name string) (*compute.BackendService, error) UpdateBackendService(bg *compute.BackendService) error CreateBackendService(bg *compute.BackendService) error DeleteBackendService(name string) error ListBackendServices() (*compute.BackendServiceList, error) GetHealth(name, instanceGroupLink string) (*compute.BackendServiceGroupHealth, error) }
BackendServices is an interface for managing gce backend services.
type Backends ¶
type Backends struct {
// contains filtered or unexported fields
}
Backends implements BackendPool.
func NewBackendPool ¶
func NewBackendPool( cloud BackendServices, healthChecker healthchecks.HealthChecker, nodePool instances.NodePool, namer *utils.Namer, ignorePorts []int64, resyncWithCloud bool) *Backends
NewBackendPool returns a new backend pool. - cloud: implements BackendServices and syncs backends with a cloud provider - healthChecker: is capable of producing health checks for backends. - nodePool: implements NodePool, used to create/delete new instance groups. - namer: procudes names for backends. - ignorePorts: is a set of ports to avoid syncing/GCing. - resyncWithCloud: if true, periodically syncs with cloud resources.
func (*Backends) Get ¶
func (b *Backends) Get(port int64) (*compute.BackendService, error)
Get returns a single backend.
func (*Backends) Shutdown ¶
Shutdown deletes all backends and the default backend. This will fail if one of the backends is being used by another resource.
type BalancingMode ¶
type BalancingMode string
BalancingMode represents the loadbalancing configuration of an individual Backend in a BackendService. This is *effectively* a cluster wide setting since you can't mix modes across Backends pointing to the same IG, and you can't have a single node in more than 1 loadbalanced IG.
const ( // Rate balances incoming requests based on observed RPS. // As of this writing, it's the only balancing mode supported by GCE's // internal LB. This setting doesn't make sense for Kubernets clusters // because requests can get proxied between instance groups in different // zones by kube-proxy without GCE even knowing it. Setting equal RPS on // all IGs should achieve roughly equal distribution of requests. Rate BalancingMode = "RATE" // Utilization balances incoming requests based on observed utilization. // This mode is only useful if you want to divert traffic away from IGs // running other compute intensive workloads. Utilization statistics are // aggregated per instances, not per container, and requests can get proxied // between instance groups in different zones by kube-proxy without GCE even // knowing about it. Utilization BalancingMode = "UTILIZATION" // Connections balances incoming requests based on a connection counter. // This setting currently doesn't make sense for Kubernetes clusters, // because we use NodePort Services as HTTP LB backends, so GCE's connection // counters don't accurately represent connections per container. Connections BalancingMode = "CONNECTION" )
type FakeBackendServices ¶
type FakeBackendServices struct {
// contains filtered or unexported fields
}
FakeBackendServices fakes out GCE backend services.
func NewFakeBackendServices ¶
func NewFakeBackendServices(ef func(op int, be *compute.BackendService) error) *FakeBackendServices
NewFakeBackendServices creates a new fake backend services manager.
func (*FakeBackendServices) CreateBackendService ¶
func (f *FakeBackendServices) CreateBackendService(be *compute.BackendService) error
CreateBackendService fakes backend service creation.
func (*FakeBackendServices) DeleteBackendService ¶
func (f *FakeBackendServices) DeleteBackendService(name string) error
DeleteBackendService fakes backend service deletion.
func (*FakeBackendServices) GetBackendService ¶
func (f *FakeBackendServices) GetBackendService(name string) (*compute.BackendService, error)
GetBackendService fakes getting a backend service from the cloud.
func (*FakeBackendServices) GetHealth ¶
func (f *FakeBackendServices) GetHealth(name, instanceGroupLink string) (*compute.BackendServiceGroupHealth, error)
GetHealth fakes getting backend service health.
func (*FakeBackendServices) ListBackendServices ¶
func (f *FakeBackendServices) ListBackendServices() (*compute.BackendServiceList, error)
ListBackendServices fakes backend service listing.
func (*FakeBackendServices) UpdateBackendService ¶
func (f *FakeBackendServices) UpdateBackendService(be *compute.BackendService) error
UpdateBackendService fakes updating a backend service.