diff --git a/pkg/api/pod/util.go b/pkg/api/pod/util.go index e7e6ae61482..7370a7b13fd 100644 --- a/pkg/api/pod/util.go +++ b/pkg/api/pod/util.go @@ -19,10 +19,10 @@ package pod import ( "strings" + "github.com/google/go-cmp/cmp" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metavalidation "k8s.io/apimachinery/pkg/apis/meta/v1/validation" - "k8s.io/apimachinery/pkg/util/diff" utilfeature "k8s.io/apiserver/pkg/util/feature" api "k8s.io/kubernetes/pkg/apis/core" "k8s.io/kubernetes/pkg/apis/core/helper" @@ -850,7 +850,7 @@ func MarkPodProposedForResize(oldPod, newPod *api.Pod) { if c.Resources.Requests == nil { continue } - if diff.ObjectDiff(oldPod.Spec.Containers[i].Resources, c.Resources) == "" { + if cmp.Equal(oldPod.Spec.Containers[i].Resources, c.Resources) { continue } findContainerStatus := func(css []api.ContainerStatus, cName string) (api.ContainerStatus, bool) { @@ -862,7 +862,7 @@ func MarkPodProposedForResize(oldPod, newPod *api.Pod) { return api.ContainerStatus{}, false } if cs, ok := findContainerStatus(newPod.Status.ContainerStatuses, c.Name); ok { - if diff.ObjectDiff(c.Resources.Requests, cs.AllocatedResources) != "" { + if !cmp.Equal(c.Resources.Requests, cs.AllocatedResources) { newPod.Status.Resize = api.PodResizeStatusProposed break } diff --git a/pkg/apis/core/v1/defaults_test.go b/pkg/apis/core/v1/defaults_test.go index feeeb12caec..9279f34f398 100644 --- a/pkg/apis/core/v1/defaults_test.go +++ b/pkg/apis/core/v1/defaults_test.go @@ -23,6 +23,7 @@ import ( "strings" "testing" + "github.com/google/go-cmp/cmp" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -2113,7 +2114,7 @@ func TestSetDefaultResizePolicy(t *testing.T) { testPod.Spec.Containers = append(testPod.Spec.Containers, tc.testContainer) output := roundTrip(t, runtime.Object(&testPod)) pod2 := output.(*v1.Pod) - if diff.ObjectDiff(pod2.Spec.Containers[0].ResizePolicy, tc.expectedResizePolicy) != "" { + if !cmp.Equal(pod2.Spec.Containers[0].ResizePolicy, tc.expectedResizePolicy) { t.Errorf("expected resize policy %+v, but got %+v", tc.expectedResizePolicy, pod2.Spec.Containers[0].ResizePolicy) } }) diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index e2902fdb7da..50f973a727b 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -32,6 +32,7 @@ import ( "time" cadvisorapi "github.com/google/cadvisor/info/v1" + "github.com/google/go-cmp/cmp" libcontaineruserns "github.com/opencontainers/runc/libcontainer/userns" "github.com/opencontainers/selinux/go-selinux" "go.opentelemetry.io/otel/attribute" @@ -47,7 +48,6 @@ import ( "k8s.io/apimachinery/pkg/fields" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/types" - "k8s.io/apimachinery/pkg/util/diff" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/wait" @@ -2602,8 +2602,7 @@ func isPodResizeInProgress(pod *v1.Pod, podStatus *v1.PodStatus) bool { if cs.Resources == nil { continue } - if diff.ObjectDiff(c.Resources.Limits, cs.Resources.Limits) != "" || - diff.ObjectDiff(cs.AllocatedResources, cs.Resources.Requests) != "" { + if !cmp.Equal(c.Resources.Limits, cs.Resources.Limits) || !cmp.Equal(cs.AllocatedResources, cs.Resources.Requests) { return true } } @@ -2673,7 +2672,7 @@ func (kl *Kubelet) handlePodResourcesResize(pod *v1.Pod) *v1.Pod { klog.V(5).InfoS("ContainerStatus.AllocatedResources length mismatch", "pod", pod.Name, "container", container.Name) break } - if len(diff.ObjectDiff(container.Resources.Requests, containerStatus.AllocatedResources)) > 0 { + if !cmp.Equal(container.Resources.Requests, containerStatus.AllocatedResources) { podResized = true break } diff --git a/pkg/kubelet/kubelet_pods.go b/pkg/kubelet/kubelet_pods.go index f43a4655da7..7d53bdcf01b 100644 --- a/pkg/kubelet/kubelet_pods.go +++ b/pkg/kubelet/kubelet_pods.go @@ -29,12 +29,12 @@ import ( "sort" "strings" + "github.com/google/go-cmp/cmp" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/types" - "k8s.io/apimachinery/pkg/util/diff" "k8s.io/apimachinery/pkg/util/sets" utilvalidation "k8s.io/apimachinery/pkg/util/validation" utilfeature "k8s.io/apiserver/pkg/util/feature" @@ -1500,7 +1500,7 @@ func (kl *Kubelet) determinePodResizeStatus(pod *v1.Pod, podStatus *v1.PodStatus specStatusDiffer := false for _, c := range pod.Spec.Containers { if cs, ok := podutil.GetContainerStatus(podStatus.ContainerStatuses, c.Name); ok { - if cs.Resources != nil && diff.ObjectDiff(c.Resources, *cs.Resources) != "" { + if cs.Resources != nil && !cmp.Equal(c.Resources, *cs.Resources) { specStatusDiffer = true break } diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container_linux_test.go b/pkg/kubelet/kuberuntime/kuberuntime_container_linux_test.go index b7bc0ade742..56f1c153951 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_container_linux_test.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_container_linux_test.go @@ -33,7 +33,6 @@ import ( v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/util/diff" utilfeature "k8s.io/apiserver/pkg/util/feature" featuregatetesting "k8s.io/component-base/featuregate/testing" runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1" @@ -882,7 +881,7 @@ func TestGenerateLinuxContainerResources(t *testing.T) { } resources := m.generateLinuxContainerResources(pod, &pod.Spec.Containers[0], false) tc.expected.HugepageLimits = resources.HugepageLimits - if diff.ObjectDiff(resources, tc.expected) != "" { + if !cmp.Equal(resources, tc.expected) { t.Errorf("Test %s: expected resources %+v, but got %+v", tc.name, tc.expected, resources) } }) diff --git a/pkg/kubelet/kuberuntime/kuberuntime_manager.go b/pkg/kubelet/kuberuntime/kuberuntime_manager.go index 9c9cc56d5ae..16c08f8d2ec 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_manager.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_manager.go @@ -26,6 +26,7 @@ import ( "time" cadvisorapi "github.com/google/cadvisor/info/v1" + "github.com/google/go-cmp/cmp" "go.opentelemetry.io/otel/trace" crierror "k8s.io/cri-api/pkg/errors" "k8s.io/klog/v2" @@ -34,7 +35,6 @@ import ( "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" kubetypes "k8s.io/apimachinery/pkg/types" - "k8s.io/apimachinery/pkg/util/diff" utilruntime "k8s.io/apimachinery/pkg/util/runtime" utilversion "k8s.io/apimachinery/pkg/util/version" utilfeature "k8s.io/apiserver/pkg/util/feature" @@ -553,7 +553,7 @@ func (m *kubeGenericRuntimeManager) computePodResizeAction(pod *v1.Pod, containe if !exists || apiContainerStatus.State.Running == nil || apiContainerStatus.Resources == nil || kubeContainerStatus.State != kubecontainer.ContainerStateRunning || kubeContainerStatus.ID.String() != apiContainerStatus.ContainerID || - len(diff.ObjectDiff(container.Resources.Requests, apiContainerStatus.AllocatedResources)) != 0 { + !cmp.Equal(container.Resources.Requests, apiContainerStatus.AllocatedResources) { return true } diff --git a/test/e2e/node/pod_resize.go b/test/e2e/node/pod_resize.go index 5a37f4075dd..3f805c2a9ca 100644 --- a/test/e2e/node/pod_resize.go +++ b/test/e2e/node/pod_resize.go @@ -29,7 +29,6 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/types" - "k8s.io/apimachinery/pkg/util/diff" clientset "k8s.io/client-go/kubernetes" podutil "k8s.io/kubernetes/pkg/api/v1/pod" resourceapi "k8s.io/kubernetes/pkg/api/v1/resource" @@ -43,6 +42,7 @@ import ( imageutils "k8s.io/kubernetes/test/utils/image" semver "github.com/blang/semver/v4" + "github.com/google/go-cmp/cmp" "github.com/onsi/ginkgo/v2" "github.com/onsi/gomega" ) @@ -281,7 +281,7 @@ func verifyPodAllocations(pod *v1.Pod, tcInfo []TestContainerInfo, flagError boo if flagError { framework.ExpectEqual(tcStatus.AllocatedResources, cStatus.AllocatedResources) } - if diff.ObjectDiff(cStatus.AllocatedResources, tcStatus.AllocatedResources) != "" { + if !cmp.Equal(cStatus.AllocatedResources, tcStatus.AllocatedResources) { return false } } @@ -453,7 +453,7 @@ func waitForPodResizeActuation(c clientset.Interface, podClient *e2epod.PodClien } differs := false for idx, c := range pod.Spec.Containers { - if diff.ObjectDiff(c.Resources, *pod.Status.ContainerStatuses[idx].Resources) != "" { + if !cmp.Equal(c.Resources, *pod.Status.ContainerStatuses[idx].Resources) { differs = true break }