<p>I'm following this <a href="https://kubecloud.io/setting-up-a-kubernetes-1-11-raspberry-pi-cluster-using-kubeadm-952bbda329c8" rel="nofollow noreferrer">tutorial</a> to create a Raspberry Pi Kubernetes cluster. This is what my config looks like:</p>

<pre><code>apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
controllerManagerExtraArgs:
  pod-eviction-timeout: 10s
  node-monitor-grace-period: 10s

</code></pre>

<p>The problem is, when I run <code>sudo kubeadm init --config kubeadm_conf.yaml</code> I get the following error:</p>

<pre><code>your configuration file uses an old API spec: "kubeadm.k8s.io/v1alpha1". Please use kubeadm v1.11 instead and run 'kubeadm config migrate --old-config old.yaml --new-config new.yaml', which will write the new, similar spec using a newer API version.
</code></pre>

<p>I've tried looking <a href="https://linuxacademy.com/community/posts/show/topic/31110-your-configuration-file-uses-an-old-api-spec-kubeadmk8siov1" rel="nofollow noreferrer">here</a> for help, but nothing's worked. Help is appreciated.</p>

<p>If I use v1beta1"</p>

<pre><code>&gt;W0505 13:10:25.319213   15824 strict.go:47] unknown configuration schema.GroupVersionKind{Group:"kubeadm.k8s.io", Version:"v1beta1", Kind:"MasterConfiguration"}                                                                                                                                    for scheme definitions in "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/scheme/scheme.go:31" and "k8s.io/kubernetes/cmd/kubeadm/app/componentconfigs/scheme.go:28"
[config] WARNING: Ignored YAML document with GroupVersionKind kubeadm.k8s.io/v1beta1, Kind=MasterConfiguration
no InitConfiguration or ClusterConfiguration kind was found in the YAML file
</code></pre>

<ol>
<li>Verify versions:</li>
</ol>

<pre><code>    kubeadm version
    kubeadm config view
</code></pre>

<ol start="2">
<li>Generate default settings for your init command to see your settings (should be modified):</li>
</ol>

<pre><code>    kubeadm init --config defaults
</code></pre>

<ol start="3">
<li>Did you try the solution provided by the output?</li>
</ol>

<pre><code>     kubeadm config migrate --old-config old.yaml --new-config new.yaml
</code></pre>

<p>You can find tutorial about <a href="https://medium.com/@kosta709/kubernetes-by-kubeadm-config-yamls-94e2ee11244" rel="nofollow noreferrer">kubeadm init --config</a></p>

<p>In addition if you are using older version please take a look for <a href="https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-init/#config-file" rel="nofollow noreferrer">documentation</a></p>

<blockquote>
  <p>It is recommended that you migrate your old v1alpha3 configuration to v1beta1 using the kubeadm config migrate command, because v1alpha3 will be removed in Kubernetes 1.15.
  For more details on each field in the v1beta1 configuration you can navigate to our <a href="https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1" rel="nofollow noreferrer">API reference pages</a></p>
</blockquote>

<p>Migration from old kubeadm config versions:</p>

<blockquote>
  <p>kubeadm v1.11 should be used to migrate v1alpha1 to v1alpha2; kubeadm v1.12 should be used to translate v1alpha2 to v1alpha3)</p>
</blockquote>

<p>Fo the second issue <code>no InitConfiguration or ClusterConfiguration kind was found in the YAML file</code> there is also answer in docs:</p>

<blockquote>
  <p>When executing kubeadm init with the --config option, the following configuration types could be used: InitConfiguration, ClusterConfiguration, KubeProxyConfiguration, KubeletConfiguration, but only one between InitConfiguration and ClusterConfiguration is mandatory.</p>
</blockquote>
