Merge pull request #102884 from vinaykul/restart-free-pod-vertical-scaling

In-place Pod Vertical Scaling feature

Kubernetes-commit: b9fd1802ba0aec68508b4e9eec00819008a79370
This commit is contained in:
Kubernetes Publisher 2023-02-27 22:53:15 -08:00
commit 3a9f1f4bf0
4 changed files with 35 additions and 17 deletions

16
go.mod
View File

@ -42,12 +42,12 @@ require (
google.golang.org/protobuf v1.28.1
gopkg.in/natefinch/lumberjack.v2 v2.0.0
gopkg.in/square/go-jose.v2 v2.2.2
k8s.io/api v0.0.0-20230224170233-ec40acc5b8d7
k8s.io/apimachinery v0.0.0-20230223090012-28259f54ab7d
k8s.io/client-go v0.0.0-20230225010603-b46677097d03
k8s.io/api v0.0.0-20230228090259-b5b22ca1babf
k8s.io/apimachinery v0.0.0-20230227225516-80f59387d3d1
k8s.io/client-go v0.0.0-20230228090623-8f4ee7119f1d
k8s.io/component-base v0.0.0-20230215215219-ae9be4dda9da
k8s.io/klog/v2 v2.80.1
k8s.io/kms v0.0.0-20230227050942-c7df77c16432
k8s.io/kms v0.0.0-20230228010948-9674935696a9
k8s.io/kube-openapi v0.0.0-20230123231816-1cb3ae25d79a
k8s.io/utils v0.0.0-20230209194617-a36077c30491
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.1
@ -124,9 +124,9 @@ require (
)
replace (
k8s.io/api => k8s.io/api v0.0.0-20230224170233-ec40acc5b8d7
k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20230223090012-28259f54ab7d
k8s.io/client-go => k8s.io/client-go v0.0.0-20230225010603-b46677097d03
k8s.io/api => k8s.io/api v0.0.0-20230228090259-b5b22ca1babf
k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20230227225516-80f59387d3d1
k8s.io/client-go => k8s.io/client-go v0.0.0-20230228090623-8f4ee7119f1d
k8s.io/component-base => k8s.io/component-base v0.0.0-20230215215219-ae9be4dda9da
k8s.io/kms => k8s.io/kms v0.0.0-20230227050942-c7df77c16432
k8s.io/kms => k8s.io/kms v0.0.0-20230228010948-9674935696a9
)

16
go.sum
View File

@ -995,18 +995,18 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
k8s.io/api v0.0.0-20230224170233-ec40acc5b8d7 h1:QRn9B/c3nFBOr/y1ZvkxSj+8csklqfM0eKhJhQ7ujCo=
k8s.io/api v0.0.0-20230224170233-ec40acc5b8d7/go.mod h1:ZgBZcyAg9mrSMLoN3CT3jXA80Nglj1iAeLPjz64hQZ8=
k8s.io/apimachinery v0.0.0-20230223090012-28259f54ab7d h1:/diE2y6H2T5l0s265p3l0Dfi4S9vAH3mx0azm51dyEM=
k8s.io/apimachinery v0.0.0-20230223090012-28259f54ab7d/go.mod h1:8B/+OdWlScxVvirboh1J5IZSHQrCreQ7fi/5UQntvX0=
k8s.io/client-go v0.0.0-20230225010603-b46677097d03 h1:1e2qRaOenUEC2vO9pIlzDizWrrX/da6cmYwzjOlEB2w=
k8s.io/client-go v0.0.0-20230225010603-b46677097d03/go.mod h1:HRsm6qmqZE2rC0JWXUXAp5Z4usMnZMEcUdRZAYP5ghQ=
k8s.io/api v0.0.0-20230228090259-b5b22ca1babf h1:nOM4wjFnU0nlgQ5xSvS24ayMbBOFw1N/jyEj4ni0ugA=
k8s.io/api v0.0.0-20230228090259-b5b22ca1babf/go.mod h1:XAyCRdxxjlGJLzvSsIhA8Ccnsryd6Xh0CgmB3ah3AmQ=
k8s.io/apimachinery v0.0.0-20230227225516-80f59387d3d1 h1:Any9/HFr7VOfgDnp+b98WhCql/Tup2fuQD4QYMMSt60=
k8s.io/apimachinery v0.0.0-20230227225516-80f59387d3d1/go.mod h1:8B/+OdWlScxVvirboh1J5IZSHQrCreQ7fi/5UQntvX0=
k8s.io/client-go v0.0.0-20230228090623-8f4ee7119f1d h1:AJ80TdJqiuvAWNAL4OnY8tD6Vpx1i4QRGLlLAZWjJ9w=
k8s.io/client-go v0.0.0-20230228090623-8f4ee7119f1d/go.mod h1:WELbQXwndVIDiY4HhgmXdqz1/YjP6sjiGSaMCDvXGEI=
k8s.io/component-base v0.0.0-20230215215219-ae9be4dda9da h1:tgXu2y67YqUXP4txgy1vMTvOOqpT/kzIxmrtE0SvR8M=
k8s.io/component-base v0.0.0-20230215215219-ae9be4dda9da/go.mod h1:GgrhCRrPLmN9lWoh+m52a6iHKG3zx8KJyclgqPgbFDQ=
k8s.io/klog/v2 v2.80.1 h1:atnLQ121W371wYYFawwYx1aEY2eUfs4l3J72wtgAwV4=
k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
k8s.io/kms v0.0.0-20230227050942-c7df77c16432 h1:Pf2mrrdm8KKvSWuR0DW8bAV1OV/gWoNG9mk5/iqM1gQ=
k8s.io/kms v0.0.0-20230227050942-c7df77c16432/go.mod h1:95vU4VQJ4pv6xPzVy3RNBKX1O3wZzAh/w0333JsN9yI=
k8s.io/kms v0.0.0-20230228010948-9674935696a9 h1:DS2YWJWTqYfW0CKFs8I4JNJmgNazmK1YkswIVXjEB0Y=
k8s.io/kms v0.0.0-20230228010948-9674935696a9/go.mod h1:Tovm+0xkxOXzcRMnxTAcOeGkR6kcjfHsz0aB+ET/xuw=
k8s.io/kube-openapi v0.0.0-20230123231816-1cb3ae25d79a h1:s6zvHjyDQX1NtVT88pvw2tddqhqY0Bz0Gbnn+yctsFU=
k8s.io/kube-openapi v0.0.0-20230123231816-1cb3ae25d79a/go.mod h1:/BYxry62FuDzmI+i9B+X2pqfySRmSOW2ARmj5Zbqhj0=
k8s.io/utils v0.0.0-20230209194617-a36077c30491 h1:r0BAOLElQnnFhE/ApUsg3iHdVYYPBjNSSOMowRZxxsY=

View File

@ -35,8 +35,10 @@ import (
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apiserver/pkg/admission"
resourcequotaapi "k8s.io/apiserver/pkg/admission/plugin/resourcequota/apis/resourcequota"
"k8s.io/apiserver/pkg/features"
quota "k8s.io/apiserver/pkg/quota/v1"
"k8s.io/apiserver/pkg/quota/v1/generic"
"k8s.io/apiserver/pkg/util/feature"
"k8s.io/client-go/util/workqueue"
)
@ -516,9 +518,16 @@ func CheckRequest(quotas []corev1.ResourceQuota, a admission.Attributes, evaluat
if innerErr != nil {
return quotas, innerErr
}
if feature.DefaultFeatureGate.Enabled(features.InPlacePodVerticalScaling) {
// allow negative usage for pods as pod resources can increase or decrease
if a.GetResource().GroupResource() == corev1.Resource("pods") {
deltaUsage = quota.Subtract(deltaUsage, prevUsage)
}
} else {
deltaUsage = quota.SubtractWithNonNegativeResult(deltaUsage, prevUsage)
}
}
}
// ignore items in deltaUsage with zero usage
deltaUsage = quota.RemoveZeros(deltaUsage)

View File

@ -198,6 +198,13 @@ const (
//
// Enables support for watch bookmark events.
WatchBookmark featuregate.Feature = "WatchBookmark"
// owner: @vinaykul
// kep: http://kep.k8s.io/1287
// alpha: v1.27
//
// Enables In-Place Pod Vertical Scaling
InPlacePodVerticalScaling featuregate.Feature = "InPlacePodVerticalScaling"
)
func init() {
@ -249,4 +256,6 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS
StorageVersionHash: {Default: true, PreRelease: featuregate.Beta},
WatchBookmark: {Default: true, PreRelease: featuregate.GA, LockToDefault: true},
InPlacePodVerticalScaling: {Default: false, PreRelease: featuregate.Alpha},
}