diff --git a/third_party/go/patches/cadvisor-errdefs1.patch b/third_party/go/patches/cadvisor-errdefs1.patch
new file mode 100644
index 0000000..c044e7a
--- /dev/null
+++ b/third_party/go/patches/cadvisor-errdefs1.patch
@@ -0,0 +1,49 @@
+containerd released a 0.1 preview of errdefs which was changed significantly before
+containerd 2.0 was released together with the 1.0 version of the errdefs package.
+
+cadvisor uses this preview version which cannot coexist with v1, so adjust it for
+v1. Should go away on next cadvisor release as they will do this upstream.
+
+https://github.com/google/cadvisor/pull/3622
+https://github.com/kubernetes/kubernetes/issues/128572
+
+diff --git a/container/containerd/client.go b/container/containerd/client.go
+index ff5625170a..34134baf3e 100644
+--- a/container/containerd/client.go
++++ b/container/containerd/client.go
+@@ -26,7 +26,7 @@ import (
+ 	tasksapi "github.com/containerd/containerd/api/services/tasks/v1"
+ 	versionapi "github.com/containerd/containerd/api/services/version/v1"
+ 	tasktypes "github.com/containerd/containerd/api/types/task"
+-	"github.com/containerd/errdefs"
++	"github.com/containerd/errdefs/pkg/errgrpc"
+ 	"google.golang.org/grpc"
+ 	"google.golang.org/grpc/backoff"
+ 	"google.golang.org/grpc/credentials/insecure"
+@@ -114,7 +114,7 @@ func (c *client) LoadContainer(ctx context.Context, id string) (*containers.Cont
+ 		ID: id,
+ 	})
+ 	if err != nil {
+-		return nil, errdefs.FromGRPC(err)
++		return nil, errgrpc.ToNative(err)
+ 	}
+ 	return containerFromProto(r.Container), nil
+ }
+@@ -124,7 +124,7 @@ func (c *client) TaskPid(ctx context.Context, id string) (uint32, error) {
+ 		ContainerID: id,
+ 	})
+ 	if err != nil {
+-		return 0, errdefs.FromGRPC(err)
++		return 0, errgrpc.ToNative(err)
+ 	}
+ 	if response.Process.Status == tasktypes.Status_UNKNOWN {
+ 		return 0, ErrTaskIsInUnknownState
+@@ -135,7 +135,7 @@ func (c *client) TaskPid(ctx context.Context, id string) (uint32, error) {
+ func (c *client) Version(ctx context.Context) (string, error) {
+ 	response, err := c.versionService.Version(ctx, &emptypb.Empty{})
+ 	if err != nil {
+-		return "", errdefs.FromGRPC(err)
++		return "", errgrpc.ToNative(err)
+ 	}
+ 	return response.Version, nil
+ }
diff --git a/third_party/go/patches/k8s-drop-legacy-log-path.patch b/third_party/go/patches/k8s-drop-legacy-log-path.patch
index 5c164ca..44fb6aa 100644
--- a/third_party/go/patches/k8s-drop-legacy-log-path.patch
+++ b/third_party/go/patches/k8s-drop-legacy-log-path.patch
@@ -1,4 +1,4 @@
-From 4d98a0637eee66923b854ef75653f74aeb37240b Mon Sep 17 00:00:00 2001
+From 7844c9ec1cdef485731a4858a48b854986387591 Mon Sep 17 00:00:00 2001
 From: Lorenz Brun <lorenz@monogon.tech>
 Date: Wed, 16 Mar 2022 18:10:09 +0100
 Subject: [PATCH] Drop legacy log path
@@ -7,15 +7,14 @@
  pkg/kubelet/kubelet.go                        |  7 ---
  .../kuberuntime/kuberuntime_container.go      | 36 ---------------
  pkg/kubelet/kuberuntime/kuberuntime_gc.go     | 46 -------------------
- pkg/kubelet/runonce.go                        |  8 ----
  test/e2e_node/log_path_test.go                | 18 --------
- 5 files changed, 115 deletions(-)
+ 4 files changed, 107 deletions(-)
 
 diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go
-index 5d848de88fb..0495eaed7d1 100644
+index b8bbfece860..e6aa5e8359b 100644
 --- a/pkg/kubelet/kubelet.go
 +++ b/pkg/kubelet/kubelet.go
-@@ -1506,13 +1506,6 @@ func (kl *Kubelet) initializeModules() error {
+@@ -1589,13 +1589,6 @@ func (kl *Kubelet) initializeModules() error {
  		return err
  	}
  
@@ -26,16 +25,16 @@
 -		}
 -	}
 -
- 	if sysruntime.GOOS == "windows" {
+ 	if goos == "windows" {
  		// On Windows we should not allow other users to read the logs directory
  		// to avoid allowing non-root containers from reading the logs of other containers.
 diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container.go b/pkg/kubelet/kuberuntime/kuberuntime_container.go
-index b049540d0d3..7b1baa29c14 100644
+index a154754d285..df87ff82f7d 100644
 --- a/pkg/kubelet/kuberuntime/kuberuntime_container.go
 +++ b/pkg/kubelet/kuberuntime/kuberuntime_container.go
-@@ -285,25 +285,6 @@ func (m *kubeGenericRuntimeManager) startContainer(ctx context.Context, podSandb
+@@ -286,25 +286,6 @@ func (m *kubeGenericRuntimeManager) startContainer(ctx context.Context, podSandb
  	}
- 	m.recordContainerEvent(pod, container, containerID, v1.EventTypeNormal, events.StartedContainer, fmt.Sprintf("Started container %s", container.Name))
+ 	m.recordContainerEvent(pod, container, containerID, v1.EventTypeNormal, events.StartedContainer, "Started container %v", container.Name)
  
 -	// Symlink container logs to the legacy container log location for cluster logging
 -	// support.
@@ -59,7 +58,7 @@
  	// Step 4: execute the post start hook.
  	if container.Lifecycle != nil && container.Lifecycle.PostStart != nil {
  		kubeContainerID := kubecontainer.ContainerID{
-@@ -1317,23 +1298,6 @@ func (m *kubeGenericRuntimeManager) removeContainerLog(ctx context.Context, cont
+@@ -1335,23 +1316,6 @@ func (m *kubeGenericRuntimeManager) removeContainerLog(ctx context.Context, cont
  		return err
  	}
  
@@ -147,32 +146,6 @@
  	return nil
  }
  
-diff --git a/pkg/kubelet/runonce.go b/pkg/kubelet/runonce.go
-index 448df444869..d5ecd47337f 100644
---- a/pkg/kubelet/runonce.go
-+++ b/pkg/kubelet/runonce.go
-@@ -19,7 +19,6 @@ package kubelet
- import (
- 	"context"
- 	"fmt"
--	"os"
- 	"time"
- 
- 	v1 "k8s.io/api/core/v1"
-@@ -50,13 +49,6 @@ func (kl *Kubelet) RunOnce(updates <-chan kubetypes.PodUpdate) ([]RunPodResult,
- 		return nil, err
- 	}
- 
--	// If the container logs directory does not exist, create it.
--	if _, err := os.Stat(ContainerLogsDir); err != nil {
--		if err := kl.os.MkdirAll(ContainerLogsDir, 0755); err != nil {
--			klog.ErrorS(err, "Failed to create directory", "path", ContainerLogsDir)
--		}
--	}
--
- 	select {
- 	case u := <-updates:
- 		klog.InfoS("Processing manifest with pods", "numPods", len(u.Pods))
 diff --git a/test/e2e_node/log_path_test.go b/test/e2e_node/log_path_test.go
 index a1589e6d91e..179206eb1dd 100644
 --- a/test/e2e_node/log_path_test.go
@@ -210,5 +183,5 @@
  			ginkgo.It("should print log to correct cri log path", func(ctx context.Context) {
  
 -- 
-2.44.1
+2.47.0
 
