How do I find the join command for kubeadm on the master?
This might not work for the old Kubernetes versions but I tried with the new version and it worked for me.
To print a join command for worker/slave node,kubeadm token create --print-join-command
But if you need to join a new control plane node, that won't work as you need to recreate a new key for the control plane join command. This can be done with three simple steps.
01.) re upload certs in the already working master nodesudo kubeadm init phase upload-certs --upload-certs
it will generate a new certificate key.
02.) print join command in the already working master nodekubeadm token create --print-join-command
03.) Add the --control-plane --certificate-key
and execute. <join command from step 02> --control-plane --certificate-key <key from step 01>
Done.
To create kubeadm join
command, please run the following commands:
Step 1 - Retrieve Token CA Hash:
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt \ | openssl rsa -pubin -outform der 2>/dev/null \ | openssl dgst -sha256 -hex \ | sed 's/^.* //'
This command will provide you public key.
Step 2 - Retrieve bootstrap Tokens:
kubeadm token list
This will print all tokens, so copy the token value under TOKEN
with the description "The default bootstrap token generated by kubeadm init
."
Step 3 - Creates kubeadm init
command:
Now use following syntax to create join
command without creating a new token:
kubeadm join <ip-address>:6443\ --token=<token-from-step-2> \ --discovery-token-ca-cert-hash sha256:<ca-hash-from-step-1>
kubeadm token create
command creates a new token, in this case without any description, so for you not to create any additional tokens, just pick the token which has a DESCRIPTION
as mentioned in Step 2.