Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
A kubespray cluster is running for some time and you want to safely update it to the newer version using
upgrade_cluster.yml
It will fail during
[kubernetes/kubeadm : Join to cluster if needed]
with error:Expected result
kubeadm join
will succeed askubeadm_token_ttl
is set to 0 which means that token should never expire, but it is not present inkubeadm token list
after cluster is provisioned (at least after it is running for some time)Related issues
kubernetes/kubeadm#335
Solution
Create a new temporary token before the
kubeadm join
commandRefactoring issues
Not sure what to do with
kubeadm_token
andkubeadm_token_ttl
that are defined inroles\kubespray-defaults\defaults\main.yml
. The code I added doesn't really breake anything as much as I tested, but looks likekubeadm_token_ttl
is not respected, so perhaps it can be removed.kubeadm_token
is also used for master config, so can stay untouched but it's a bit weird that that token is not used then duringkubeadm join
because I override it with newly generated one. Please suggest if you have ideas how to optimize it.