@@ -26,7 +26,6 @@ import (
26
26
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
27
27
kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
28
28
"k8s.io/kubernetes/cmd/kubeadm/app/phases/addons/dns"
29
- etcdutil "k8s.io/kubernetes/cmd/kubeadm/app/util/etcd"
30
29
)
31
30
32
31
// Upgrade defines an upgrade possibility to upgrade from a current version to a new one
@@ -75,7 +74,7 @@ type ClusterState struct {
75
74
76
75
// GetAvailableUpgrades fetches all versions from the specified VersionGetter and computes which
77
76
// kinds of upgrades can be performed
78
- func GetAvailableUpgrades (versionGetterImpl VersionGetter , experimentalUpgradesAllowed , rcUpgradesAllowed bool , etcdClient etcdutil. ClusterInterrogator , dnsType kubeadmapi.DNSAddOnType , client clientset.Interface ) ([]Upgrade , error ) {
77
+ func GetAvailableUpgrades (versionGetterImpl VersionGetter , experimentalUpgradesAllowed , rcUpgradesAllowed , externalEtcd bool , dnsType kubeadmapi.DNSAddOnType , client clientset.Interface , manifestsDir string ) ([]Upgrade , error ) {
79
78
fmt .Println ("[upgrade] Fetching available versions to upgrade to" )
80
79
81
80
// Collect the upgrades kubeadm can do in this list
@@ -111,10 +110,13 @@ func GetAvailableUpgrades(versionGetterImpl VersionGetter, experimentalUpgradesA
111
110
return upgrades , err
112
111
}
113
112
114
- // Get current etcd version
115
- etcdVersion , err := etcdClient .GetVersion ()
116
- if err != nil {
117
- return upgrades , err
113
+ // Get current stacked etcd version on the local node
114
+ var etcdVersion string
115
+ if ! externalEtcd {
116
+ etcdVersion , err = GetEtcdImageTagFromStaticPod (manifestsDir )
117
+ if err != nil {
118
+ return upgrades , err
119
+ }
118
120
}
119
121
120
122
currentDNSType , dnsVersion , err := dns .DeployedDNSAddon (client )
@@ -174,7 +176,7 @@ func GetAvailableUpgrades(versionGetterImpl VersionGetter, experimentalUpgradesA
174
176
DNSType : dnsType ,
175
177
DNSVersion : kubeadmconstants .GetDNSVersion (dnsType ),
176
178
KubeadmVersion : newKubeadmVer ,
177
- EtcdVersion : getSuggestedEtcdVersion (patchVersionStr ),
179
+ EtcdVersion : getSuggestedEtcdVersion (externalEtcd , patchVersionStr ),
178
180
// KubeletVersions is unset here as it is not used anywhere in .After
179
181
},
180
182
})
@@ -191,7 +193,7 @@ func GetAvailableUpgrades(versionGetterImpl VersionGetter, experimentalUpgradesA
191
193
DNSType : dnsType ,
192
194
DNSVersion : kubeadmconstants .GetDNSVersion (dnsType ),
193
195
KubeadmVersion : stableVersionStr ,
194
- EtcdVersion : getSuggestedEtcdVersion (stableVersionStr ),
196
+ EtcdVersion : getSuggestedEtcdVersion (externalEtcd , stableVersionStr ),
195
197
// KubeletVersions is unset here as it is not used anywhere in .After
196
198
},
197
199
})
@@ -239,7 +241,7 @@ func GetAvailableUpgrades(versionGetterImpl VersionGetter, experimentalUpgradesA
239
241
DNSType : dnsType ,
240
242
DNSVersion : kubeadmconstants .GetDNSVersion (dnsType ),
241
243
KubeadmVersion : previousBranchLatestVersionStr ,
242
- EtcdVersion : getSuggestedEtcdVersion (previousBranchLatestVersionStr ),
244
+ EtcdVersion : getSuggestedEtcdVersion (externalEtcd , previousBranchLatestVersionStr ),
243
245
// KubeletVersions is unset here as it is not used anywhere in .After
244
246
},
245
247
})
@@ -266,7 +268,7 @@ func GetAvailableUpgrades(versionGetterImpl VersionGetter, experimentalUpgradesA
266
268
DNSType : dnsType ,
267
269
DNSVersion : unstableKubeDNSVersion ,
268
270
KubeadmVersion : unstableKubeVersion ,
269
- EtcdVersion : getSuggestedEtcdVersion (unstableKubeVersion ),
271
+ EtcdVersion : getSuggestedEtcdVersion (externalEtcd , unstableKubeVersion ),
270
272
// KubeletVersions is unset here as it is not used anywhere in .After
271
273
},
272
274
})
@@ -300,7 +302,10 @@ func minorUpgradePossibleWithPatchRelease(stableVersion, patchVersion *versionut
300
302
return patchVersion .LessThan (stableVersion )
301
303
}
302
304
303
- func getSuggestedEtcdVersion (kubernetesVersion string ) string {
305
+ func getSuggestedEtcdVersion (externalEtcd bool , kubernetesVersion string ) string {
306
+ if externalEtcd {
307
+ return ""
308
+ }
304
309
etcdVersion , warning , err := kubeadmconstants .EtcdSupportedVersion (kubeadmconstants .SupportedEtcdVersion , kubernetesVersion )
305
310
if err != nil {
306
311
klog .Warningf ("[upgrade/versions] could not retrieve an etcd version for the target Kubernetes version: %v" , err )
0 commit comments