From 903f635ab33fc30c65b1b4a9353182a9efbd3603 Mon Sep 17 00:00:00 2001 From: Yu-Ju Hong Date: Mon, 15 Apr 2019 11:29:58 -0700 Subject: [PATCH] dockershim: Fix negotiating docker API version API version negotiation needs to happen before any meaningful docker calls, including simple commands such as "/version". --- .../dockershim/libdocker/kube_docker_client.go | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/pkg/kubelet/dockershim/libdocker/kube_docker_client.go b/pkg/kubelet/dockershim/libdocker/kube_docker_client.go index e458a8fc706..7f961297a53 100644 --- a/pkg/kubelet/dockershim/libdocker/kube_docker_client.go +++ b/pkg/kubelet/dockershim/libdocker/kube_docker_client.go @@ -85,15 +85,12 @@ func newKubeDockerClient(dockerClient *dockerapi.Client, requestTimeout, imagePu timeout: requestTimeout, imagePullProgressDeadline: imagePullProgressDeadline, } + // Notice that this assumes that docker is running before kubelet is started. - v, err := k.Version() - if err != nil { - klog.Errorf("failed to retrieve docker version: %v", err) - klog.Warningf("Using empty version for docker client, this may sometimes cause compatibility issue.") - } else { - // Update client version with real api version. - dockerClient.NegotiateAPIVersionPing(dockertypes.Ping{APIVersion: v.APIVersion}) - } + ctx, cancel := k.getTimeoutContext() + defer cancel() + dockerClient.NegotiateAPIVersion(ctx) + return k }