14

I am using Raspberry pi for kubernetes cluster setup. I was using below docker version:

Client:
 Version:           18.06.1-ce
 API version:       1.38
 Go version:        go1.10.3
 Git commit:        e68fc7a
 Built:             Tue Aug 21 17:30:52 2018
 OS/Arch:           linux/arm
 Experimental:      false

Server:
 Engine:
 Version:          18.06.1-ce
 API version:      1.38 (minimum version 1.12)
 Go version:       go1.10.3
 Git commit:       e68fc7a
 Built:            Tue Aug 21 17:26:37 2018
 OS/Arch:          linux/arm
 Experimental:     false

Looks like now the docker version latest is 18.09.0 and the latest kubernetes version is not supporting this docker version. I have even tried installing some older version of kube like 1.9.7 or 1.9.6 but while initiating the kubeadm init, I am getting the below error:

[ERROR SystemVerification]: unsupported docker version: 18.09.0
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`

Which version should I specify for kubernetes and docker to run properly. Also how can we specify version while insatlling docker. I normally use below command to install docker:

curl -sSL get.docker.com | sh 
S Andrew
  • 5,592
  • 27
  • 115
  • 237

4 Answers4

31

In Kubernetes there is nothing like supported. Instead of it they use validated - it means that all features were tested and validated with some Docker version.

And validated Docker versions are still the same from Kubernetes version 1.8 until 1.11: Docker 1.11.2 to 1.13.1 and 17.03.x. See here: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.8.md#external-dependencies and here https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.11.md#external-dependencies

Starting from Kubernetes version 1.12 Docker 17.06, 17.09 and 18.06 started to be also validated. See here: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.12.md#external-dependencies

As I know final version of Docker 18.09 was released 4 days ago so here we cannot expect this version to be validated in Kubernetes now.

Update (9.4.2019): Docker 18.09 is validated against newly released Kubernetes 1.14: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.14.md#external-dependencies


You can specify exact Docker version for the get.docker.com script by VERSION variable:

export VERSION=18.03 && curl -sSL get.docker.com | sh
cgrim
  • 4,890
  • 1
  • 23
  • 42
  • Where should I put this variable definition so that get.docker.script could see it? – pensnarik Dec 03 '18 at 07:04
  • You can use that "one line" command or explicitly run `export VERSION=18.06` and then in the second step `curl -sSL get.docker.com | sh`. It is an environment variable. – cgrim Dec 03 '18 at 07:42
8

Here's how I "fixed" mine:

$ sudo kubeadm init --ignore-preflight-errors=SystemVerification
...
        [WARNING SystemVerification]: unsupported docker version: 18.09.0

Here's what I saw when "preflight errors" were not ignored:

$ sudo kubeadm init
...
[preflight] Some fatal errors occurred:
        [ERROR SystemVerification]: unsupported docker version: 18.09.0
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`

Here's the version of kubeadm I used:

$ kubeadm version --output json
{
  "clientVersion": {
    "major": "1",
    "minor": "12",
    "gitVersion": "v1.12.2",
    "gitCommit": "17c77c7898218073f14c8d573582e8d2313dc740",
    "gitTreeState": "clean",
    "buildDate": "2018-10-24T06:51:33Z",
    "goVersion": "go1.10.4",
    "compiler": "gc",
    "platform": "linux/amd64"
  }
}
rubicks
  • 4,912
  • 1
  • 30
  • 41
4

As mentioned above, the message is more of a warning that not all features were tested against that specific Docker release. On your own risk, you can try to temporarily ignore those errors by using the --ignore-preflight-errors flag. Eg : kubedam init --ignore-preflight-errors all

dev_dan
  • 89
  • 6
2

I solved this problem as:

kubeadm init --ignore-preflight-errors=SystemVerification

  • stuck at $ sudo kubeadm join 127.0.0.1:6443 --token XXXr42jr --discovery-token-ca-cert-hash sha256:bad5XXXX -->> error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR IsDockerSystemdCheck]: cannot execute 'docker info': exit status 125 [ERROR SystemVerification]: failed executing "docker info --format '{{json .}}'"\noutput: flag provided but not defined: --format See 'docker info --help'. \nerror: exit status 125 [preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...` – Ashish Karpe Oct 24 '19 at 13:30
  • --ignore-preflight-errors=SystemVerification --ignore-preflight-errors=IsDockerSystemdCheck – Ashish Karpe Oct 24 '19 at 13:31