kubernetes: k8s.io/kubernetes/pkg/controller/garbagecollector Index | Files | Directories

package garbagecollector

import "k8s.io/kubernetes/pkg/controller/garbagecollector"

Index

Package Files

dump.go errors.go garbagecollector.go graph.go graph_builder.go operations.go patch.go uid_cache.go

Constants

const ResourceResyncTime time.Duration = 0

func DefaultIgnoredResources Uses

func DefaultIgnoredResources() map[schema.GroupResource]struct{}

DefaultIgnoredResources returns the default set of resources that the garbage collector controller should ignore. This is exposed so downstream integrators can have access to the defaults, and add to them as necessary when constructing the controller.

func GetDeletableResources Uses

func GetDeletableResources(discoveryClient discovery.ServerResourcesInterface) map[schema.GroupVersionResource]struct{}

GetDeletableResources returns all resources from discoveryClient that the garbage collector should recognize and work with. More specifically, all preferred resources which support the 'delete', 'list', and 'watch' verbs.

All discovery errors are considered temporary. Upon encountering any error, GetDeletableResources will log and return any discovered resources it was able to process (which may be none).

func NewDebugHandler Uses

func NewDebugHandler(controller *GarbageCollector) http.Handler

func NewGonumVertex Uses

func NewGonumVertex(node *node, nodeID int64) *gonumVertex

func NewMissingGonumVertex Uses

func NewMissingGonumVertex(ownerRef metav1.OwnerReference, nodeID int64) *gonumVertex

type GarbageCollector Uses

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

GarbageCollector runs reflectors to watch for changes of managed API objects, funnels the results to a single-threaded dependencyGraphBuilder, which builds a graph caching the dependencies among objects. Triggered by the graph changes, the dependencyGraphBuilder enqueues objects that can potentially be garbage-collected to the `attemptToDelete` queue, and enqueues objects whose dependents need to be orphaned to the `attemptToOrphan` queue. The GarbageCollector has workers who consume these two queues, send requests to the API server to delete/update the objects accordingly. Note that having the dependencyGraphBuilder notify the garbage collector ensures that the garbage collector operates with a graph that is at least as up to date as the notification is sent.

func NewGarbageCollector Uses

func NewGarbageCollector(
    metadataClient metadata.Interface,
    mapper resettableRESTMapper,
    deletableResources map[schema.GroupVersionResource]struct{},
    ignoredResources map[schema.GroupResource]struct{},
    sharedInformers controller.InformerFactory,
    informersStarted <-chan struct{},
) (*GarbageCollector, error)

func (*GarbageCollector) GraphHasUID Uses

func (gc *GarbageCollector) GraphHasUID(u types.UID) bool

*FOR TEST USE ONLY* GraphHasUID returns if the GraphBuilder has a particular UID store in its uidToNode graph. It's useful for debugging. This method is used by integration tests.

func (*GarbageCollector) IsSynced Uses

func (gc *GarbageCollector) IsSynced() bool

func (*GarbageCollector) Run Uses

func (gc *GarbageCollector) Run(workers int, stopCh <-chan struct{})

func (*GarbageCollector) Sync Uses

func (gc *GarbageCollector) Sync(discoveryClient discovery.ServerResourcesInterface, period time.Duration, stopCh <-chan struct{})

Sync periodically resyncs the garbage collector when new resources are observed from discovery. When new resources are detected, Sync will stop all GC workers, reset gc.restMapper, and resync the monitors.

Note that discoveryClient should NOT be shared with gc.restMapper, otherwise the mapper's underlying discovery client will be unnecessarily reset during the course of detecting new resources.

type GraphBuilder Uses

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

GraphBuilder: based on the events supplied by the informers, GraphBuilder updates uidToNode, a graph that caches the dependencies as we know, and enqueues items to the attemptToDelete and attemptToOrphan.

func (*GraphBuilder) IsSynced Uses

func (gb *GraphBuilder) IsSynced() bool

IsSynced returns true if any monitors exist AND all those monitors' controllers HasSynced functions return true. This means IsSynced could return true at one time, and then later return false if all monitors were reconstructed.

func (*GraphBuilder) Run Uses

func (gb *GraphBuilder) Run(stopCh <-chan struct{})

Run sets the stop channel and starts monitor execution until stopCh is closed. Any running monitors will be stopped before Run returns.

type ObjectMetaForFinalizersPatch Uses

type ObjectMetaForFinalizersPatch struct {
    ResourceVersion string   `json:"resourceVersion"`
    Finalizers      []string `json:"finalizers"`
}

type ObjectMetaForPatch Uses

type ObjectMetaForPatch struct {
    ResourceVersion string                  `json:"resourceVersion"`
    OwnerReferences []metav1.OwnerReference `json:"ownerReferences"`
}

type UIDCache Uses

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

UIDCache is an LRU cache for uid.

func NewUIDCache Uses

func NewUIDCache(maxCacheEntries int) *UIDCache

NewUIDCache returns a UIDCache.

func (*UIDCache) Add Uses

func (c *UIDCache) Add(uid types.UID)

Add adds a uid to the cache.

func (*UIDCache) Has Uses

func (c *UIDCache) Has(uid types.UID) bool

Has returns if a uid is in the cache.

Directories

PathSynopsis
config
config/v1alpha1
metaonly

Package garbagecollector imports 31 packages (graph) and is imported by 16 packages. Updated 2019-11-17. Refresh now. Tools for package owners.