<p>I created a Kubernetes cluster a few days ago with 1 Master and 1 worker Node. Now I want to add another node to the cluster, but the token printed by the original "kubeadm init" on the master has expired (by default after 24 hours).</p>

<p>The "kubeadm join" command have a "--discovery-file". It takes a config file and I have tried with the format I found here:</p>

<p><a href="https://github.com/kubernetes/kubeadm/blob/master/docs/design/design_v1.8.md" rel="noreferrer">https://github.com/kubernetes/kubeadm/blob/master/docs/design/design_v1.8.md</a></p>

<pre><code>apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: &lt;really long certificate data&gt;
    server: https://10.138.0.2:6443
  name: ""
contexts: []
current-context: ""
kind: Config
preferences: {}
users: []
</code></pre>

<p>I copied the corresponding data from my working kubectl config file and created a local file "a.config".</p>

<p>But, when I try the command "sudo kubeadm join --discovery-file a.conf" it fails with the following error messages:</p>

<pre><code>[discovery: Invalid value: "": token [""] was not of form ["^([a-z0-9]{6})\\.([a-z0-9]{16})$"], discovery: Invalid value: "": token must be of form '[a-z0-9]{6}.[a-z0-9]{16}']
</code></pre>

<p>What am I missing here?</p>

<p>What is a procedure know to work in my situation? I prefer not to tear down the cluster and re-join it again.</p>

<p>The easiest way i know to join new nodes to existing cluster is </p>

<pre><code>kubeadm token create --print-join-command
</code></pre>

<p>this will give output like this.</p>

<pre><code>kubeadm join 192.168.10.15:6443 --token l946pz.6fv0XXXXX8zry --discovery-token-ca-cert-hash sha256:e1e6XXXXXXXXXXXX9ff2aa46bf003419e8b508686af8597XXXXXXXXXXXXXXXXXXX
</code></pre>
