mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-05 10:19:50 +00:00
Merge pull request #128682 from tallclair/ippr-beta
[FG:InPlacePodVerticalScaling] Graduate to Beta
This commit is contained in:
commit
79e5584257
@ -309,6 +309,23 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
|
|||||||
c.FuzzNoCustom(ct) // fuzz self without calling this function again
|
c.FuzzNoCustom(ct) // fuzz self without calling this function again
|
||||||
ct.TerminationMessagePath = "/" + ct.TerminationMessagePath // Must be non-empty
|
ct.TerminationMessagePath = "/" + ct.TerminationMessagePath // Must be non-empty
|
||||||
ct.TerminationMessagePolicy = "File"
|
ct.TerminationMessagePolicy = "File"
|
||||||
|
// Match defaulting in pkg/apis/core/v1/defaults.go.
|
||||||
|
_, hasCPUReq := ct.Resources.Requests[core.ResourceCPU]
|
||||||
|
_, hasCPULim := ct.Resources.Limits[core.ResourceCPU]
|
||||||
|
_, hasMemReq := ct.Resources.Requests[core.ResourceMemory]
|
||||||
|
_, hasMemLim := ct.Resources.Limits[core.ResourceMemory]
|
||||||
|
if hasCPUReq || hasCPULim {
|
||||||
|
ct.ResizePolicy = append(ct.ResizePolicy, core.ContainerResizePolicy{
|
||||||
|
ResourceName: core.ResourceCPU,
|
||||||
|
RestartPolicy: core.NotRequired,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if hasMemReq || hasMemLim {
|
||||||
|
ct.ResizePolicy = append(ct.ResizePolicy, core.ContainerResizePolicy{
|
||||||
|
ResourceName: core.ResourceMemory,
|
||||||
|
RestartPolicy: core.NotRequired,
|
||||||
|
})
|
||||||
|
}
|
||||||
},
|
},
|
||||||
func(ep *core.EphemeralContainer, c fuzz.Continue) {
|
func(ep *core.EphemeralContainer, c fuzz.Continue) {
|
||||||
c.FuzzNoCustom(ep) // fuzz self without calling this function again
|
c.FuzzNoCustom(ep) // fuzz self without calling this function again
|
||||||
|
@ -404,6 +404,7 @@ var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate
|
|||||||
|
|
||||||
InPlacePodVerticalScaling: {
|
InPlacePodVerticalScaling: {
|
||||||
{Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Alpha},
|
{Version: version.MustParse("1.27"), Default: false, PreRelease: featuregate.Alpha},
|
||||||
|
{Version: version.MustParse("1.32"), Default: true, PreRelease: featuregate.Beta},
|
||||||
},
|
},
|
||||||
|
|
||||||
InPlacePodVerticalScalingAllocatedStatus: {
|
InPlacePodVerticalScalingAllocatedStatus: {
|
||||||
|
@ -1264,6 +1264,11 @@ func verifyActions(t *testing.T, expected, actual *podActions, desc string) {
|
|||||||
actual.ContainersToKill[k] = info
|
actual.ContainersToKill[k] = info
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if expected.ContainersToUpdate == nil && actual.ContainersToUpdate != nil {
|
||||||
|
// No need to distinguish empty and nil maps for the test.
|
||||||
|
expected.ContainersToUpdate = map[v1.ResourceName][]containerToUpdateInfo{}
|
||||||
|
}
|
||||||
assert.Equal(t, expected, actual, desc)
|
assert.Equal(t, expected, actual, desc)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -179,6 +179,7 @@ func NewManager(kubeClient clientset.Interface, podManager PodManager, podDeleti
|
|||||||
podDeletionSafety: podDeletionSafety,
|
podDeletionSafety: podDeletionSafety,
|
||||||
podStartupLatencyHelper: podStartupLatencyHelper,
|
podStartupLatencyHelper: podStartupLatencyHelper,
|
||||||
stateFileDirectory: stateFileDirectory,
|
stateFileDirectory: stateFileDirectory,
|
||||||
|
state: state.NewNoopStateCheckpoint(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -202,9 +203,6 @@ func isPodStatusByKubeletEqual(oldStatus, status *v1.PodStatus) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *manager) Start() {
|
func (m *manager) Start() {
|
||||||
// Initialize m.state to no-op state checkpoint manager
|
|
||||||
m.state = state.NewNoopStateCheckpoint()
|
|
||||||
|
|
||||||
// Create pod allocation checkpoint manager even if client is nil so as to allow local get/set of AllocatedResources & Resize
|
// Create pod allocation checkpoint manager even if client is nil so as to allow local get/set of AllocatedResources & Resize
|
||||||
if utilfeature.DefaultFeatureGate.Enabled(features.InPlacePodVerticalScaling) {
|
if utilfeature.DefaultFeatureGate.Enabled(features.InPlacePodVerticalScaling) {
|
||||||
stateImpl, err := state.NewStateCheckpoint(m.stateFileDirectory, podStatusManagerStateFile)
|
stateImpl, err := state.NewStateCheckpoint(m.stateFileDirectory, podStatusManagerStateFile)
|
||||||
|
@ -25,7 +25,6 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/api/resource"
|
"k8s.io/apimachinery/pkg/api/resource"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
"k8s.io/kubernetes/test/e2e/feature"
|
|
||||||
"k8s.io/kubernetes/test/e2e/framework"
|
"k8s.io/kubernetes/test/e2e/framework"
|
||||||
e2enode "k8s.io/kubernetes/test/e2e/framework/node"
|
e2enode "k8s.io/kubernetes/test/e2e/framework/node"
|
||||||
e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
|
e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
|
||||||
@ -1174,7 +1173,7 @@ func doPodResizeErrorTests(f *framework.Framework) {
|
|||||||
// Above tests are performed by doSheduletTests() and doPodResizeResourceQuotaTests()
|
// Above tests are performed by doSheduletTests() and doPodResizeResourceQuotaTests()
|
||||||
// in test/e2e/node/pod_resize.go
|
// in test/e2e/node/pod_resize.go
|
||||||
|
|
||||||
var _ = SIGDescribe("Pod InPlace Resize Container", framework.WithSerial(), feature.InPlacePodVerticalScaling, "[NodeAlphaFeature:InPlacePodVerticalScaling]", func() {
|
var _ = SIGDescribe("Pod InPlace Resize Container", framework.WithSerial(), func() {
|
||||||
f := framework.NewDefaultFramework("pod-resize-tests")
|
f := framework.NewDefaultFramework("pod-resize-tests")
|
||||||
|
|
||||||
ginkgo.BeforeEach(func(ctx context.Context) {
|
ginkgo.BeforeEach(func(ctx context.Context) {
|
||||||
|
@ -186,9 +186,6 @@ var (
|
|||||||
// Ingress.networking.k8s.io to be present.
|
// Ingress.networking.k8s.io to be present.
|
||||||
Ingress = framework.WithFeature(framework.ValidFeatures.Add("Ingress"))
|
Ingress = framework.WithFeature(framework.ValidFeatures.Add("Ingress"))
|
||||||
|
|
||||||
// TODO: document the feature (owning SIG, when to use this feature for a test)
|
|
||||||
InPlacePodVerticalScaling = framework.WithFeature(framework.ValidFeatures.Add("InPlacePodVerticalScaling"))
|
|
||||||
|
|
||||||
// Owner: sig-network
|
// Owner: sig-network
|
||||||
// Marks tests that require a cluster with dual-stack pod and service networks.
|
// Marks tests that require a cluster with dual-stack pod and service networks.
|
||||||
IPv6DualStack = framework.WithFeature(framework.ValidFeatures.Add("IPv6DualStack"))
|
IPv6DualStack = framework.WithFeature(framework.ValidFeatures.Add("IPv6DualStack"))
|
||||||
|
@ -27,7 +27,6 @@ import (
|
|||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
resourceapi "k8s.io/kubernetes/pkg/api/v1/resource"
|
resourceapi "k8s.io/kubernetes/pkg/api/v1/resource"
|
||||||
"k8s.io/kubernetes/test/e2e/feature"
|
|
||||||
"k8s.io/kubernetes/test/e2e/framework"
|
"k8s.io/kubernetes/test/e2e/framework"
|
||||||
e2enode "k8s.io/kubernetes/test/e2e/framework/node"
|
e2enode "k8s.io/kubernetes/test/e2e/framework/node"
|
||||||
e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
|
e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
|
||||||
@ -356,7 +355,7 @@ func doPodResizeSchedulerTests(f *framework.Framework) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ = SIGDescribe(framework.WithSerial(), "Pod InPlace Resize Container (scheduler-focused)", feature.InPlacePodVerticalScaling, func() {
|
var _ = SIGDescribe(framework.WithSerial(), "Pod InPlace Resize Container (scheduler-focused)", func() {
|
||||||
f := framework.NewDefaultFramework("pod-resize-scheduler-tests")
|
f := framework.NewDefaultFramework("pod-resize-scheduler-tests")
|
||||||
ginkgo.BeforeEach(func(ctx context.Context) {
|
ginkgo.BeforeEach(func(ctx context.Context) {
|
||||||
node, err := e2enode.GetRandomReadySchedulableNode(ctx, f.ClientSet)
|
node, err := e2enode.GetRandomReadySchedulableNode(ctx, f.ClientSet)
|
||||||
@ -368,7 +367,7 @@ var _ = SIGDescribe(framework.WithSerial(), "Pod InPlace Resize Container (sched
|
|||||||
doPodResizeSchedulerTests(f)
|
doPodResizeSchedulerTests(f)
|
||||||
})
|
})
|
||||||
|
|
||||||
var _ = SIGDescribe("Pod InPlace Resize Container", feature.InPlacePodVerticalScaling, func() {
|
var _ = SIGDescribe("Pod InPlace Resize Container", func() {
|
||||||
f := framework.NewDefaultFramework("pod-resize-tests")
|
f := framework.NewDefaultFramework("pod-resize-tests")
|
||||||
|
|
||||||
ginkgo.BeforeEach(func(ctx context.Context) {
|
ginkgo.BeforeEach(func(ctx context.Context) {
|
||||||
|
@ -540,6 +540,10 @@
|
|||||||
lockToDefault: false
|
lockToDefault: false
|
||||||
preRelease: Alpha
|
preRelease: Alpha
|
||||||
version: "1.27"
|
version: "1.27"
|
||||||
|
- default: true
|
||||||
|
lockToDefault: false
|
||||||
|
preRelease: Beta
|
||||||
|
version: "1.32"
|
||||||
- name: InPlacePodVerticalScalingAllocatedStatus
|
- name: InPlacePodVerticalScalingAllocatedStatus
|
||||||
versionedSpecs:
|
versionedSpecs:
|
||||||
- default: false
|
- default: false
|
||||||
|
Loading…
Reference in New Issue
Block a user