Documentation ¶
Index ¶
- type Cluster
- func (c *Cluster) Consolidated() bool
- func (c *Cluster) DeleteDaemonSet(key types.NamespacedName)
- func (c *Cluster) DeleteMachine(name string)
- func (c *Cluster) DeleteNode(name string)
- func (c *Cluster) DeletePod(podKey types.NamespacedName)
- func (c *Cluster) ForEachNode(f func(n *Node) bool)
- func (c *Cluster) ForPodsWithAntiAffinity(fn func(p *v1.Pod, n *v1.Node) bool)
- func (c *Cluster) GetDaemonSetPod(daemonset *appsv1.DaemonSet) *v1.Pod
- func (c *Cluster) IsNodeNominated(name string) bool
- func (c *Cluster) MarkForDeletion(names ...string)
- func (c *Cluster) Nodes() Nodes
- func (c *Cluster) NominateNodeForPod(ctx context.Context, name string)
- func (c *Cluster) Reset()
- func (c *Cluster) SetConsolidated(consolidated bool)
- func (c *Cluster) Synced(ctx context.Context) bool
- func (c *Cluster) UnmarkForDeletion(names ...string)
- func (c *Cluster) UpdateDaemonSet(ctx context.Context, daemonset *appsv1.DaemonSet) error
- func (c *Cluster) UpdateMachine(machine *v1alpha5.Machine)
- func (c *Cluster) UpdateNode(ctx context.Context, node *v1.Node) error
- func (c *Cluster) UpdatePod(ctx context.Context, pod *v1.Pod) error
- type Node
- func (in *Node) Allocatable() v1.ResourceList
- func (in *Node) Annotations() map[string]string
- func (in *Node) Available() v1.ResourceList
- func (in *Node) Capacity() v1.ResourceList
- func (in *Node) DaemonSetLimits() v1.ResourceList
- func (in *Node) DaemonSetRequests() v1.ResourceList
- func (in *Node) DeepCopy() *Node
- func (in *Node) DeepCopyInto(out *Node)
- func (in *Node) HostName() string
- func (in *Node) HostPortUsage() *scheduling.HostPortUsage
- func (in *Node) Initialized() bool
- func (in *Node) Labels() map[string]string
- func (in *Node) MarkedForDeletion() bool
- func (in *Node) Name() string
- func (in *Node) Nominate(ctx context.Context)
- func (in *Node) Nominated() bool
- func (in *Node) Owned() bool
- func (in *Node) PodLimits() v1.ResourceList
- func (in *Node) PodRequests() v1.ResourceList
- func (in *Node) Pods(ctx context.Context, c client.Client) ([]*v1.Pod, error)
- func (in *Node) Taints() []v1.Taint
- func (in *Node) VolumeLimits() scheduling.VolumeCount
- func (in *Node) VolumeUsage() *scheduling.VolumeUsage
- type Nodes
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Cluster ¶
type Cluster struct {
// contains filtered or unexported fields
}
Cluster maintains cluster state that is often needed but expensive to compute.
func NewCluster ¶
func NewCluster(clk clock.Clock, client client.Client, cp cloudprovider.CloudProvider) *Cluster
func (*Cluster) Consolidated ¶
ClusterConsolidationState returns a number representing the state of the cluster with respect to consolidation. If consolidation can't occur and this number hasn't changed, there is no point in re-attempting consolidation. This allows reducing overall CPU utilization by pausing consolidation when the cluster is in a static state.
func (*Cluster) DeleteDaemonSet ¶
func (c *Cluster) DeleteDaemonSet(key types.NamespacedName)
func (*Cluster) DeleteMachine ¶
func (*Cluster) DeleteNode ¶
func (*Cluster) DeletePod ¶
func (c *Cluster) DeletePod(podKey types.NamespacedName)
func (*Cluster) ForEachNode ¶
ForEachNode calls the supplied function once per node object that is being tracked. It is not safe to store the state.Node object, it should be only accessed from within the function provided to this method.
func (*Cluster) ForPodsWithAntiAffinity ¶
ForPodsWithAntiAffinity calls the supplied function once for each pod with required anti affinity terms that is currently bound to a node. The pod returned may not be up-to-date with respect to status, however since the anti-affinity terms can't be modified, they will be correct.
func (*Cluster) GetDaemonSetPod ¶
func (*Cluster) IsNodeNominated ¶
IsNodeNominated returns true if the given node was expected to have a pod bound to it during a recent scheduling batch
func (*Cluster) MarkForDeletion ¶
MarkForDeletion marks the node as pending deletion in the internal cluster state
func (*Cluster) Nodes ¶
Nodes creates a DeepCopy of all state nodes. NOTE: This is very inefficient so this should only be used when DeepCopying is absolutely necessary
func (*Cluster) NominateNodeForPod ¶
NominateNodeForPod records that a node was the target of a pending pod during a scheduling batch
func (*Cluster) SetConsolidated ¶
func (*Cluster) Synced ¶
Synced validates that the Machines and the Nodes that are stored in the apiserver have the same representation in the cluster state. This is to ensure that our view of the cluster is as close to correct as it can be when we begin to perform operations utilizing the cluster state as our source of truth
func (*Cluster) UnmarkForDeletion ¶
UnmarkForDeletion removes the marking on the node as a node the controller intends to delete
func (*Cluster) UpdateDaemonSet ¶
func (*Cluster) UpdateMachine ¶
type Node ¶
type Node struct { Node *v1.Node Machine *v1alpha5.Machine // contains filtered or unexported fields }
Node is a cached version of a node in the cluster that maintains state which is expensive to compute every time it's needed. This currently contains node utilization across all the allocatable resources, but will soon be used to compute topology information. +k8s:deepcopy-gen=true
func (*Node) Allocatable ¶
func (in *Node) Allocatable() v1.ResourceList
func (*Node) Annotations ¶
func (*Node) Available ¶
func (in *Node) Available() v1.ResourceList
Available is allocatable minus anything allocated to pods.
func (*Node) Capacity ¶
func (in *Node) Capacity() v1.ResourceList
func (*Node) DaemonSetLimits ¶
func (in *Node) DaemonSetLimits() v1.ResourceList
func (*Node) DaemonSetRequests ¶
func (in *Node) DaemonSetRequests() v1.ResourceList
func (*Node) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Node.
func (*Node) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Node) HostPortUsage ¶
func (in *Node) HostPortUsage() *scheduling.HostPortUsage
func (*Node) Initialized ¶
Initialized always implies that the node is there. If something is initialized, we are guaranteed that the Node exists inside of cluster state. If the node is not initialized, it is possible that it is represented by a Node or by a Machine inside of cluster state
func (*Node) MarkedForDeletion ¶
func (*Node) PodLimits ¶
func (in *Node) PodLimits() v1.ResourceList
func (*Node) PodRequests ¶
func (in *Node) PodRequests() v1.ResourceList
func (*Node) Pods ¶
Pods gets the pods assigned to the Node based on the kubernetes api-server bindings
func (*Node) VolumeLimits ¶
func (in *Node) VolumeLimits() scheduling.VolumeCount
func (*Node) VolumeUsage ¶
func (in *Node) VolumeUsage() *scheduling.VolumeUsage