Documentation
¶
Overview ¶
Package controller contains code for controllers (like the replication controller).
Index ¶
- Constants
- Variables
- func FilterActivePods(pods []api.Pod) []*api.Pod
- func FilterActiveReplicaSets(replicaSets []*extensions.ReplicaSet) []*extensions.ReplicaSet
- func NoResyncPeriodFunc() time.Duration
- type ActivePods
- type ControlleeExpectations
- type ControllerExpectations
- func (r *ControllerExpectations) CreationObserved(controllerKey string)
- func (r *ControllerExpectations) DeleteExpectations(controllerKey string)
- func (r *ControllerExpectations) DeletionObserved(controllerKey string)
- func (r *ControllerExpectations) ExpectCreations(controllerKey string, adds int) error
- func (r *ControllerExpectations) ExpectDeletions(controllerKey string, dels int) error
- func (r *ControllerExpectations) GetExpectations(controllerKey string) (*ControlleeExpectations, bool, error)
- func (r *ControllerExpectations) SatisfiedExpectations(controllerKey string) bool
- func (r *ControllerExpectations) SetExpectations(controllerKey string, add, del int) error
- type ControllerExpectationsInterface
- type ControllersByCreationTimestamp
- type Expectations
- type FakePodControl
- func (f *FakePodControl) Clear()
- func (f *FakePodControl) CreatePods(namespace string, spec *api.PodTemplateSpec, object runtime.Object) error
- func (f *FakePodControl) CreatePodsOnNode(nodeName, namespace string, template *api.PodTemplateSpec, ...) error
- func (f *FakePodControl) DeletePod(namespace string, podID string, object runtime.Object) error
- type PodControlInterface
- type RealPodControl
- func (r RealPodControl) CreatePods(namespace string, template *api.PodTemplateSpec, object runtime.Object) error
- func (r RealPodControl) CreatePodsOnNode(nodeName, namespace string, template *api.PodTemplateSpec, ...) error
- func (r RealPodControl) DeletePod(namespace string, podID string, object runtime.Object) error
- type ReplicaSetsByCreationTimestamp
- type ResyncPeriodFunc
Constants ¶
const (
CreatedByAnnotation = "kubernetes.io/created-by"
// If a watch drops a delete event for a pod, it'll take this long
// before a dormant controller waiting for those packets is woken up anyway. It is
// specifically targeted at the case where some problem prevents an update
// of expectations, without it the controller could stay asleep forever. This should
// be set based on the expected latency of watch events.
//
// Currently a controller can service (create *and* observe the watch events for said
// creation) about 10-20 pods a second, so it takes about 1 min to service
// 500 pods. Just creation is limited to 20qps, and watching happens with ~10-30s
// latency/pod at the scale of 3000 pods over 100 nodes.
ExpectationsTimeout = 3 * time.Minute
)
Variables ¶
var ExpKeyFunc = func(obj interface{}) (string, error) {
if e, ok := obj.(*ControlleeExpectations); ok {
return e.key, nil
}
return "", fmt.Errorf("Could not find key for obj %#v", obj)
}
ExpKeyFunc to parse out the key from a ControlleeExpectation
var (
KeyFunc = framework.DeletionHandlingMetaNamespaceKeyFunc
)
Functions ¶
func FilterActivePods ¶ added in v0.7.0
func FilterActivePods(pods []api.Pod) []*api.Pod
FilterActivePods returns pods that have not terminated.
func FilterActiveReplicaSets ¶ added in v1.2.0
func FilterActiveReplicaSets(replicaSets []*extensions.ReplicaSet) []*extensions.ReplicaSet
FilterActiveReplicaSets returns replica sets that have (or at least ought to have) pods.
func NoResyncPeriodFunc ¶ added in v1.1.1
func NoResyncPeriodFunc() time.Duration
Returns 0 for resyncPeriod in case resyncing is not needed.
Types ¶
type ActivePods ¶ added in v1.1.0
type ActivePods []*api.Pod
ActivePods type allows custom sorting of pods so a controller can pick the best ones to delete.
type ControlleeExpectations ¶ added in v1.2.0
type ControlleeExpectations struct {
// contains filtered or unexported fields
}
ControlleeExpectations track controllee creates/deletes.
func (*ControlleeExpectations) Fulfilled ¶ added in v1.2.0
func (e *ControlleeExpectations) Fulfilled() bool
Fulfilled returns true if this expectation has been fulfilled.
func (*ControlleeExpectations) GetExpectations ¶ added in v1.2.0
func (e *ControlleeExpectations) GetExpectations() (int64, int64)
GetExpectations returns the add and del expectations of the controllee.
type ControllerExpectations ¶ added in v1.1.0
type ControllerExpectations struct {
cache.Store
}
ControllerExpectations is a ttl cache mapping controllers to what they expect to see before being woken up for a sync.
func NewControllerExpectations ¶ added in v1.1.0
func NewControllerExpectations() *ControllerExpectations
NewControllerExpectations returns a store for ControlleeExpectations.
func (*ControllerExpectations) CreationObserved ¶ added in v1.1.0
func (r *ControllerExpectations) CreationObserved(controllerKey string)
CreationObserved atomically decrements the `add` expecation count of the given controller.
func (*ControllerExpectations) DeleteExpectations ¶ added in v1.1.0
func (r *ControllerExpectations) DeleteExpectations(controllerKey string)
DeleteExpectations deletes the expectations of the given controller from the TTLStore.
func (*ControllerExpectations) DeletionObserved ¶ added in v1.1.0
func (r *ControllerExpectations) DeletionObserved(controllerKey string)
DeletionObserved atomically decrements the `del` expectation count of the given controller.
func (*ControllerExpectations) ExpectCreations ¶ added in v1.1.0
func (r *ControllerExpectations) ExpectCreations(controllerKey string, adds int) error
func (*ControllerExpectations) ExpectDeletions ¶ added in v1.1.0
func (r *ControllerExpectations) ExpectDeletions(controllerKey string, dels int) error
func (*ControllerExpectations) GetExpectations ¶ added in v1.1.0
func (r *ControllerExpectations) GetExpectations(controllerKey string) (*ControlleeExpectations, bool, error)
GetExpectations returns the ControlleeExpectations of the given controller.
func (*ControllerExpectations) SatisfiedExpectations ¶ added in v1.1.0
func (r *ControllerExpectations) SatisfiedExpectations(controllerKey string) bool
SatisfiedExpectations returns true if the required adds/dels for the given controller have been observed. Add/del counts are established by the controller at sync time, and updated as controllees are observed by the controller manager.
func (*ControllerExpectations) SetExpectations ¶ added in v1.1.0
func (r *ControllerExpectations) SetExpectations(controllerKey string, add, del int) error
SetExpectations registers new expectations for the given controller. Forgets existing expectations.
type ControllerExpectationsInterface ¶ added in v1.1.0
type ControllerExpectationsInterface interface {
GetExpectations(controllerKey string) (*ControlleeExpectations, bool, error)
SatisfiedExpectations(controllerKey string) bool
DeleteExpectations(controllerKey string)
SetExpectations(controllerKey string, add, del int) error
ExpectCreations(controllerKey string, adds int) error
ExpectDeletions(controllerKey string, dels int) error
CreationObserved(controllerKey string)
DeletionObserved(controllerKey string)
}
ControllerExpectationsInterface is an interface that allows users to set and wait on expectations. Only abstracted out for testing. Warning: if using KeyFunc it is not safe to use a single ControllerExpectationsInterface with different types of controllers, because the keys might conflict across types.
type ControllersByCreationTimestamp ¶ added in v1.2.0
type ControllersByCreationTimestamp []*api.ReplicationController
ControllersByCreationTimestamp sorts a list of ReplicationControllers by creation timestamp, using their names as a tie breaker.
func (ControllersByCreationTimestamp) Len ¶ added in v1.2.0
func (o ControllersByCreationTimestamp) Len() int
type Expectations ¶ added in v0.17.0
type Expectations interface {
Fulfilled() bool
}
Expectations are either fulfilled, or expire naturally.
type FakePodControl ¶ added in v1.1.0
type FakePodControl struct {
sync.Mutex
Templates []api.PodTemplateSpec
DeletePodName []string
Err error
}
func (*FakePodControl) CreatePods ¶ added in v1.1.0
func (f *FakePodControl) CreatePods(namespace string, spec *api.PodTemplateSpec, object runtime.Object) error
func (*FakePodControl) CreatePodsOnNode ¶ added in v1.1.0
func (f *FakePodControl) CreatePodsOnNode(nodeName, namespace string, template *api.PodTemplateSpec, object runtime.Object) error
type PodControlInterface ¶
type PodControlInterface interface {
// CreatePods creates new pods according to the spec.
CreatePods(namespace string, template *api.PodTemplateSpec, object runtime.Object) error
// CreatePodsOnNode creates a new pod accorting to the spec on the specified node.
CreatePodsOnNode(nodeName, namespace string, template *api.PodTemplateSpec, object runtime.Object) error
// DeletePod deletes the pod identified by podID.
DeletePod(namespace string, podID string, object runtime.Object) error
}
PodControlInterface is an interface that knows how to add or delete pods created as an interface to allow testing.
type RealPodControl ¶
type RealPodControl struct {
KubeClient clientset.Interface
Recorder record.EventRecorder
}
RealPodControl is the default implementation of PodControlInterface.
func (RealPodControl) CreatePods ¶ added in v1.1.0
func (r RealPodControl) CreatePods(namespace string, template *api.PodTemplateSpec, object runtime.Object) error
func (RealPodControl) CreatePodsOnNode ¶ added in v1.1.0
func (r RealPodControl) CreatePodsOnNode(nodeName, namespace string, template *api.PodTemplateSpec, object runtime.Object) error
type ReplicaSetsByCreationTimestamp ¶ added in v1.2.0
type ReplicaSetsByCreationTimestamp []*extensions.ReplicaSet
ReplicaSetsByCreationTimestamp sorts a list of ReplicationSets by creation timestamp, using their names as a tie breaker.
func (ReplicaSetsByCreationTimestamp) Len ¶ added in v1.2.0
func (o ReplicaSetsByCreationTimestamp) Len() int
type ResyncPeriodFunc ¶ added in v1.1.1
type ResyncPeriodFunc func() time.Duration
func StaticResyncPeriodFunc ¶ added in v1.2.0
func StaticResyncPeriodFunc(resyncPeriod time.Duration) ResyncPeriodFunc
StaticResyncPeriodFunc returns the resync period specified
Directories
¶
Path | Synopsis |
---|---|
Package daemon contains logic for watching and synchronizing daemons.
|
Package daemon contains logic for watching and synchronizing daemons. |
Package service provides EndpointController implementation to manage and sync service endpoints.
|
Package service provides EndpointController implementation to manage and sync service endpoints. |
Package framework implements all the grunt work involved in running a simple controller.
|
Package framework implements all the grunt work involved in running a simple controller. |
Package gc contains a very simple pod "garbage collector" implementation, GCController, that runs in the controller manager.
|
Package gc contains a very simple pod "garbage collector" implementation, GCController, that runs in the controller manager. |
Package job contains logic for watching and synchronizing jobs.
|
Package job contains logic for watching and synchronizing jobs. |
namespace contains a controller that handles namespace lifecycle
|
namespace contains a controller that handles namespace lifecycle |
Package node contains code for syncing cloud instances with node registry
|
Package node contains code for syncing cloud instances with node registry |
Package replicaset contains logic for watching and synchronizing ReplicaSets.
|
Package replicaset contains logic for watching and synchronizing ReplicaSets. |
Package replication contains logic for watching and synchronizing replication controllers.
|
Package replication contains logic for watching and synchronizing replication controllers. |
resourcequota contains a controller that makes resource quota usage observations
|
resourcequota contains a controller that makes resource quota usage observations |
Package route contains code for syncing cloud routing rules with the list of registered nodes.
|
Package route contains code for syncing cloud routing rules with the list of registered nodes. |
Package service contains code for syncing cloud load balancers with the service registry.
|
Package service contains code for syncing cloud load balancers with the service registry. |
Package serviceaccount provides implementations to manage service accounts and service account tokens
|
Package serviceaccount provides implementations to manage service accounts and service account tokens |