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
 }
