features

package
v1.8.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 16, 2026 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// PodMutatingWebhook enables mutating webhook for Pods creations.
	PodMutatingWebhook featuregate.Feature = "PodMutatingWebhook"

	// PodValidatingWebhook enables validating webhook for Pods creations or updates.
	PodValidatingWebhook featuregate.Feature = "PodValidatingWebhook"

	// ElasticQuotaMutatingWebhook enables mutating webhook for ElasticQuotas  creations
	ElasticQuotaMutatingWebhook featuregate.Feature = "ElasticMutatingWebhook"

	// ElasticQuotaValidatingWebhook enables validating webhook for ElasticQuotas creations or updates
	ElasticQuotaValidatingWebhook featuregate.Feature = "ElasticValidatingWebhook"

	// NodeMutatingWebhook enables mutating webhook for Node Creation or updates
	NodeMutatingWebhook featuregate.Feature = "NodeMutatingWebhook"

	// NodeValidatingWebhook enables validating webhook for Node Creation or updates
	NodeValidatingWebhook featuregate.Feature = "NodeValidatingWebhook"

	// ConfigMapValidatingWebhook enables validating webhook for configmap Creation or updates
	ConfigMapValidatingWebhook featuregate.Feature = "ConfigMapValidatingWebhook"

	// ReservationMutatingWebhook enables mutating webhook for Reservations creations.
	ReservationMutatingWebhook featuregate.Feature = "ReservationMutatingWebhook"

	// ColocationProfileSkipMutatingResources config whether to update resourceName according to priority by default
	ColocationProfileSkipMutatingResources featuregate.Feature = "ColocationProfileSkipMutatingResources"

	// ColocationProfileSkipValidatingPriority config whether to validate label priority
	ColocationProfileSkipValidatingPriority featuregate.Feature = "ColocationProfileSkipValidatingPriority"

	// WebhookFramework enables webhook framework, global feature-gate for webhook
	WebhookFramework featuregate.Feature = "WebhookFramework"

	// MultiQuotaTree enables multi quota tree.
	MultiQuotaTree featuregate.Feature = "MultiQuotaTree"

	// ElasticQuotaIgnorePodOverhead ignore pod.spec.overhead when accounting pod requests
	ElasticQuotaIgnorePodOverhead featuregate.Feature = "ElasticQuotaIgnorePodOverhead"

	// ElasticQuotaIgnoreTerminatingPod ignore the terminating pod.
	ElasticQuotaIgnoreTerminatingPod featuregate.Feature = "ElasticQuotaIgnoreTerminatingPod"

	// ElasticQuotaImmediateIgnoreTerminatingPod ignore the terminating pod immediately.
	ElasticQuotaImmediateIgnoreTerminatingPod featuregate.Feature = "ElasticQuotaImmediateIgnoreTerminatingPod"

	// ElasticQuotaGuaranteeUsage enable guarantee the quota usage
	// In some specific scenarios, resources that have been allocated to users are considered
	// to belong to the users and will not be preempted back.
	ElasticQuotaGuaranteeUsage featuregate.Feature = "ElasticQuotaGuaranteeUsage"

	// ElasticQuotaEnableUpdateResourceKey allows to update resource key in standard operation
	// when delete resource type: from child to parent
	// when add resource type: from parent to child
	ElasticQuotaEnableUpdateResourceKey featuregate.Feature = "ElasticQuotaEnableUpdateResourceKey"

	// ElasticQuotaEvaluationTransformPod enables transforming pod before evaluating quota
	ElasticQuotaEvaluationTransformPod featuregate.Feature = "ElasticQuotaEvaluationTransformPod"

	// DisableDefaultQuota disable default quota.
	DisableDefaultQuota featuregate.Feature = "DisableDefaultQuota"

	// SupportParentQuotaSubmitPod enables parent Quota submit pod
	SupportParentQuotaSubmitPod featuregate.Feature = "SupportParentQuotaSubmitPod"

	// EnableQuotaAdmission enables quota admission.
	EnableQuotaAdmission featuregate.Feature = "EnableQuotaAdmission"

	// EnablePodEnhancedValidator enables enhanced validator for pods with configurable rules.
	EnablePodEnhancedValidator featuregate.Feature = "EnablePodEnhancedValidator"

	// Enable sync GPU shared resource from Device CRD
	EnableSyncGPUSharedResource featuregate.Feature = "EnableSyncGPUSharedResource"

	// ColocationProfileController enables the reconciliation for ClusterColocationProfile.
	ColocationProfileController featuregate.Feature = "ColocationProfileController"

	// ValidatePodDeviceResource enables validate pod device resource
	ValidatePodDeviceResource featuregate.Feature = "ValidatePodDeviceResource"
)
View Source
const (
	// PriorityTransformer is used to map the pod priority to priority classes defined by Koordinator.
	// If a pod does not set a priorityClass, it will be mapped to the DefaultPriorityClass.
	PriorityTransformer featuregate.Feature = "PriorityTransformer"
	// PreemptionPolicyTransformer is used to take over the pod preemption policy with the specified label.
	// If a pod does not set a preemptionPolicy, it will be mapped to the DefaultPreemptionPolicy.
	PreemptionPolicyTransformer featuregate.Feature = "PreemptionPolicyTransformer"
	// ReplaceResourcesTransformer is used to replace resource or erase specified resource names.
	// Note: The usage scenarios must ensure that the resources on the node are not oversold by itself.
	ReplaceResourcesTransformer featuregate.Feature = "ReplaceResourcesTransformer"
)
View Source
const (
	// owner: @zwzhang0107
	// alpha: v0.1
	//
	// AuditEvents is used to audit recent events.
	AuditEvents featuregate.Feature = "AuditEvents"

	// owner: @zwzhang0107
	// alpha: v0.1
	//
	// AuditEventsHTTPHandler is used to get recent events from koordlet port.
	AuditEventsHTTPHandler featuregate.Feature = "AuditEventsHTTPHandler"

	// owner: @zwzhang0107 @saintube
	// alpha: v0.1
	// beta: v1.1
	//
	// BECPUSuppress suppresses cpuset for best-effort pod according to node cpu usage.
	BECPUSuppress featuregate.Feature = "BECPUSuppress"

	// owner: @zwzhang0107 @saintube
	// alpha: v1.4
	//
	// BECPUManager manages cpuset of best-effort pod, this feature cannot work with BECPUSuppress together
	// TODO use BECPUManager to replace BECPUSuppress for advanced cpu management for be pods
	BECPUManager featuregate.Feature = "BECPUManager"

	// owner: @zwzhang0107 @saintube
	// alpha: v0.4
	//
	// BECPUEvict evicts best-effort pod when they lack of resource.
	BECPUEvict featuregate.Feature = "BECPUEvict"

	// owner: @zwzhang0107 @saintube
	// alpha: v0.4
	//
	// BEMemoryEvict evict best-effort pod based on node memory usage.
	BEMemoryEvict featuregate.Feature = "BEMemoryEvict"

	// owner: @lijunxin559
	// alpha: v1.7
	//
	// CPUEvict evicts those configured priority pods when node lack of resource.
	CPUEvict featuregate.Feature = "CPUEvict"

	// owner: @lijunxin559
	// alpha: v1.7
	//
	// MemoryEvict evicts those configured priority pods when node lack of resource.
	MemoryEvict featuregate.Feature = "MemoryEvict"

	// owner: @lijunxin559
	// alpha: v1.8
	//
	// CPUAllocatableEvict evicts those configured priority pods when node lack of allocatable cpu.
	CPUAllocatableEvict featuregate.Feature = "CPUAllocatableEvict"

	// owner: @lijunxin559
	// alpha: v1.8
	//
	// MemoryAllocatableEvict evicts those configured priority pods when node lack of allocatable memory.
	MemoryAllocatableEvict featuregate.Feature = "MemoryAllocatableEvict"

	// owner: @saintube @zwzhang0107
	// alpha: v0.2
	// beta: v1.1
	//
	// CPUBurst set cpu.cfs_burst_us; scale up cpu.cfs_quota_us if pod cpu throttled
	CPUBurst featuregate.Feature = "CPUBurst"

	// owner: @chzhj @saintube @zwzhang0107
	// alpha: v1.2
	// SystemConfig set /proc/sys/vm/min_free_kbytes; /proc/sys/vm/watermark_scale_factor
	SystemConfig featuregate.Feature = "SystemConfig"

	// owner: @saintube @zwzhang0107
	// alpha: v0.3
	// beta: v1.1
	//
	// RdtResctrl sets intel rdt resctrl for processes belonging to ls or be pods
	RdtResctrl featuregate.Feature = "RdtResctrl"

	// owner: @saintube @zwzhang0107
	// alpha: v0.3
	//
	// CgroupReconcile reconciles qos config for resources like cpu, memory, disk, etc.
	// This will be divided into several independent features according to
	// https://github.com/koordinator-sh/koordinator/issues/174
	CgroupReconcile featuregate.Feature = "CgroupReconcile"

	// owner: @Joseph @zwzhang0107
	// alpha: v0.5
	// beta: v1.1
	//
	// NodeTopologyReport report node topology info to api-server through crd.
	NodeTopologyReport featuregate.Feature = "NodeTopologyReport"

	// owner: @jasonliu747 @Joseph
	// alpha: v0.6
	//
	// Accelerators enables GPU related feature in koordlet. Only Nvidia GPUs supported.
	Accelerators featuregate.Feature = "Accelerators"

	// owner: @ZiMengSheng
	// alpha: v1.6
	//
	// NetDevices enables RDMA related feature in koordlet.
	RDMADevices featuregate.Feature = "RDMADevices"

	// owner: @songtao98 @zwzhang0107
	// alpha: v1.0
	//
	// CPICollector enables cpi collector feature of koordlet.
	CPICollector featuregate.Feature = "CPICollector"

	// owner: @bowen-intel
	// alpha: v0.1
	//
	// Libpfm4 enables libpfm4 feature of koordlet.
	Libpfm4 featuregate.Feature = "Libpfm4"

	// owner: @Rouzip
	// alpha: v0.1
	//
	// ResctrlCollector enables resctrl collector feature of koordlet.
	ResctrlCollector featuregate.Feature = "ResctrlCollector"

	// owner: @songtao98 @zwzhang0107
	// alpha: v1.0
	//
	// PSICollector enables psi collector feature of koordlet.
	PSICollector featuregate.Feature = "PSICollector"

	// owner: @TheBeatles1994 @chzhj @zwzhang0107
	// alpha: v1.3
	//
	// BlkIOReconcile enables block I/O QoS feature of koordlet.
	BlkIOReconcile featuregate.Feature = "BlkIOReconcile"

	// owner: @BUPT-wxq
	// alpha v1.4
	//
	// ColdPageCollector enables coldPageCollector feature of koordlet.
	ColdPageCollector featuregate.Feature = "ColdPageCollector"

	// HugePageReport enables hugepage collector feature of koordlet.
	// This feature supports reporting of hugepages.
	// The koord-scheduler will allocate hugepage information based on the user's hugepage request and add it to the Pod's annotations.
	// Format: scheduling.koordinator.sh/resource-status: '{"numaNodeResources":[{"node":1,"resources":{"hugepages-1Gi":"50Gi"}}]}'.
	// Backend applications can enable the hugepages based on the allocation results.
	// For example, the CSI mounts the pre-allocated hugepages into the pod.
	HugePageReport featuregate.Feature = "HugePageReport"

	// owner: @ZiMengSheng
	// alpha: v1.6
	//
	// PodResourcesProxy enabled hooked podResources of kubelet provided by koordlet.
	// It provides a grpc service to enable discovery of pod resources allocated by koordinator system.
	PodResourcesProxy featuregate.Feature = "PodResourcesProxy"

	// owner: @qinfustu
	// alpha v1.7
	//
	// HamiCoreVGPUMonitor enables the vGPU monitoring for HAMi-core.
	HamiCoreVGPUMonitor featuregate.Feature = "HamiCoreVGPUMonitor"
)
View Source
const (
	// owner: @joseph
	// alpha: v0.1
	//
	// CompatibleCSIStorageCapacity is used to set a custom CSIStorageCapacity informer to
	// be compatible with clusters that do not support v1.CSIStorageCapacity.
	// The k8s v1.22 version needs to enable the FeatureGate
	CompatibleCSIStorageCapacity featuregate.Feature = "CompatibleCSIStorageCapacity"

	// owner: @joseph
	// alpha: v0.1
	//
	// DisableCSIStorageCapacityInformer is used to disable CSIStorageCapacity informer
	// Versions below k8s v1.22 need to enable the FeatureGate
	DisableCSIStorageCapacityInformer featuregate.Feature = "DisableCSIStorageCapacityInformer"

	// owner: @joseph
	// alpha: v0.1
	//
	// CompatiblePodDisruptionBudget is used to set a custom PodDisruptionBudget informer to
	// be compatible with clusters that do not support v1.PodDisruptionBudget.
	// Versions below k8s v1.22 need to enable the FeatureGate
	CompatiblePodDisruptionBudget featuregate.Feature = "CompatiblePodDisruptionBudget"

	// owner: @joseph
	// alpha: v0.1
	//
	// DisablePodDisruptionBudgetInformer is used to disable PodDisruptionBudget informer
	DisablePodDisruptionBudgetInformer featuregate.Feature = "DisablePodDisruptionBudgetInformer"

	// owner: @saintube
	// alpha: v1.8
	//
	// DisableDynamicResourceAllocationInformer is used to disable DynamicResourceAllocation
	// (DRA) informers (ResourceClaims, ResourceSlices, DeviceClasses, DeviceTaintRules) for
	// clusters that do not support resource.k8s.io/v1 (i.e., Kubernetes < 1.32).
	DisableDynamicResourceAllocationInformer featuregate.Feature = "DisableDynamicResourceAllocationInformer"

	// owner: @joseph
	// alpha: v0.1
	//
	// ResizePod is used to enable resize pod feature
	ResizePod featuregate.Feature = "ResizePod"

	// owner: @saintube @ZiMengSheng
	// alpha: v1.5
	//
	// LazyReservationRestore is used to restore reserved resources lazily to improve the scheduling performance.
	LazyReservationRestore featuregate.Feature = "LazyReservationRestore"

	// owner: @saintube @ZiMengSheng
	// alpha: v1.6
	//
	// OmitNodeLabelsForReservation is used to omit node labels while matching reservation affinity.
	OmitNodeLabelsForReservation featuregate.Feature = "OmitNodeLabelsForReservation"

	// owner: @saintube @ZiMengSheng
	// alpha: v1.7
	//
	// SkipReservationFitsNode is used to skip reservation fits node when the logic is repeated by NodeResourceFits.
	SkipReservationFitsNode featuregate.Feature = "SkipReservationFitsNode"

	// owner: @zqzten
	// alpha: v1.7
	//
	// DevicePluginAdaption enables adaption for third party device plugins within device share scheduling.
	DevicePluginAdaption featuregate.Feature = "DevicePluginAdaption"

	// owner: @saintube
	// alpha: v1.7
	//
	// CleanExpiredReservationAllocated is used to clean expired reservation allocated annotations of pods.
	CleanExpiredReservationAllocated featuregate.Feature = "CleanExpiredReservationAllocated"

	// owner: @saintube @ZiMengSheng
	// alpha: v1.7
	//
	// DynamicSchedulerCheck is used to check the scheduler name when a pod or a reservation can change it dynamically.
	DynamicSchedulerCheck featuregate.Feature = "DynamicSchedulerCheck"

	CSIStorageCapacity featuregate.Feature = "CSIStorageCapacity"

	GenericEphemeralVolume featuregate.Feature = "GenericEphemeralVolume"

	PodDisruptionBudget featuregate.Feature = "PodDisruptionBudget"

	// owner: @ZiMengSheng
	// alpha: v1.7
	//
	// SyncBarrier enables a synchronization barrier mechanism during scheduler leader election.
	// When enabled, the newly elected leader will patch a dedicated "barrier pod" to ensure its
	// local informer cache has fully caught up with the API server's state. This prevents
	// resource overcommitment caused by scheduling pods based on a stale cache from the
	// previous leader's final moments.
	SyncBarrier featuregate.Feature = "SyncBarrier"
)
View Source
const (
	DisablePVCReservation featuregate.Feature = "DisablePVCReservation"
)

Variables

View Source
var (
	DefaultMutableKoordletFeatureGate featuregate.MutableFeatureGate = featuregate.NewFeatureGate()
	DefaultKoordletFeatureGate        featuregate.FeatureGate        = DefaultMutableKoordletFeatureGate
)

Functions

func IsFeatureDisabled added in v1.1.0

func IsFeatureDisabled(nodeSLO *slov1alpha1.NodeSLO, feature featuregate.Feature) (bool, error)

IsFeatureDisabled returns whether the featuregate is disabled by nodeSLO config

func SetDefaultFeatureGates

func SetDefaultFeatureGates()

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL