<p>I am using a Kubernetes cluster version <code>1.10.4</code>.  I want to update it to 1.12 but first, I need to update it to 1.11 how it is possible? </p>

<p>I read this FAQ:
<a href="https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-1-11/" rel="nofollow noreferrer">https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-1-11/</a></p>

<p>But it did not work. Steps try to update immediately to 1.12 and that ending with an error. :(</p>

<p>Help!</p>

<p>Reproduced your issue  by installing v.1.10.4 version and trying to upgrade it to v.1.11.0 using <a href="https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-1-11/" rel="nofollow noreferrer">https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-1-11/</a> FAQ.</p>

<p>The same error and attempt to upgrade to 1.12.1 instead of 1.11.0</p>

<blockquote>
  <p>[upgrade/config] FATAL: invalid configuration: kind and apiVersion is
  mandatory information that needs to be specified in all YAML documents</p>
</blockquote>

<p>This is happening because you pass v1.12.1 to $VERSION while using below command:</p>

<pre><code>export VERSION=$(curl -sSL https://dl.k8s.io/release/stable.txt)

root@kube-update-11:~# echo $VERSION
</code></pre>

<blockquote>
  <p>v1.12.1</p>
</blockquote>

<p>What you should do is manually set proper version:</p>

<pre><code>export VERSION=v1.11.0
export ARCH=amd64
curl -sSL https://dl.k8s.io/release/${VERSION}/bin/linux/${ARCH}/kubeadm &gt; /usr/bin/kubeadm
chmod a+rx /usr/bin/kubeadm
</code></pre>

<p>And try again</p>

<pre><code>root@kube-update-11:~# kubeadm upgrade plan
</code></pre>

<blockquote>
  <p>[preflight] Running pre-flight checks.</p>
  
  <p>[upgrade] Making sure the cluster is healthy:</p>
  
  <p>[upgrade/config] Making sure the configuration is correct:</p>
  
  <p>[upgrade/config] Reading configuration from the cluster...</p>
  
  <p>[upgrade/config] FYI: You can look at this config file with 'kubectl
  -n kube-system get cm kubeadm-config -oyaml'</p>
  
  <p>I1022 12:07:11.188895   20089 feature_gate.go:230] feature gates:
  &amp;{map[]}</p>
  
  <p>[upgrade] Fetching available versions to upgrade to</p>
  
  <p>[upgrade/versions] Cluster version: v1.10.4</p>
  
  <p>[upgrade/versions] kubeadm version: v1.11.0</p>
  
  <p>[upgrade/versions] Latest stable version: v1.12.1</p>
  
  <p>[upgrade/versions] Latest version in the v1.10 series: v1.10.9</p>
</blockquote>

<pre><code>root@kube-update-11:~# kubeadm upgrade apply v1.11.0
</code></pre>

<blockquote>
  <p>[preflight] Running pre-flight checks.</p>
  
  <p>[upgrade] Making sure the cluster is healthy:</p>
  
  <p>[upgrade/config] Making sure the configuration is correct:</p>
  
  <p>...</p>
  
  <p>[upgrade/version] You have chosen to change the cluster version to
  "v1.11.0"</p>
  
  <p>[upgrade/versions] Cluster version: v1.10.4</p>
  
  <p>[upgrade/versions] kubeadm version: v1.11.0</p>
  
  <p>...</p>
  
  <p>[upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.11.0".
  Enjoy!</p>
  
  <p>[upgrade/kubelet] Now that your control plane is upgraded, please
  proceed with upgrading your kubelets if you haven't already done so.</p>
</blockquote>
