From e89547d308b8dca725ddb82a3d4a8f5093264537 Mon Sep 17 00:00:00 2001 From: Sascha Grunert Date: Mon, 16 Jan 2023 10:21:08 +0100 Subject: [PATCH] Check for all errors in CRI connection validation We only have one CRI API (v1) to validate during the initial connection of the kubelet with the container runtime. Therefore we can now verify all kind of GRPC related issues. Fixes: https://github.com/kubernetes/kubernetes/issues/114956 Signed-off-by: Sascha Grunert --- pkg/kubelet/cri/remote/remote_image.go | 10 +++------- pkg/kubelet/cri/remote/remote_runtime.go | 8 +++----- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/pkg/kubelet/cri/remote/remote_image.go b/pkg/kubelet/cri/remote/remote_image.go index ee005d99038..1deff550fd8 100644 --- a/pkg/kubelet/cri/remote/remote_image.go +++ b/pkg/kubelet/cri/remote/remote_image.go @@ -25,9 +25,7 @@ import ( "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" "go.opentelemetry.io/otel/trace" "google.golang.org/grpc" - "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials/insecure" - "google.golang.org/grpc/status" utilfeature "k8s.io/apiserver/pkg/util/feature" tracing "k8s.io/component-base/tracing" "k8s.io/klog/v2" @@ -93,13 +91,11 @@ func (r *remoteImageService) validateServiceConnection(ctx context.Context, conn klog.V(4).InfoS("Validating the CRI v1 API image version") r.imageClient = runtimeapi.NewImageServiceClient(conn) - if _, err := r.imageClient.ImageFsInfo(ctx, &runtimeapi.ImageFsInfoRequest{}); err == nil { - klog.V(2).InfoS("Validated CRI v1 image API") - - } else if status.Code(err) == codes.Unimplemented { - return fmt.Errorf("CRI v1 image API is not implemented for endpoint %q: %w", endpoint, err) + if _, err := r.imageClient.ImageFsInfo(ctx, &runtimeapi.ImageFsInfoRequest{}); err != nil { + return fmt.Errorf("validate CRI v1 image API for endpoint %q: %w", endpoint, err) } + klog.V(2).InfoS("Validated CRI v1 image API") return nil } diff --git a/pkg/kubelet/cri/remote/remote_runtime.go b/pkg/kubelet/cri/remote/remote_runtime.go index cd7b02efb74..7a886bda395 100644 --- a/pkg/kubelet/cri/remote/remote_runtime.go +++ b/pkg/kubelet/cri/remote/remote_runtime.go @@ -117,13 +117,11 @@ func (r *remoteRuntimeService) validateServiceConnection(ctx context.Context, co klog.V(4).InfoS("Validating the CRI v1 API runtime version") r.runtimeClient = runtimeapi.NewRuntimeServiceClient(conn) - if _, err := r.runtimeClient.Version(ctx, &runtimeapi.VersionRequest{}); err == nil { - klog.V(2).InfoS("Validated CRI v1 runtime API") - - } else if status.Code(err) == codes.Unimplemented { - return fmt.Errorf("CRI v1 runtime API is not implemented for endpoint %q: %w", endpoint, err) + if _, err := r.runtimeClient.Version(ctx, &runtimeapi.VersionRequest{}); err != nil { + return fmt.Errorf("validate CRI v1 runtime API for endpoint %q: %w", endpoint, err) } + klog.V(2).InfoS("Validated CRI v1 runtime API") return nil }