github.com/kubewharf/katalyst-core@v0.5.3/pkg/config/agent/eviction/eviciton_base.go (about) 1 /* 2 Copyright 2022 The Katalyst Authors. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 package eviction 18 19 import ( 20 "time" 21 22 "k8s.io/apimachinery/pkg/util/sets" 23 ) 24 25 type GenericEvictionConfiguration struct { 26 // Inner plugins is the list of plugins implemented in katalyst to enable or disable 27 // '*' means "all enabled by default" 28 // 'foo' means "enable 'foo'" 29 // '-foo' means "disable 'foo'" 30 // first item for a particular name wins 31 InnerPlugins []string 32 33 // ConditionTransitionPeriod is duration the eviction manager has to wait before transitioning out of a condition. 34 ConditionTransitionPeriod time.Duration 35 36 // EvictionManagerSyncPeriod is the interval duration that eviction manager fetches information from registered plugins 37 EvictionManagerSyncPeriod time.Duration 38 39 // those two variables are used to filter out eviction-free pods 40 EvictionSkippedAnnotationKeys sets.String 41 EvictionSkippedLabelKeys sets.String 42 43 // EvictionBurst limit the burst eviction counts 44 EvictionBurst int 45 46 // PodKiller specify the pod killer implementation 47 PodKiller string 48 49 // StrictAuthentication means whether to authenticate plugins strictly 50 StrictAuthentication bool 51 52 // PodMetricLabels defines the pod labels to be added in metric selector lists 53 PodMetricLabels sets.String 54 } 55 56 type EvictionConfiguration struct { 57 *ReclaimedResourcesEvictionConfiguration 58 *MemoryPressureEvictionConfiguration 59 *CPUPressureEvictionConfiguration 60 } 61 62 func NewGenericEvictionConfiguration() *GenericEvictionConfiguration { 63 return &GenericEvictionConfiguration{ 64 EvictionSkippedAnnotationKeys: sets.NewString(), 65 EvictionSkippedLabelKeys: sets.NewString(), 66 PodMetricLabels: sets.NewString(), 67 } 68 } 69 70 func NewEvictionConfiguration() *EvictionConfiguration { 71 return &EvictionConfiguration{ 72 ReclaimedResourcesEvictionConfiguration: NewReclaimedResourcesEvictionConfiguration(), 73 MemoryPressureEvictionConfiguration: NewMemoryPressureEvictionPluginConfiguration(), 74 CPUPressureEvictionConfiguration: NewCPUPressureEvictionConfiguration(), 75 } 76 }