![]() During operations such as "upgrade", kubeadm fetches the ClusterConfiguration object from the kubeadm ConfigMap. However, due to requiring node specifics it wraps it in an InitConfiguration object. The function responsible for that is: app/util/config#FetchInitConfigurationFromCluster(). A problem with this function (and sub-calls) is that it ignores the static defaults applied from versioned types (e.g. v1beta3/defaults.go) and only applies dynamic defaults for: - API endpoints - node registration - etc... The introduction of Init|JoinConfiguration.ImagePullPolicy now has static defaulting of the NodeRegistration object with a default policy of "PullIfNotPresent". Respect this defaulting by constructing a defaulted internal InitConfiguration from FetchInitConfigurationFromCluster() and only then apply the dynamic defaults over it. This fixes a bug where "kubeadm upgrade ..." fails when pulling images due to an empty ("") ImagePullPolicy. We could assume that empty string means default policy on runtime in: cmd/kubeadm/app/preflight/checks.go#ImagePullCheck() but that might actually not be the user intent during "init" and "join", due to e.g. a typo. Similarly, we don't allow empty tokens on runtime and error out. |
||
---|---|---|
.. | ||
app | ||
test | ||
.import-restrictions | ||
kubeadm.go | ||
OWNERS |