Documentation ¶
Index ¶
- Constants
- Variables
- func Kind(kind string) schema.GroupKind
- func Resource(resource string) schema.GroupResource
- type ArbitrationArgs
- type DeschedulerConfiguration
- type DeschedulerProfile
- type Float64OrString
- func (in *Float64OrString) DeepCopy() *Float64OrString
- func (in *Float64OrString) DeepCopyInto(out *Float64OrString)
- func (floatstr *Float64OrString) FloatValue() float64
- func (floatstr *Float64OrString) MarshalJSON() ([]byte, error)
- func (floatstr *Float64OrString) String() string
- func (floatstr *Float64OrString) UnmarshalJSON(value []byte) error
- type LoadAnomalyCondition
- type LowNodeLoadArgs
- type LowNodeLoadNodePool
- type LowNodeLoadPodSelector
- type MigrationControllerArgs
- type MigrationLimitObjectType
- type MigrationObjectLimiter
- type Namespaces
- type ObjectLimiterMap
- type Percentage
- type Plugin
- type PluginConfig
- type PluginSet
- type Plugins
- type PriorityThreshold
- type ResourceThresholds
- type Type
Constants ¶
const ( DefaultDeschedulerPort = 10258 DefaultInsecureDeschedulerPort = 10251 )
const GroupName = "descheduler"
GroupName is the group name use in this package
Variables ¶
var ( SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) AddToScheme = SchemeBuilder.AddToScheme Scheme = runtime.NewScheme() )
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal}
SchemeGroupVersion is group version used to register these objects
Functions ¶
func Resource ¶
func Resource(resource string) schema.GroupResource
Resource takes an unqualified resource and returns a Group qualified GroupResource
Types ¶
type ArbitrationArgs ¶ added in v1.4.0
type ArbitrationArgs struct { // Enabled defines if Arbitration Mechanism should be enabled. // Default is true Enabled bool // Interval defines the running interval (ms) of the Arbitration Mechanism. // Default is 500 ms Interval *metav1.Duration }
ArbitrationArgs holds arguments used to configure the Arbitration Mechanism.
func (*ArbitrationArgs) DeepCopy ¶ added in v1.4.0
func (in *ArbitrationArgs) DeepCopy() *ArbitrationArgs
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArbitrationArgs.
func (*ArbitrationArgs) DeepCopyInto ¶ added in v1.4.0
func (in *ArbitrationArgs) DeepCopyInto(out *ArbitrationArgs)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type DeschedulerConfiguration ¶
type DeschedulerConfiguration struct { metav1.TypeMeta // LeaderElection defines the configuration of leader election client. LeaderElection config.LeaderElectionConfiguration // ClientConnection specifies the kubeconfig file and client connection // settings for the proxy server to use when communicating with the apiserver. ClientConnection config.ClientConnectionConfiguration // DebuggingConfiguration holds configuration for Debugging related features // TODO: We might wanna make this a substruct like Debugging componentbaseconfig.DebuggingConfiguration config.DebuggingConfiguration // HealthzBindAddress is the IP address and port for the health check server to serve on. HealthzBindAddress string // MetricsBindAddress is the IP address and port for the metrics server to serve on. MetricsBindAddress string // Time interval for descheduler to run DeschedulingInterval metav1.Duration // Dry run DryRun bool // Profiles are descheduling profiles that koord-descheduler supports. Profiles []DeschedulerProfile // NodeSelector for a set of nodes to operate over NodeSelector *metav1.LabelSelector // MaxNoOfPodsToEvictPerNode restricts maximum of pods to be evicted per node. MaxNoOfPodsToEvictPerNode *uint // MaxNoOfPodsToEvictPerNamespace restricts maximum of pods to be evicted per namespace. MaxNoOfPodsToEvictPerNamespace *uint }
DeschedulerConfiguration configures a descheduler
func (*DeschedulerConfiguration) DeepCopy ¶
func (in *DeschedulerConfiguration) DeepCopy() *DeschedulerConfiguration
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeschedulerConfiguration.
func (*DeschedulerConfiguration) DeepCopyInto ¶
func (in *DeschedulerConfiguration) DeepCopyInto(out *DeschedulerConfiguration)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*DeschedulerConfiguration) DeepCopyObject ¶
func (in *DeschedulerConfiguration) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type DeschedulerProfile ¶
type DeschedulerProfile struct { Name string PluginConfig []PluginConfig Plugins *Plugins }
DeschedulerProfile is a descheduling profile.
func (*DeschedulerProfile) DeepCopy ¶
func (in *DeschedulerProfile) DeepCopy() *DeschedulerProfile
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeschedulerProfile.
func (*DeschedulerProfile) DeepCopyInto ¶
func (in *DeschedulerProfile) DeepCopyInto(out *DeschedulerProfile)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Float64OrString ¶ added in v1.2.0
func (*Float64OrString) DeepCopy ¶ added in v1.2.0
func (in *Float64OrString) DeepCopy() *Float64OrString
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Float64OrString.
func (*Float64OrString) DeepCopyInto ¶ added in v1.2.0
func (in *Float64OrString) DeepCopyInto(out *Float64OrString)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Float64OrString) FloatValue ¶ added in v1.2.0
func (floatstr *Float64OrString) FloatValue() float64
FloatValue returns the FloatVal if type Float, or if it is a String, will attempt a conversion to float64, returning 0 if a parsing error occurs.
func (*Float64OrString) MarshalJSON ¶ added in v1.2.0
func (floatstr *Float64OrString) MarshalJSON() ([]byte, error)
MarshalJSON implements the json.Marshaller interface.
func (*Float64OrString) String ¶ added in v1.2.0
func (floatstr *Float64OrString) String() string
String returns the string value, or the Itoa of the float value.
func (*Float64OrString) UnmarshalJSON ¶ added in v1.2.0
func (floatstr *Float64OrString) UnmarshalJSON(value []byte) error
UnmarshalJSON implements the json.Unmarshaller interface.
type LoadAnomalyCondition ¶ added in v1.2.0
type LoadAnomalyCondition struct { // Timeout indicates the expiration time of the abnormal state, the default is 1 minute Timeout metav1.Duration // ConsecutiveAbnormalities indicates the number of consecutive abnormalities ConsecutiveAbnormalities uint32 // ConsecutiveNormalities indicates the number of consecutive normalities ConsecutiveNormalities uint32 }
func (*LoadAnomalyCondition) DeepCopy ¶ added in v1.2.0
func (in *LoadAnomalyCondition) DeepCopy() *LoadAnomalyCondition
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoadAnomalyCondition.
func (*LoadAnomalyCondition) DeepCopyInto ¶ added in v1.2.0
func (in *LoadAnomalyCondition) DeepCopyInto(out *LoadAnomalyCondition)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LowNodeLoadArgs ¶ added in v1.1.0
type LowNodeLoadArgs struct { metav1.TypeMeta // Paused indicates whether the LoadHotspot should to work or not. // Default is false Paused bool // DryRun means only execute the entire deschedule logic but don't migrate Pod // Default is false DryRun bool // NumberOfNodes can be configured to activate the strategy only when the number of under utilized nodes are above the configured value. // This could be helpful in large clusters where a few nodes could go under utilized frequently or for a short period of time. // By default, NumberOfNodes is set to zero. NumberOfNodes int32 // NodeMetricExpirationSeconds indicates the NodeMetric expiration in seconds. // When NodeMetrics expired, the node is considered abnormal, and should not be considered by deschedule plugin. // Default is 180 seconds. NodeMetricExpirationSeconds *int64 // Naming this one differently since namespaces are still // considered while considering resoures used by pods // but then filtered out before eviction EvictableNamespaces *Namespaces // NodeSelector selects the nodes that matched labelSelector NodeSelector *metav1.LabelSelector // PodSelectors selects the pods that matched labelSelector PodSelectors []LowNodeLoadPodSelector // NodeFit if enabled, it will check whether the candidate Pods have suitable nodes, including NodeAffinity, TaintTolerance, and whether resources are sufficient. // by default, NodeFit is set to true. NodeFit bool // If UseDeviationThresholds is set to `true`, the thresholds are considered as percentage deviations from mean resource usage. // `LowThresholds` will be deducted from the mean among all nodes and `HighThresholds` will be added to the mean. // A resource consumption above (resp. below) this window is considered as overutilization (resp. underutilization). UseDeviationThresholds bool // HighThresholds defines the target usage threshold of resources HighThresholds ResourceThresholds // LowThresholds defines the low usage threshold of resources LowThresholds ResourceThresholds // ResourceWeights indicates the weights of resources. // The weights of resources are both 1 by default. ResourceWeights map[corev1.ResourceName]int64 // AnomalyCondition indicates the node load anomaly thresholds, // the default is 5 consecutive times exceeding HighThresholds, // it is determined that the node is abnormal, and the Pods need to be migrated to reduce the load. AnomalyCondition *LoadAnomalyCondition // DetectorCacheTimeout indicates the cache expiration time of nodeAnomalyDetectors, the default is 5 minutes DetectorCacheTimeout *metav1.Duration // NodePools supports multiple different types of batch nodes to configure different strategies NodePools []LowNodeLoadNodePool }
func (*LowNodeLoadArgs) DeepCopy ¶ added in v1.1.0
func (in *LowNodeLoadArgs) DeepCopy() *LowNodeLoadArgs
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LowNodeLoadArgs.
func (*LowNodeLoadArgs) DeepCopyInto ¶ added in v1.1.0
func (in *LowNodeLoadArgs) DeepCopyInto(out *LowNodeLoadArgs)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*LowNodeLoadArgs) DeepCopyObject ¶ added in v1.1.0
func (in *LowNodeLoadArgs) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type LowNodeLoadNodePool ¶ added in v1.3.0
type LowNodeLoadNodePool struct { // Name represents the name of pool Name string // NodeSelector selects the nodes that matched labelSelector NodeSelector *metav1.LabelSelector // If UseDeviationThresholds is set to `true`, the thresholds are considered as percentage deviations from mean resource usage. // `LowThresholds` will be deducted from the mean among all nodes and `HighThresholds` will be added to the mean. // A resource consumption above (resp. below) this window is considered as overutilization (resp. underutilization). UseDeviationThresholds bool // HighThresholds defines the target usage threshold of resources HighThresholds ResourceThresholds // LowThresholds defines the low usage threshold of resources LowThresholds ResourceThresholds // ResourceWeights indicates the weights of resources. // The weights of resources are both 1 by default. ResourceWeights map[corev1.ResourceName]int64 // AnomalyCondition indicates the node load anomaly thresholds, // the default is 5 consecutive times exceeding HighThresholds, // it is determined that the node is abnormal, and the Pods need to be migrated to reduce the load. AnomalyCondition *LoadAnomalyCondition }
func (*LowNodeLoadNodePool) DeepCopy ¶ added in v1.3.0
func (in *LowNodeLoadNodePool) DeepCopy() *LowNodeLoadNodePool
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LowNodeLoadNodePool.
func (*LowNodeLoadNodePool) DeepCopyInto ¶ added in v1.3.0
func (in *LowNodeLoadNodePool) DeepCopyInto(out *LowNodeLoadNodePool)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LowNodeLoadPodSelector ¶ added in v1.1.0
type LowNodeLoadPodSelector struct { Name string // Selector label query over pods for migrated Selector *metav1.LabelSelector }
func (*LowNodeLoadPodSelector) DeepCopy ¶ added in v1.1.0
func (in *LowNodeLoadPodSelector) DeepCopy() *LowNodeLoadPodSelector
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LowNodeLoadPodSelector.
func (*LowNodeLoadPodSelector) DeepCopyInto ¶ added in v1.1.0
func (in *LowNodeLoadPodSelector) DeepCopyInto(out *LowNodeLoadPodSelector)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MigrationControllerArgs ¶
type MigrationControllerArgs struct { metav1.TypeMeta // DryRun means only execute the entire migration logic except create Reservation or Delete Pod // Default is false DryRun bool // MaxConcurrentReconciles is the maximum number of concurrent Reconciles which can be run. Defaults to 1. MaxConcurrentReconciles int32 // EvictFailedBarePods allows pods without ownerReferences and in failed phase to be evicted. EvictFailedBarePods bool // EvictLocalStoragePods allows pods using local storage to be evicted. EvictLocalStoragePods bool // EvictSystemCriticalPods allows eviction of pods of any priority (including Kubernetes system pods) EvictSystemCriticalPods bool // IgnorePVCPods prevents pods with PVCs from being evicted. IgnorePvcPods bool // PriorityThreshold filtering only pods under the threshold can be evicted PriorityThreshold *PriorityThreshold // LabelSelector sets whether to apply label filtering when evicting. // Any pod matching the label selector is considered evictable. LabelSelector *metav1.LabelSelector // Namespaces carries a list of included/excluded namespaces Namespaces *Namespaces // NodeFit if enabled, it will check whether the candidate Pods have suitable nodes, // including NodeAffinity, TaintTolerance, and whether resources are sufficient. NodeFit bool // NodeSelector for a set of nodes to operate over NodeSelector string // MaxMigratingPerNode represents he maximum number of pods that can be migrating during migrate per node. MaxMigratingPerNode *int32 // MaxMigratingPerNamespace represents he maximum number of pods that can be migrating during migrate per namespace. MaxMigratingPerNamespace *int32 // MaxMigratingPerWorkload represents he maximum number of pods that can be migrating during migrate per workload. // Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). MaxMigratingPerWorkload *intstr.IntOrString // The unavailable state includes NotRunning/NotReady/Migrating/Evicting // Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). MaxUnavailablePerWorkload *intstr.IntOrString // SkipCheckExpectedReplicas if enabled, it will allow eviction expectedReplicas equals maxUnavailable or maxMigrating. // Default is false SkipCheckExpectedReplicas *bool // ObjectLimiters control the frequency of migration/eviction to make it smoother, // and also protect Pods of the same class from being evicted frequently. // e.g. limiting the frequency of Pods of the same workload being evicted. // The default is to set the MigrationLimitObjectWorkload limiter. ObjectLimiters ObjectLimiterMap // DefaultJobMode represents the default operating mode of the PodMigrationJob // Default is PodMigrationJobModeReservationFirst DefaultJobMode string // DefaultJobTTL represents the default TTL of the PodMigrationJob // Default is 5 minute DefaultJobTTL metav1.Duration // EvictQPS controls the number of evict per second EvictQPS *Float64OrString // EvictBurst is the maximum number of tokens EvictBurst int32 // EvictionPolicy represents how to delete Pod, support "Delete" and "Eviction" and "SoftEviction", default value is "Eviction" EvictionPolicy string // DefaultDeleteOptions defines options when deleting migrated pods and preempted pods through the method specified by EvictionPolicy DefaultDeleteOptions *metav1.DeleteOptions // SchedulerNames defines options to assign schedulers that can handle reservation if pmj.mode is ReservationFirst, koord-scheduler by default. SchedulerNames []string // ArbitrationArgs defines the control parameters of the Arbitration Mechanism. ArbitrationArgs *ArbitrationArgs }
MigrationControllerArgs holds arguments used to configure the MigrationController
func (*MigrationControllerArgs) DeepCopy ¶
func (in *MigrationControllerArgs) DeepCopy() *MigrationControllerArgs
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MigrationControllerArgs.
func (*MigrationControllerArgs) DeepCopyInto ¶
func (in *MigrationControllerArgs) DeepCopyInto(out *MigrationControllerArgs)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MigrationControllerArgs) DeepCopyObject ¶
func (in *MigrationControllerArgs) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MigrationLimitObjectType ¶ added in v1.1.1
type MigrationLimitObjectType string
const (
MigrationLimitObjectWorkload MigrationLimitObjectType = "workload"
)
type MigrationObjectLimiter ¶ added in v1.1.1
type MigrationObjectLimiter struct { // Duration indicates the time window of the desired limit. Duration metav1.Duration // MaxMigrating indicates the maximum number of migrations/evictions allowed within the window time. // If configured as nil or 0, the maximum number will be calculated according to MaxMigratingPerWorkload. MaxMigrating *intstr.IntOrString }
MigrationObjectLimiter means that if the specified dimension has multiple migrations within the configured time period and exceeds the configured threshold, it will be limited.
func (*MigrationObjectLimiter) DeepCopy ¶ added in v1.1.1
func (in *MigrationObjectLimiter) DeepCopy() *MigrationObjectLimiter
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MigrationObjectLimiter.
func (*MigrationObjectLimiter) DeepCopyInto ¶ added in v1.1.1
func (in *MigrationObjectLimiter) DeepCopyInto(out *MigrationObjectLimiter)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Namespaces ¶
Namespaces carries a list of included/excluded namespaces for which a given strategy is applicable
func (*Namespaces) DeepCopy ¶
func (in *Namespaces) DeepCopy() *Namespaces
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Namespaces.
func (*Namespaces) DeepCopyInto ¶
func (in *Namespaces) DeepCopyInto(out *Namespaces)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ObjectLimiterMap ¶ added in v1.1.1
type ObjectLimiterMap map[MigrationLimitObjectType]MigrationObjectLimiter
func (ObjectLimiterMap) DeepCopy ¶ added in v1.1.1
func (in ObjectLimiterMap) DeepCopy() ObjectLimiterMap
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ObjectLimiterMap.
func (ObjectLimiterMap) DeepCopyInto ¶ added in v1.1.1
func (in ObjectLimiterMap) DeepCopyInto(out *ObjectLimiterMap)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Percentage ¶ added in v1.1.0
type Percentage float64
type Plugin ¶
type Plugin struct { // Name defines the name of plugin Name string }
func (*Plugin) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Plugin.
func (*Plugin) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PluginConfig ¶
func (*PluginConfig) DeepCopy ¶
func (in *PluginConfig) DeepCopy() *PluginConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PluginConfig.
func (*PluginConfig) DeepCopyInto ¶
func (in *PluginConfig) DeepCopyInto(out *PluginConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PluginSet ¶
func (*PluginSet) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PluginSet.
func (*PluginSet) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Plugins ¶
func (*Plugins) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Plugins.
func (*Plugins) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PriorityThreshold ¶
func (*PriorityThreshold) DeepCopy ¶
func (in *PriorityThreshold) DeepCopy() *PriorityThreshold
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PriorityThreshold.
func (*PriorityThreshold) DeepCopyInto ¶
func (in *PriorityThreshold) DeepCopyInto(out *PriorityThreshold)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ResourceThresholds ¶ added in v1.1.0
type ResourceThresholds map[corev1.ResourceName]Percentage
func (ResourceThresholds) DeepCopy ¶ added in v1.1.0
func (in ResourceThresholds) DeepCopy() ResourceThresholds
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceThresholds.
func (ResourceThresholds) DeepCopyInto ¶ added in v1.1.0
func (in ResourceThresholds) DeepCopyInto(out *ResourceThresholds)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package v1alpha2 is the v1alpha2 version of the descheduler API
|
Package v1alpha2 is the v1alpha2 version of the descheduler API |