mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 13:37:30 +00:00
Merge pull request #76413 from yue9944882/chore/feature-gates
Add feature gates for switching between the legacy inflight limiting
This commit is contained in:
commit
ca0c44641f
@ -519,6 +519,7 @@ var defaultKubernetesFeatureGates = map[utilfeature.Feature]utilfeature.FeatureS
|
|||||||
genericfeatures.APIListChunking: {Default: true, PreRelease: utilfeature.Beta},
|
genericfeatures.APIListChunking: {Default: true, PreRelease: utilfeature.Beta},
|
||||||
genericfeatures.DryRun: {Default: true, PreRelease: utilfeature.Beta},
|
genericfeatures.DryRun: {Default: true, PreRelease: utilfeature.Beta},
|
||||||
genericfeatures.ServerSideApply: {Default: false, PreRelease: utilfeature.Alpha},
|
genericfeatures.ServerSideApply: {Default: false, PreRelease: utilfeature.Alpha},
|
||||||
|
genericfeatures.RequestManagement: {Default: false, PreRelease: utilfeature.Alpha},
|
||||||
|
|
||||||
// inherited features from apiextensions-apiserver, relisted here to get a conflict if it is changed
|
// inherited features from apiextensions-apiserver, relisted here to get a conflict if it is changed
|
||||||
// unintentionally on either side:
|
// unintentionally on either side:
|
||||||
|
@ -115,6 +115,13 @@ const (
|
|||||||
//
|
//
|
||||||
// Enables support for watch bookmark events.
|
// Enables support for watch bookmark events.
|
||||||
WatchBookmark utilfeature.Feature = "WatchBookmark"
|
WatchBookmark utilfeature.Feature = "WatchBookmark"
|
||||||
|
|
||||||
|
// owner: @MikeSpreitzer @yue9944882
|
||||||
|
// alpha: v1.15
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Enables managing request concurrency with prioritization and fairness at each server
|
||||||
|
RequestManagement utilfeature.Feature = "RequestManagement"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@ -137,4 +144,5 @@ var defaultKubernetesFeatureGates = map[utilfeature.Feature]utilfeature.FeatureS
|
|||||||
WinOverlay: {Default: false, PreRelease: utilfeature.Alpha},
|
WinOverlay: {Default: false, PreRelease: utilfeature.Alpha},
|
||||||
WinDSR: {Default: false, PreRelease: utilfeature.Alpha},
|
WinDSR: {Default: false, PreRelease: utilfeature.Alpha},
|
||||||
WatchBookmark: {Default: false, PreRelease: utilfeature.Alpha},
|
WatchBookmark: {Default: false, PreRelease: utilfeature.Alpha},
|
||||||
|
RequestManagement: {Default: false, PreRelease: utilfeature.Alpha},
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,7 @@ package options
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"k8s.io/apiserver/pkg/features"
|
||||||
"net"
|
"net"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -51,6 +52,7 @@ type ServerRunOptions struct {
|
|||||||
// apiserver library can wire it to a flag.
|
// apiserver library can wire it to a flag.
|
||||||
MaxRequestBodyBytes int64
|
MaxRequestBodyBytes int64
|
||||||
TargetRAMMB int
|
TargetRAMMB int
|
||||||
|
EnableInfightQuotaHandler bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewServerRunOptions() *ServerRunOptions {
|
func NewServerRunOptions() *ServerRunOptions {
|
||||||
@ -104,12 +106,28 @@ func (s *ServerRunOptions) Validate() []error {
|
|||||||
if s.TargetRAMMB < 0 {
|
if s.TargetRAMMB < 0 {
|
||||||
errors = append(errors, fmt.Errorf("--target-ram-mb can not be negative value"))
|
errors = append(errors, fmt.Errorf("--target-ram-mb can not be negative value"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if s.EnableInfightQuotaHandler {
|
||||||
|
if !utilfeature.DefaultFeatureGate.Enabled(features.RequestManagement) {
|
||||||
|
errors = append(errors, fmt.Errorf("--enable-inflight-quota-handler can not be set if feature "+
|
||||||
|
"gate RequestManagement is disabled"))
|
||||||
|
}
|
||||||
|
if s.MaxMutatingRequestsInFlight != 0 {
|
||||||
|
errors = append(errors, fmt.Errorf("--max-mutating-requests-inflight=%v "+
|
||||||
|
"can not be set if enabled inflight quota handler", s.MaxMutatingRequestsInFlight))
|
||||||
|
}
|
||||||
|
if s.MaxRequestsInFlight != 0 {
|
||||||
|
errors = append(errors, fmt.Errorf("--max-requests-inflight=%v "+
|
||||||
|
"can not be set if enabled inflight quota handler", s.MaxRequestsInFlight))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
if s.MaxRequestsInFlight < 0 {
|
if s.MaxRequestsInFlight < 0 {
|
||||||
errors = append(errors, fmt.Errorf("--max-requests-inflight can not be negative value"))
|
errors = append(errors, fmt.Errorf("--max-requests-inflight can not be negative value"))
|
||||||
}
|
}
|
||||||
if s.MaxMutatingRequestsInFlight < 0 {
|
if s.MaxMutatingRequestsInFlight < 0 {
|
||||||
errors = append(errors, fmt.Errorf("--max-mutating-requests-inflight can not be negative value"))
|
errors = append(errors, fmt.Errorf("--max-mutating-requests-inflight can not be negative value"))
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if s.RequestTimeout.Nanoseconds() < 0 {
|
if s.RequestTimeout.Nanoseconds() < 0 {
|
||||||
errors = append(errors, fmt.Errorf("--request-timeout can not be negative value"))
|
errors = append(errors, fmt.Errorf("--request-timeout can not be negative value"))
|
||||||
@ -174,5 +192,8 @@ func (s *ServerRunOptions) AddUniversalFlags(fs *pflag.FlagSet) {
|
|||||||
"handler, which picks a randomized value above this number as the connection timeout, "+
|
"handler, which picks a randomized value above this number as the connection timeout, "+
|
||||||
"to spread out load.")
|
"to spread out load.")
|
||||||
|
|
||||||
|
fs.BoolVar(&s.EnableInfightQuotaHandler, "enable-inflight-quota-handler", s.EnableInfightQuotaHandler, ""+
|
||||||
|
"If true, replace the max-in-flight handler with an enhanced one that queues and dispatches with priority and fairness")
|
||||||
|
|
||||||
utilfeature.DefaultMutableFeatureGate.AddFlag(fs)
|
utilfeature.DefaultMutableFeatureGate.AddFlag(fs)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user