diff --git a/cmd/kubeadm/app/cmd/config_test.go b/cmd/kubeadm/app/cmd/config_test.go index b151a3f59a0..f68b504af92 100644 --- a/cmd/kubeadm/app/cmd/config_test.go +++ b/cmd/kubeadm/app/cmd/config_test.go @@ -62,12 +62,12 @@ func TestImagesListRunWithCustomConfigPath(t *testing.T) { name: "set k8s version", expectedImageCount: defaultNumberOfImages, expectedImageSubstrings: []string{ - ":v1.9.1", + ":v1.10.1", }, configContents: []byte(dedent.Dedent(` apiVersion: kubeadm.k8s.io/v1alpha2 kind: MasterConfiguration - kubernetesVersion: 1.9.1 + kubernetesVersion: 1.10.1 `)), }, { diff --git a/cmd/kubeadm/app/cmd/phases/certs_test.go b/cmd/kubeadm/app/cmd/phases/certs_test.go index 97c5438031a..0b35c435650 100644 --- a/cmd/kubeadm/app/cmd/phases/certs_test.go +++ b/cmd/kubeadm/app/cmd/phases/certs_test.go @@ -31,7 +31,7 @@ import ( ) // phaseTestK8sVersion is a fake kubernetes version to use when testing -const phaseTestK8sVersion = "v1.9.0" +const phaseTestK8sVersion = "v1.10.0" func TestCertsSubCommandsHasFlags(t *testing.T) { diff --git a/cmd/kubeadm/app/cmd/phases/controlplane_test.go b/cmd/kubeadm/app/cmd/phases/controlplane_test.go index 8f741a499f1..c8c5d3b8e01 100644 --- a/cmd/kubeadm/app/cmd/phases/controlplane_test.go +++ b/cmd/kubeadm/app/cmd/phases/controlplane_test.go @@ -90,7 +90,7 @@ func TestControlPlaneCreateFilesWithFlags(t *testing.T) { { command: "all", additionalFlags: []string{ - "--kubernetes-version=v1.9.0", + "--kubernetes-version=v1.10.0", "--apiserver-advertise-address=1.2.3.4", "--apiserver-bind-port=6443", "--service-cidr=1.2.3.4/16", @@ -105,7 +105,7 @@ func TestControlPlaneCreateFilesWithFlags(t *testing.T) { { command: "apiserver", additionalFlags: []string{ - "--kubernetes-version=v1.9.0", + "--kubernetes-version=v1.10.0", "--apiserver-advertise-address=1.2.3.4", "--apiserver-bind-port=6443", "--service-cidr=1.2.3.4/16", @@ -115,7 +115,7 @@ func TestControlPlaneCreateFilesWithFlags(t *testing.T) { { command: "controller-manager", additionalFlags: []string{ - "--kubernetes-version=v1.9.0", + "--kubernetes-version=v1.10.0", "--pod-network-cidr=1.2.3.4/16", }, expectedFiles: []string{"kube-controller-manager.yaml"}, @@ -123,7 +123,7 @@ func TestControlPlaneCreateFilesWithFlags(t *testing.T) { { command: "scheduler", additionalFlags: []string{ - "--kubernetes-version=v1.9.0", + "--kubernetes-version=v1.10.0", }, expectedFiles: []string{"kube-scheduler.yaml"}, }, diff --git a/cmd/kubeadm/app/cmd/token_test.go b/cmd/kubeadm/app/cmd/token_test.go index 67fa822a01f..74b3bc8614c 100644 --- a/cmd/kubeadm/app/cmd/token_test.go +++ b/cmd/kubeadm/app/cmd/token_test.go @@ -184,7 +184,7 @@ func TestRunCreateToken(t *testing.T) { // KubernetesVersion is not used by bootstrap-token, but we set this explicitly to avoid // the lookup of the version from the internet when executing ConfigFileAndDefaultsToInternalConfig - KubernetesVersion: "v1.9.0", + KubernetesVersion: "v1.10.0", Token: tc.token, TokenTTL: &metav1.Duration{Duration: 0}, TokenUsages: tc.usages, diff --git a/cmd/kubeadm/app/constants/constants.go b/cmd/kubeadm/app/constants/constants.go index dde8866bfe0..a622a236acb 100644 --- a/cmd/kubeadm/app/constants/constants.go +++ b/cmd/kubeadm/app/constants/constants.go @@ -285,16 +285,16 @@ var ( MasterComponents = []string{KubeAPIServer, KubeControllerManager, KubeScheduler} // MinimumControlPlaneVersion specifies the minimum control plane version kubeadm can deploy - MinimumControlPlaneVersion = version.MustParseSemantic("v1.9.0") + MinimumControlPlaneVersion = version.MustParseSemantic("v1.10.0") // MinimumKubeletVersion specifies the minimum version of kubelet which kubeadm supports - MinimumKubeletVersion = version.MustParseSemantic("v1.9.0") + MinimumKubeletVersion = version.MustParseSemantic("v1.10.0") // SupportedEtcdVersion lists officially supported etcd versions with corresponding kubernetes releases SupportedEtcdVersion = map[uint8]string{ - 9: "3.1.12", 10: "3.1.12", 11: "3.2.18", + 12: "3.2.18", } ) diff --git a/cmd/kubeadm/app/constants/constants_test.go b/cmd/kubeadm/app/constants/constants_test.go index 9737c7fdc44..0ab842d3cdd 100644 --- a/cmd/kubeadm/app/constants/constants_test.go +++ b/cmd/kubeadm/app/constants/constants_test.go @@ -126,26 +126,26 @@ func TestEtcdSupportedVersion(t *testing.T) { expectedVersion: nil, expectedError: fmt.Errorf("Unsupported or unknown kubernetes version(1.99.0)"), }, - { - kubernetesVersion: "1.9.0", - expectedVersion: version.MustParseSemantic("3.1.12"), - expectedError: nil, - }, - { - kubernetesVersion: "1.9.2", - expectedVersion: version.MustParseSemantic("3.1.12"), - expectedError: nil, - }, { kubernetesVersion: "1.10.0", expectedVersion: version.MustParseSemantic("3.1.12"), expectedError: nil, }, { - kubernetesVersion: "1.10.1", + kubernetesVersion: "1.10.2", expectedVersion: version.MustParseSemantic("3.1.12"), expectedError: nil, }, + { + kubernetesVersion: "1.11.0", + expectedVersion: version.MustParseSemantic("3.2.18"), + expectedError: nil, + }, + { + kubernetesVersion: "1.12.1", + expectedVersion: version.MustParseSemantic("3.2.18"), + expectedError: nil, + }, } for _, rt := range tests { actualVersion, actualError := EtcdSupportedVersion(rt.kubernetesVersion) diff --git a/cmd/kubeadm/app/features/features.go b/cmd/kubeadm/app/features/features.go index 92678008a32..c85576cd1b2 100644 --- a/cmd/kubeadm/app/features/features.go +++ b/cmd/kubeadm/app/features/features.go @@ -46,16 +46,14 @@ const ( Auditing = "Auditing" ) -var v190 = version.MustParseSemantic("v1.9.0-alpha.1") - // InitFeatureGates are the default feature gates for the init command var InitFeatureGates = FeatureList{ SelfHosting: {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Alpha}}, StoreCertsInSecrets: {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Alpha}}, // We don't want to advertise this feature gate exists in v1.9 to avoid confusion as it is not yet working - HighAvailability: {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Alpha}, MinimumVersion: v190, HiddenInHelpText: true}, - CoreDNS: {FeatureSpec: utilfeature.FeatureSpec{Default: true, PreRelease: utilfeature.GA}, MinimumVersion: v190}, - DynamicKubeletConfig: {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Alpha}, MinimumVersion: v190}, + HighAvailability: {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Alpha}, HiddenInHelpText: true}, + CoreDNS: {FeatureSpec: utilfeature.FeatureSpec{Default: true, PreRelease: utilfeature.GA}}, + DynamicKubeletConfig: {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Alpha}}, Auditing: {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Alpha}}, } diff --git a/cmd/kubeadm/app/features/features_test.go b/cmd/kubeadm/app/features/features_test.go index 3e050d04650..347918d1967 100644 --- a/cmd/kubeadm/app/features/features_test.go +++ b/cmd/kubeadm/app/features/features_test.go @@ -121,7 +121,7 @@ func TestNewFeatureGate(t *testing.T) { func TestValidateVersion(t *testing.T) { var someFeatures = FeatureList{ "feature1": {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Beta}}, - "feature2": {FeatureSpec: utilfeature.FeatureSpec{Default: true, PreRelease: utilfeature.Alpha}, MinimumVersion: v190}, + "feature2": {FeatureSpec: utilfeature.FeatureSpec{Default: true, PreRelease: utilfeature.Alpha}}, } var tests = []struct { @@ -133,16 +133,10 @@ func TestValidateVersion(t *testing.T) { requestedFeatures: map[string]bool{"feature1": true}, expectedError: false, }, - { //min version but correct value given + { //no min version requestedFeatures: map[string]bool{"feature2": true}, - requestedVersion: "v1.9.0", expectedError: false, }, - { //min version and incorrect value given - requestedFeatures: map[string]bool{"feature2": true}, - requestedVersion: "v1.8.2", - expectedError: true, - }, } for _, test := range tests { diff --git a/cmd/kubeadm/app/phases/addons/dns/dns_test.go b/cmd/kubeadm/app/phases/addons/dns/dns_test.go index 2233bf182d0..5a9f3c0435b 100644 --- a/cmd/kubeadm/app/phases/addons/dns/dns_test.go +++ b/cmd/kubeadm/app/phases/addons/dns/dns_test.go @@ -94,7 +94,7 @@ func TestCompileManifests(t *testing.T) { expected bool }{ { - manifest: v180AndAboveKubeDNSDeployment, + manifest: KubeDNSDeployment, data: struct{ ImageRepository, Arch, Version, DNSBindAddr, DNSProbeAddr, DNSDomain, MasterTaintKey string }{ ImageRepository: "foo", Arch: "foo", diff --git a/cmd/kubeadm/app/phases/addons/dns/manifests.go b/cmd/kubeadm/app/phases/addons/dns/manifests.go index 3a2449af63a..4184555da68 100644 --- a/cmd/kubeadm/app/phases/addons/dns/manifests.go +++ b/cmd/kubeadm/app/phases/addons/dns/manifests.go @@ -17,8 +17,8 @@ limitations under the License. package dns const ( - // v180AndAboveKubeDNSDeployment is the kube-dns Deployment manifest for the kube-dns manifest for v1.7+ - v180AndAboveKubeDNSDeployment = ` + // KubeDNSDeployment is the kube-dns Deployment manifest for the kube-dns manifest for v1.7+ + KubeDNSDeployment = ` apiVersion: apps/v1 kind: Deployment metadata: diff --git a/cmd/kubeadm/app/phases/addons/dns/versions.go b/cmd/kubeadm/app/phases/addons/dns/versions.go index 162fb76ddab..e72eb325fb3 100644 --- a/cmd/kubeadm/app/phases/addons/dns/versions.go +++ b/cmd/kubeadm/app/phases/addons/dns/versions.go @@ -46,7 +46,7 @@ func GetDNSVersion(kubeVersion *version.Version, dns string) string { func GetKubeDNSManifest(kubeVersion *version.Version) string { // v1.8.0+ has only one known YAML manifest spec, just return that here // In the future when the kube-dns version is bumped at HEAD; add conditional logic to return the right manifest - return v180AndAboveKubeDNSDeployment + return KubeDNSDeployment } // GetCoreDNSManifest returns the right CoreDNS YAML manifest for a specific k8s version diff --git a/cmd/kubeadm/app/phases/addons/proxy/proxy_test.go b/cmd/kubeadm/app/phases/addons/proxy/proxy_test.go index c6f51fbc1b1..87c64ae9178 100644 --- a/cmd/kubeadm/app/phases/addons/proxy/proxy_test.go +++ b/cmd/kubeadm/app/phases/addons/proxy/proxy_test.go @@ -197,7 +197,7 @@ func TestEnsureProxyAddon(t *testing.T) { PodSubnet: "5.6.7.8/24", }, ImageRepository: "someRepo", - KubernetesVersion: "v1.9.0", + KubernetesVersion: "v1.10.0", UnifiedControlPlaneImage: "someImage", } diff --git a/cmd/kubeadm/app/phases/upgrade/compute.go b/cmd/kubeadm/app/phases/upgrade/compute.go index a149dc887e2..dbe42f8d2f6 100644 --- a/cmd/kubeadm/app/phases/upgrade/compute.go +++ b/cmd/kubeadm/app/phases/upgrade/compute.go @@ -279,7 +279,7 @@ func GetAvailableUpgrades(versionGetterImpl VersionGetter, experimentalUpgradesA } func getBranchFromVersion(version string) string { - return strings.TrimPrefix(version, "v")[:3] + return strings.TrimPrefix(version, "v")[:4] } func patchVersionBranchExists(clusterVersion, stableVersion *version.Version) bool { diff --git a/cmd/kubeadm/app/phases/upgrade/compute_test.go b/cmd/kubeadm/app/phases/upgrade/compute_test.go index 75930febbdb..9d059ae3dec 100644 --- a/cmd/kubeadm/app/phases/upgrade/compute_test.go +++ b/cmd/kubeadm/app/phases/upgrade/compute_test.go @@ -56,7 +56,7 @@ func (f *fakeVersionGetter) VersionFromCILabel(ciVersionLabel, _ string) (string if ciVersionLabel == "latest" { return f.latestVersion, versionutil.MustParseSemantic(f.latestVersion), nil } - if ciVersionLabel == "latest-1.10" { + if ciVersionLabel == "latest-1.11" { return f.latestDevBranchVersion, versionutil.MustParseSemantic(f.latestDevBranchVersion), nil } return f.stablePatchVersion, versionutil.MustParseSemantic(f.stablePatchVersion), nil @@ -123,12 +123,12 @@ func TestGetAvailableUpgrades(t *testing.T) { { name: "no action needed, already up-to-date", vg: &fakeVersionGetter{ - clusterVersion: "v1.9.3", - kubeletVersion: "v1.9.3", - kubeadmVersion: "v1.9.3", + clusterVersion: "v1.10.3", + kubeletVersion: "v1.10.3", + kubeadmVersion: "v1.10.3", - stablePatchVersion: "v1.9.3", - stableVersion: "v1.9.3", + stablePatchVersion: "v1.10.3", + stableVersion: "v1.10.3", }, beforeDNSType: constants.CoreDNS, beforeDNSVersion: "v1.0.6", @@ -141,32 +141,32 @@ func TestGetAvailableUpgrades(t *testing.T) { { name: "simple patch version upgrade", vg: &fakeVersionGetter{ - clusterVersion: "v1.9.1", - kubeletVersion: "v1.9.1", // the kubelet are on the same version as the control plane - kubeadmVersion: "v1.9.2", + clusterVersion: "v1.10.1", + kubeletVersion: "v1.10.1", // the kubelet are on the same version as the control plane + kubeadmVersion: "v1.10.2", - stablePatchVersion: "v1.9.3", - stableVersion: "v1.9.3", + stablePatchVersion: "v1.10.3", + stableVersion: "v1.10.3", }, beforeDNSType: constants.CoreDNS, beforeDNSVersion: "1.0.6", featureGates: make(map[string]bool), expectedUpgrades: []Upgrade{ { - Description: "version in the v1.9 series", + Description: "version in the v1.10 series", Before: ClusterState{ - KubeVersion: "v1.9.1", + KubeVersion: "v1.10.1", KubeletVersions: map[string]uint16{ - "v1.9.1": 1, + "v1.10.1": 1, }, - KubeadmVersion: "v1.9.2", + KubeadmVersion: "v1.10.2", DNSType: "coredns", DNSVersion: "1.0.6", EtcdVersion: "3.1.12", }, After: ClusterState{ - KubeVersion: "v1.9.3", - KubeadmVersion: "v1.9.3", + KubeVersion: "v1.10.3", + KubeadmVersion: "v1.10.3", DNSType: "coredns", DNSVersion: "1.0.6", EtcdVersion: "3.1.12", @@ -180,32 +180,32 @@ func TestGetAvailableUpgrades(t *testing.T) { { name: "no version provided to offline version getter does not change behavior", vg: NewOfflineVersionGetter(&fakeVersionGetter{ - clusterVersion: "v1.9.1", - kubeletVersion: "v1.9.1", // the kubelet are on the same version as the control plane - kubeadmVersion: "v1.9.2", + clusterVersion: "v1.10.1", + kubeletVersion: "v1.10.1", // the kubelet are on the same version as the control plane + kubeadmVersion: "v1.10.2", - stablePatchVersion: "v1.9.3", - stableVersion: "v1.9.3", + stablePatchVersion: "v1.10.3", + stableVersion: "v1.10.3", }, ""), beforeDNSType: constants.CoreDNS, beforeDNSVersion: "1.0.6", featureGates: make(map[string]bool), expectedUpgrades: []Upgrade{ { - Description: "version in the v1.9 series", + Description: "version in the v1.10 series", Before: ClusterState{ - KubeVersion: "v1.9.1", + KubeVersion: "v1.10.1", KubeletVersions: map[string]uint16{ - "v1.9.1": 1, + "v1.10.1": 1, }, - KubeadmVersion: "v1.9.2", + KubeadmVersion: "v1.10.2", DNSType: "coredns", DNSVersion: "1.0.6", EtcdVersion: "3.1.12", }, After: ClusterState{ - KubeVersion: "v1.9.3", - KubeadmVersion: "v1.9.3", + KubeVersion: "v1.10.3", + KubeadmVersion: "v1.10.3", DNSType: "coredns", DNSVersion: "1.0.6", EtcdVersion: "3.1.12", @@ -219,12 +219,12 @@ func TestGetAvailableUpgrades(t *testing.T) { { name: "minor version upgrade only", vg: &fakeVersionGetter{ - clusterVersion: "v1.9.1", - kubeletVersion: "v1.9.1", // the kubelet are on the same version as the control plane - kubeadmVersion: "v1.10.0", + clusterVersion: "v1.10.1", + kubeletVersion: "v1.10.1", // the kubelet are on the same version as the control plane + kubeadmVersion: "v1.11.0", - stablePatchVersion: "v1.9.1", - stableVersion: "v1.10.0", + stablePatchVersion: "v1.10.1", + stableVersion: "v1.11.0", }, beforeDNSType: constants.CoreDNS, beforeDNSVersion: "1.0.6", @@ -233,21 +233,21 @@ func TestGetAvailableUpgrades(t *testing.T) { { Description: "stable version", Before: ClusterState{ - KubeVersion: "v1.9.1", + KubeVersion: "v1.10.1", KubeletVersions: map[string]uint16{ - "v1.9.1": 1, + "v1.10.1": 1, }, - KubeadmVersion: "v1.10.0", + KubeadmVersion: "v1.11.0", DNSType: "coredns", DNSVersion: "1.0.6", EtcdVersion: "3.1.12", }, After: ClusterState{ - KubeVersion: "v1.10.0", - KubeadmVersion: "v1.10.0", + KubeVersion: "v1.11.0", + KubeadmVersion: "v1.11.0", DNSType: "coredns", DNSVersion: "1.0.6", - EtcdVersion: "3.1.12", + EtcdVersion: "3.2.18", }, }, }, @@ -258,32 +258,32 @@ func TestGetAvailableUpgrades(t *testing.T) { { name: "both minor version upgrade and patch version upgrade available", vg: &fakeVersionGetter{ - clusterVersion: "v1.9.3", - kubeletVersion: "v1.9.3", // the kubelet are on the same version as the control plane - kubeadmVersion: "v1.9.5", + clusterVersion: "v1.10.3", + kubeletVersion: "v1.10.3", // the kubelet are on the same version as the control plane + kubeadmVersion: "v1.10.5", - stablePatchVersion: "v1.9.5", - stableVersion: "v1.10.1", + stablePatchVersion: "v1.10.5", + stableVersion: "v1.11.1", }, beforeDNSType: constants.CoreDNS, beforeDNSVersion: "1.0.6", featureGates: make(map[string]bool), expectedUpgrades: []Upgrade{ { - Description: "version in the v1.9 series", + Description: "version in the v1.10 series", Before: ClusterState{ - KubeVersion: "v1.9.3", + KubeVersion: "v1.10.3", KubeletVersions: map[string]uint16{ - "v1.9.3": 1, + "v1.10.3": 1, }, - KubeadmVersion: "v1.9.5", + KubeadmVersion: "v1.10.5", DNSType: "coredns", DNSVersion: "1.0.6", EtcdVersion: "3.1.12", }, After: ClusterState{ - KubeVersion: "v1.9.5", - KubeadmVersion: "v1.9.5", // Note: The kubeadm version mustn't be "downgraded" here + KubeVersion: "v1.10.5", + KubeadmVersion: "v1.10.5", // Note: The kubeadm version mustn't be "downgraded" here DNSType: "coredns", DNSVersion: "1.0.6", EtcdVersion: "3.1.12", @@ -292,21 +292,21 @@ func TestGetAvailableUpgrades(t *testing.T) { { Description: "stable version", Before: ClusterState{ - KubeVersion: "v1.9.3", + KubeVersion: "v1.10.3", KubeletVersions: map[string]uint16{ - "v1.9.3": 1, + "v1.10.3": 1, }, - KubeadmVersion: "v1.9.5", + KubeadmVersion: "v1.10.5", DNSType: "coredns", DNSVersion: "1.0.6", EtcdVersion: "3.1.12", }, After: ClusterState{ - KubeVersion: "v1.10.1", - KubeadmVersion: "v1.10.1", + KubeVersion: "v1.11.1", + KubeadmVersion: "v1.11.1", DNSType: "coredns", DNSVersion: "1.0.6", - EtcdVersion: "3.1.12", + EtcdVersion: "3.2.18", }, }, }, @@ -317,13 +317,13 @@ func TestGetAvailableUpgrades(t *testing.T) { { name: "allow experimental upgrades, but no upgrade available", vg: &fakeVersionGetter{ - clusterVersion: "v1.10.0-alpha.2", - kubeletVersion: "v1.9.5", - kubeadmVersion: "v1.9.5", + clusterVersion: "v1.11.0-alpha.2", + kubeletVersion: "v1.10.5", + kubeadmVersion: "v1.10.5", - stablePatchVersion: "v1.9.5", - stableVersion: "v1.9.5", - latestVersion: "v1.10.0-alpha.2", + stablePatchVersion: "v1.10.5", + stableVersion: "v1.10.5", + latestVersion: "v1.11.0-alpha.2", }, beforeDNSType: constants.CoreDNS, beforeDNSVersion: "v1.0.6", @@ -336,13 +336,13 @@ func TestGetAvailableUpgrades(t *testing.T) { { name: "upgrade to an unstable version should be supported", vg: &fakeVersionGetter{ - clusterVersion: "v1.9.5", - kubeletVersion: "v1.9.5", - kubeadmVersion: "v1.9.5", + clusterVersion: "v1.10.5", + kubeletVersion: "v1.10.5", + kubeadmVersion: "v1.10.5", - stablePatchVersion: "v1.9.5", - stableVersion: "v1.9.5", - latestVersion: "v1.10.0-alpha.2", + stablePatchVersion: "v1.10.5", + stableVersion: "v1.10.5", + latestVersion: "v1.11.0-alpha.2", }, beforeDNSType: constants.CoreDNS, beforeDNSVersion: "1.0.6", @@ -351,21 +351,21 @@ func TestGetAvailableUpgrades(t *testing.T) { { Description: "experimental version", Before: ClusterState{ - KubeVersion: "v1.9.5", + KubeVersion: "v1.10.5", KubeletVersions: map[string]uint16{ - "v1.9.5": 1, + "v1.10.5": 1, }, - KubeadmVersion: "v1.9.5", + KubeadmVersion: "v1.10.5", DNSType: "coredns", DNSVersion: "1.0.6", EtcdVersion: "3.1.12", }, After: ClusterState{ - KubeVersion: "v1.10.0-alpha.2", - KubeadmVersion: "v1.10.0-alpha.2", + KubeVersion: "v1.11.0-alpha.2", + KubeadmVersion: "v1.11.0-alpha.2", DNSType: "coredns", DNSVersion: "1.0.6", - EtcdVersion: "3.1.12", + EtcdVersion: "3.2.18", }, }, }, @@ -376,13 +376,13 @@ func TestGetAvailableUpgrades(t *testing.T) { { name: "upgrade from an unstable version to an unstable version should be supported", vg: &fakeVersionGetter{ - clusterVersion: "v1.10.0-alpha.1", - kubeletVersion: "v1.9.5", - kubeadmVersion: "v1.9.5", + clusterVersion: "v1.11.0-alpha.1", + kubeletVersion: "v1.10.5", + kubeadmVersion: "v1.10.5", - stablePatchVersion: "v1.9.5", - stableVersion: "v1.9.5", - latestVersion: "v1.10.0-alpha.2", + stablePatchVersion: "v1.10.5", + stableVersion: "v1.10.5", + latestVersion: "v1.11.0-alpha.2", }, beforeDNSType: constants.CoreDNS, beforeDNSVersion: "1.0.6", @@ -391,21 +391,21 @@ func TestGetAvailableUpgrades(t *testing.T) { { Description: "experimental version", Before: ClusterState{ - KubeVersion: "v1.10.0-alpha.1", + KubeVersion: "v1.11.0-alpha.1", KubeletVersions: map[string]uint16{ - "v1.9.5": 1, + "v1.10.5": 1, }, - KubeadmVersion: "v1.9.5", + KubeadmVersion: "v1.10.5", DNSType: "coredns", DNSVersion: "1.0.6", EtcdVersion: "3.1.12", }, After: ClusterState{ - KubeVersion: "v1.10.0-alpha.2", - KubeadmVersion: "v1.10.0-alpha.2", + KubeVersion: "v1.11.0-alpha.2", + KubeadmVersion: "v1.11.0-alpha.2", DNSType: "coredns", DNSVersion: "1.0.6", - EtcdVersion: "3.1.12", + EtcdVersion: "3.2.18", }, }, }, @@ -416,14 +416,14 @@ func TestGetAvailableUpgrades(t *testing.T) { { name: "v1.X.0-alpha.0 should be ignored", vg: &fakeVersionGetter{ - clusterVersion: "v1.9.5", - kubeletVersion: "v1.9.5", - kubeadmVersion: "v1.9.5", + clusterVersion: "v1.10.5", + kubeletVersion: "v1.10.5", + kubeadmVersion: "v1.10.5", - stablePatchVersion: "v1.9.5", - stableVersion: "v1.9.5", - latestDevBranchVersion: "v1.10.0-beta.1", - latestVersion: "v1.11.0-alpha.0", + stablePatchVersion: "v1.10.5", + stableVersion: "v1.10.5", + latestDevBranchVersion: "v1.11.0-beta.1", + latestVersion: "v1.12.0-alpha.0", }, beforeDNSType: constants.CoreDNS, beforeDNSVersion: "1.0.6", @@ -432,21 +432,21 @@ func TestGetAvailableUpgrades(t *testing.T) { { Description: "experimental version", Before: ClusterState{ - KubeVersion: "v1.9.5", + KubeVersion: "v1.10.5", KubeletVersions: map[string]uint16{ - "v1.9.5": 1, + "v1.10.5": 1, }, - KubeadmVersion: "v1.9.5", + KubeadmVersion: "v1.10.5", DNSType: "coredns", DNSVersion: "1.0.6", EtcdVersion: "3.1.12", }, After: ClusterState{ - KubeVersion: "v1.10.0-beta.1", - KubeadmVersion: "v1.10.0-beta.1", + KubeVersion: "v1.11.0-beta.1", + KubeadmVersion: "v1.11.0-beta.1", DNSType: "coredns", DNSVersion: "1.0.6", - EtcdVersion: "3.1.12", + EtcdVersion: "3.2.18", }, }, }, @@ -457,14 +457,14 @@ func TestGetAvailableUpgrades(t *testing.T) { { name: "upgrade to an RC version should be supported", vg: &fakeVersionGetter{ - clusterVersion: "v1.9.5", - kubeletVersion: "v1.9.5", - kubeadmVersion: "v1.9.5", + clusterVersion: "v1.10.5", + kubeletVersion: "v1.10.5", + kubeadmVersion: "v1.10.5", - stablePatchVersion: "v1.9.5", - stableVersion: "v1.9.5", - latestDevBranchVersion: "v1.10.0-rc.1", - latestVersion: "v1.11.0-alpha.1", + stablePatchVersion: "v1.10.5", + stableVersion: "v1.10.5", + latestDevBranchVersion: "v1.11.0-rc.1", + latestVersion: "v1.12.0-alpha.1", }, beforeDNSType: constants.CoreDNS, beforeDNSVersion: "1.0.6", @@ -473,21 +473,21 @@ func TestGetAvailableUpgrades(t *testing.T) { { Description: "release candidate version", Before: ClusterState{ - KubeVersion: "v1.9.5", + KubeVersion: "v1.10.5", KubeletVersions: map[string]uint16{ - "v1.9.5": 1, + "v1.10.5": 1, }, - KubeadmVersion: "v1.9.5", + KubeadmVersion: "v1.10.5", DNSType: "coredns", DNSVersion: "1.0.6", EtcdVersion: "3.1.12", }, After: ClusterState{ - KubeVersion: "v1.10.0-rc.1", - KubeadmVersion: "v1.10.0-rc.1", + KubeVersion: "v1.11.0-rc.1", + KubeadmVersion: "v1.11.0-rc.1", DNSType: "coredns", DNSVersion: "1.0.6", - EtcdVersion: "3.1.12", + EtcdVersion: "3.2.18", }, }, }, @@ -498,14 +498,14 @@ func TestGetAvailableUpgrades(t *testing.T) { { name: "it is possible (but very uncommon) that the latest version from the previous branch is an rc and the current latest version is alpha.0. In that case, show the RC", vg: &fakeVersionGetter{ - clusterVersion: "v1.9.5", - kubeletVersion: "v1.9.5", - kubeadmVersion: "v1.9.5", + clusterVersion: "v1.10.5", + kubeletVersion: "v1.10.5", + kubeadmVersion: "v1.10.5", - stablePatchVersion: "v1.9.5", - stableVersion: "v1.9.5", - latestDevBranchVersion: "v1.10.6-rc.1", - latestVersion: "v1.11.1-alpha.0", + stablePatchVersion: "v1.10.5", + stableVersion: "v1.10.5", + latestDevBranchVersion: "v1.11.6-rc.1", + latestVersion: "v1.12.1-alpha.0", }, beforeDNSType: constants.CoreDNS, beforeDNSVersion: "1.0.6", @@ -514,21 +514,21 @@ func TestGetAvailableUpgrades(t *testing.T) { { Description: "experimental version", // Note that this is considered an experimental version in this uncommon scenario Before: ClusterState{ - KubeVersion: "v1.9.5", + KubeVersion: "v1.10.5", KubeletVersions: map[string]uint16{ - "v1.9.5": 1, + "v1.10.5": 1, }, - KubeadmVersion: "v1.9.5", + KubeadmVersion: "v1.10.5", DNSType: "coredns", DNSVersion: "1.0.6", EtcdVersion: "3.1.12", }, After: ClusterState{ - KubeVersion: "v1.10.6-rc.1", - KubeadmVersion: "v1.10.6-rc.1", + KubeVersion: "v1.11.6-rc.1", + KubeadmVersion: "v1.11.6-rc.1", DNSType: "coredns", DNSVersion: "1.0.6", - EtcdVersion: "3.1.12", + EtcdVersion: "3.2.18", }, }, }, @@ -539,14 +539,14 @@ func TestGetAvailableUpgrades(t *testing.T) { { name: "upgrade to an RC version should be supported. There may also be an even newer unstable version.", vg: &fakeVersionGetter{ - clusterVersion: "v1.9.5", - kubeletVersion: "v1.9.5", - kubeadmVersion: "v1.9.5", + clusterVersion: "v1.10.5", + kubeletVersion: "v1.10.5", + kubeadmVersion: "v1.10.5", - stablePatchVersion: "v1.9.5", - stableVersion: "v1.9.5", - latestDevBranchVersion: "v1.10.0-rc.1", - latestVersion: "v1.11.0-alpha.2", + stablePatchVersion: "v1.10.5", + stableVersion: "v1.10.5", + latestDevBranchVersion: "v1.11.0-rc.1", + latestVersion: "v1.12.0-alpha.2", }, beforeDNSType: constants.CoreDNS, beforeDNSVersion: "1.0.6", @@ -555,38 +555,38 @@ func TestGetAvailableUpgrades(t *testing.T) { { Description: "release candidate version", Before: ClusterState{ - KubeVersion: "v1.9.5", + KubeVersion: "v1.10.5", KubeletVersions: map[string]uint16{ - "v1.9.5": 1, + "v1.10.5": 1, }, - KubeadmVersion: "v1.9.5", + KubeadmVersion: "v1.10.5", DNSType: "coredns", DNSVersion: "1.0.6", EtcdVersion: "3.1.12", }, After: ClusterState{ - KubeVersion: "v1.10.0-rc.1", - KubeadmVersion: "v1.10.0-rc.1", + KubeVersion: "v1.11.0-rc.1", + KubeadmVersion: "v1.11.0-rc.1", DNSType: "coredns", DNSVersion: "1.0.6", - EtcdVersion: "3.1.12", + EtcdVersion: "3.2.18", }, }, { Description: "experimental version", Before: ClusterState{ - KubeVersion: "v1.9.5", + KubeVersion: "v1.10.5", KubeletVersions: map[string]uint16{ - "v1.9.5": 1, + "v1.10.5": 1, }, - KubeadmVersion: "v1.9.5", + KubeadmVersion: "v1.10.5", DNSType: "coredns", DNSVersion: "1.0.6", EtcdVersion: "3.1.12", }, After: ClusterState{ - KubeVersion: "v1.11.0-alpha.2", - KubeadmVersion: "v1.11.0-alpha.2", + KubeVersion: "v1.12.0-alpha.2", + KubeadmVersion: "v1.12.0-alpha.2", DNSType: "coredns", DNSVersion: "1.0.6", EtcdVersion: "3.2.18", @@ -601,11 +601,11 @@ func TestGetAvailableUpgrades(t *testing.T) { { name: "Upgrades with external etcd with mismatched versions should not be allowed.", vg: &fakeVersionGetter{ - clusterVersion: "v1.9.3", - kubeletVersion: "v1.9.3", - kubeadmVersion: "v1.9.3", - stablePatchVersion: "v1.9.3", - stableVersion: "v1.9.3", + clusterVersion: "v1.10.3", + kubeletVersion: "v1.10.3", + kubeadmVersion: "v1.10.3", + stablePatchVersion: "v1.10.3", + stableVersion: "v1.10.3", }, allowRCs: false, allowExperimental: false, @@ -616,30 +616,30 @@ func TestGetAvailableUpgrades(t *testing.T) { { name: "offline version getter", vg: NewOfflineVersionGetter(&fakeVersionGetter{ - clusterVersion: "v1.10.1", - kubeletVersion: "v1.10.0", - kubeadmVersion: "v1.10.1", - }, "v1.11.1"), + clusterVersion: "v1.11.1", + kubeletVersion: "v1.11.0", + kubeadmVersion: "v1.11.1", + }, "v1.12.1"), etcdClient: etcdClient, beforeDNSType: constants.CoreDNS, beforeDNSVersion: "1.0.6", featureGates: make(map[string]bool), expectedUpgrades: []Upgrade{ { - Description: "version in the v1.1 series", + Description: "version in the v1.11 series", Before: ClusterState{ - KubeVersion: "v1.10.1", + KubeVersion: "v1.11.1", KubeletVersions: map[string]uint16{ - "v1.10.0": 1, + "v1.11.0": 1, }, - KubeadmVersion: "v1.10.1", + KubeadmVersion: "v1.11.1", DNSType: "coredns", DNSVersion: "1.0.6", EtcdVersion: "3.1.12", }, After: ClusterState{ - KubeVersion: "v1.11.1", - KubeadmVersion: "v1.11.1", + KubeVersion: "v1.12.1", + KubeadmVersion: "v1.12.1", DNSType: "coredns", DNSVersion: "1.0.6", EtcdVersion: "3.2.18", @@ -650,12 +650,12 @@ func TestGetAvailableUpgrades(t *testing.T) { { name: "kubedns to coredns", vg: &fakeVersionGetter{ - clusterVersion: "v1.10.2", - kubeletVersion: "v1.10.2", // the kubelet are on the same version as the control plane - kubeadmVersion: "v1.11.0", + clusterVersion: "v1.11.2", + kubeletVersion: "v1.11.2", // the kubelet are on the same version as the control plane + kubeadmVersion: "v1.12.0", - stablePatchVersion: "v1.11.0", - stableVersion: "v1.11.0", + stablePatchVersion: "v1.12.0", + stableVersion: "v1.12.0", }, etcdClient: etcdClient, beforeDNSType: constants.KubeDNS, @@ -663,20 +663,20 @@ func TestGetAvailableUpgrades(t *testing.T) { featureGates: make(map[string]bool), expectedUpgrades: []Upgrade{ { - Description: "version in the v1.1 series", + Description: "version in the v1.11 series", Before: ClusterState{ - KubeVersion: "v1.10.2", + KubeVersion: "v1.11.2", KubeletVersions: map[string]uint16{ - "v1.10.2": 1, + "v1.11.2": 1, }, - KubeadmVersion: "v1.11.0", + KubeadmVersion: "v1.12.0", DNSType: "kube-dns", DNSVersion: "1.14.7", EtcdVersion: "3.1.12", }, After: ClusterState{ - KubeVersion: "v1.11.0", - KubeadmVersion: "v1.11.0", + KubeVersion: "v1.12.0", + KubeadmVersion: "v1.12.0", DNSType: "coredns", DNSVersion: "1.0.6", EtcdVersion: "3.2.18", @@ -687,12 +687,12 @@ func TestGetAvailableUpgrades(t *testing.T) { { name: "keep coredns", vg: &fakeVersionGetter{ - clusterVersion: "v1.10.2", - kubeletVersion: "v1.10.2", // the kubelet are on the same version as the control plane - kubeadmVersion: "v1.11.0", + clusterVersion: "v1.11.2", + kubeletVersion: "v1.11.2", // the kubelet are on the same version as the control plane + kubeadmVersion: "v1.12.0", - stablePatchVersion: "v1.11.0", - stableVersion: "v1.11.0", + stablePatchVersion: "v1.12.0", + stableVersion: "v1.12.0", }, etcdClient: etcdClient, beforeDNSType: constants.KubeDNS, @@ -700,20 +700,20 @@ func TestGetAvailableUpgrades(t *testing.T) { featureGates: map[string]bool{"CoreDNS": false}, expectedUpgrades: []Upgrade{ { - Description: "version in the v1.1 series", + Description: "version in the v1.11 series", Before: ClusterState{ - KubeVersion: "v1.10.2", + KubeVersion: "v1.11.2", KubeletVersions: map[string]uint16{ - "v1.10.2": 1, + "v1.11.2": 1, }, - KubeadmVersion: "v1.11.0", + KubeadmVersion: "v1.12.0", DNSType: "kube-dns", DNSVersion: "1.14.7", EtcdVersion: "3.1.12", }, After: ClusterState{ - KubeVersion: "v1.11.0", - KubeadmVersion: "v1.11.0", + KubeVersion: "v1.12.0", + KubeadmVersion: "v1.12.0", DNSType: "kube-dns", DNSVersion: "1.14.10", EtcdVersion: "3.2.18", @@ -776,36 +776,36 @@ func TestKubeletUpgrade(t *testing.T) { }{ { // upgrade available before: map[string]uint16{ - "v1.9.1": 1, + "v1.10.1": 1, }, - after: "v1.9.3", + after: "v1.10.3", expected: true, }, { // upgrade available before: map[string]uint16{ - "v1.9.1": 1, - "v1.9.3": 100, + "v1.10.1": 1, + "v1.10.3": 100, }, - after: "v1.9.3", + after: "v1.10.3", expected: true, }, { // upgrade not available before: map[string]uint16{ - "v1.9.3": 1, + "v1.10.3": 1, }, - after: "v1.9.3", + after: "v1.10.3", expected: false, }, { // upgrade not available before: map[string]uint16{ - "v1.9.3": 100, + "v1.10.3": 100, }, - after: "v1.9.3", + after: "v1.10.3", expected: false, }, { // upgrade not available if we don't know anything about the earlier state before: map[string]uint16{}, - after: "v1.9.3", + after: "v1.10.3", expected: false, }, } diff --git a/cmd/kubeadm/app/phases/upgrade/policy_test.go b/cmd/kubeadm/app/phases/upgrade/policy_test.go index beb378193db..870ec47045b 100644 --- a/cmd/kubeadm/app/phases/upgrade/policy_test.go +++ b/cmd/kubeadm/app/phases/upgrade/policy_test.go @@ -34,159 +34,159 @@ func TestEnforceVersionPolicies(t *testing.T) { { name: "minor upgrade", vg: &fakeVersionGetter{ - clusterVersion: "v1.9.3", - kubeletVersion: "v1.9.3", - kubeadmVersion: "v1.9.5", + clusterVersion: "v1.10.3", + kubeletVersion: "v1.10.3", + kubeadmVersion: "v1.10.5", }, - newK8sVersion: "v1.9.5", + newK8sVersion: "v1.10.5", }, { name: "major upgrade", vg: &fakeVersionGetter{ - clusterVersion: "v1.9.3", - kubeletVersion: "v1.9.2", - kubeadmVersion: "v1.10.1", + clusterVersion: "v1.10.3", + kubeletVersion: "v1.10.2", + kubeadmVersion: "v1.11.1", }, - newK8sVersion: "v1.10.0", + newK8sVersion: "v1.11.0", }, { name: "downgrade", vg: &fakeVersionGetter{ - clusterVersion: "v1.9.3", - kubeletVersion: "v1.9.3", - kubeadmVersion: "v1.9.3", + clusterVersion: "v1.10.3", + kubeletVersion: "v1.10.3", + kubeadmVersion: "v1.10.3", }, - newK8sVersion: "v1.9.2", + newK8sVersion: "v1.10.2", }, { name: "same version upgrade", vg: &fakeVersionGetter{ - clusterVersion: "v1.9.3", - kubeletVersion: "v1.9.3", - kubeadmVersion: "v1.9.3", + clusterVersion: "v1.10.3", + kubeletVersion: "v1.10.3", + kubeadmVersion: "v1.10.3", }, - newK8sVersion: "v1.9.3", + newK8sVersion: "v1.10.3", }, { - name: "new version must be higher than v1.9.0", + name: "new version must be higher than v1.10.0", vg: &fakeVersionGetter{ - clusterVersion: "v1.9.3", - kubeletVersion: "v1.9.3", - kubeadmVersion: "v1.9.3", + clusterVersion: "v1.10.3", + kubeletVersion: "v1.10.3", + kubeadmVersion: "v1.10.3", }, - newK8sVersion: "v1.8.10", - expectedMandatoryErrs: 2, // version must be higher than v1.9.0, can't upgrade old k8s with newer kubeadm + newK8sVersion: "v1.9.10", + expectedMandatoryErrs: 2, // version must be higher than v1.10.0, can't upgrade old k8s with newer kubeadm }, { name: "upgrading two minor versions in one go is not supported", vg: &fakeVersionGetter{ - clusterVersion: "v1.9.3", - kubeletVersion: "v1.9.3", - kubeadmVersion: "v1.11.0", + clusterVersion: "v1.10.3", + kubeletVersion: "v1.10.3", + kubeadmVersion: "v1.12.0", }, - newK8sVersion: "v1.11.0", + newK8sVersion: "v1.12.0", expectedMandatoryErrs: 1, // can't upgrade two minor versions expectedSkippableErrs: 1, // kubelet <-> apiserver skew too large }, { name: "downgrading two minor versions in one go is not supported", vg: &fakeVersionGetter{ - clusterVersion: "v1.11.3", - kubeletVersion: "v1.11.3", - kubeadmVersion: "v1.11.0", + clusterVersion: "v1.12.3", + kubeletVersion: "v1.12.3", + kubeadmVersion: "v1.12.0", }, - newK8sVersion: "v1.9.3", + newK8sVersion: "v1.10.3", expectedMandatoryErrs: 2, // can't downgrade two minor versions, can't upgrade old k8s with newer kubeadm }, { name: "kubeadm version must be higher than the new kube version. However, patch version skews may be forced", vg: &fakeVersionGetter{ - clusterVersion: "v1.9.3", - kubeletVersion: "v1.9.3", - kubeadmVersion: "v1.9.3", + clusterVersion: "v1.10.3", + kubeletVersion: "v1.10.3", + kubeadmVersion: "v1.10.3", }, - newK8sVersion: "v1.9.5", + newK8sVersion: "v1.10.5", expectedSkippableErrs: 1, }, { name: "kubeadm version must be higher than the new kube version. Trying to upgrade k8s to a higher minor version than kubeadm itself should never be supported", vg: &fakeVersionGetter{ - clusterVersion: "v1.9.3", - kubeletVersion: "v1.9.3", - kubeadmVersion: "v1.9.3", + clusterVersion: "v1.10.3", + kubeletVersion: "v1.10.3", + kubeadmVersion: "v1.10.3", }, - newK8sVersion: "v1.10.0", + newK8sVersion: "v1.11.0", expectedMandatoryErrs: 1, }, { name: "the maximum skew between the cluster version and the kubelet versions should be one minor version. This may be forced through though.", vg: &fakeVersionGetter{ - clusterVersion: "v1.9.3", - kubeletVersion: "v1.8.8", - kubeadmVersion: "v1.10.0", + clusterVersion: "v1.10.3", + kubeletVersion: "v1.9.8", + kubeadmVersion: "v1.11.0", }, - newK8sVersion: "v1.10.0", + newK8sVersion: "v1.11.0", expectedSkippableErrs: 1, }, { name: "experimental upgrades supported if the flag is set", vg: &fakeVersionGetter{ - clusterVersion: "v1.9.3", - kubeletVersion: "v1.9.3", - kubeadmVersion: "v1.10.0-beta.1", + clusterVersion: "v1.10.3", + kubeletVersion: "v1.10.3", + kubeadmVersion: "v1.11.0-beta.1", }, - newK8sVersion: "v1.10.0-beta.1", + newK8sVersion: "v1.11.0-beta.1", allowExperimental: true, }, { name: "release candidate upgrades supported if the flag is set", vg: &fakeVersionGetter{ - clusterVersion: "v1.9.3", - kubeletVersion: "v1.9.3", - kubeadmVersion: "v1.10.0-rc.1", + clusterVersion: "v1.10.3", + kubeletVersion: "v1.10.3", + kubeadmVersion: "v1.11.0-rc.1", }, - newK8sVersion: "v1.10.0-rc.1", + newK8sVersion: "v1.11.0-rc.1", allowRCs: true, }, { name: "release candidate upgrades supported if the flag is set", vg: &fakeVersionGetter{ - clusterVersion: "v1.9.3", - kubeletVersion: "v1.9.3", - kubeadmVersion: "v1.10.0-rc.1", + clusterVersion: "v1.10.3", + kubeletVersion: "v1.10.3", + kubeadmVersion: "v1.11.0-rc.1", }, - newK8sVersion: "v1.10.0-rc.1", + newK8sVersion: "v1.11.0-rc.1", allowExperimental: true, }, { name: "the user should not be able to upgrade to an experimental version if they haven't opted into that", vg: &fakeVersionGetter{ - clusterVersion: "v1.9.3", - kubeletVersion: "v1.9.3", - kubeadmVersion: "v1.10.0-beta.1", + clusterVersion: "v1.10.3", + kubeletVersion: "v1.10.3", + kubeadmVersion: "v1.11.0-beta.1", }, - newK8sVersion: "v1.10.0-beta.1", + newK8sVersion: "v1.11.0-beta.1", allowRCs: true, expectedSkippableErrs: 1, }, { name: "the user should not be able to upgrade to an release candidate version if they haven't opted into that", vg: &fakeVersionGetter{ - clusterVersion: "v1.9.3", - kubeletVersion: "v1.9.3", - kubeadmVersion: "v1.10.0-rc.1", + clusterVersion: "v1.10.3", + kubeletVersion: "v1.10.3", + kubeadmVersion: "v1.11.0-rc.1", }, - newK8sVersion: "v1.10.0-rc.1", + newK8sVersion: "v1.11.0-rc.1", expectedSkippableErrs: 1, }, { name: "the user can't use a newer minor version of kubeadm to upgrade an older version of kubeadm", vg: &fakeVersionGetter{ - clusterVersion: "v1.9.3", - kubeletVersion: "v1.9.3", - kubeadmVersion: "v1.10.0", + clusterVersion: "v1.10.3", + kubeletVersion: "v1.10.3", + kubeadmVersion: "v1.11.0", }, - newK8sVersion: "v1.9.6", + newK8sVersion: "v1.10.6", expectedMandatoryErrs: 1, // can't upgrade old k8s with newer kubeadm }, } diff --git a/cmd/kubeadm/app/phases/upgrade/postupgrade.go b/cmd/kubeadm/app/phases/upgrade/postupgrade.go index 039c852c7d6..4672f227957 100644 --- a/cmd/kubeadm/app/phases/upgrade/postupgrade.go +++ b/cmd/kubeadm/app/phases/upgrade/postupgrade.go @@ -43,7 +43,6 @@ import ( "k8s.io/kubernetes/pkg/util/version" ) -var v190alpha3 = version.MustParseSemantic("v1.9.0-alpha.3") var expiry = 180 * 24 * time.Hour // PerformPostUpgradeTasks runs nearly the same functions as 'kubeadm init' would do @@ -74,7 +73,7 @@ func PerformPostUpgradeTasks(client clientset.Interface, cfg *kubeadmapi.MasterC } // Upgrade to a self-hosted control plane if possible - if err := upgradeToSelfHosting(client, cfg, newK8sVer, dryRun); err != nil { + if err := upgradeToSelfHosting(client, cfg, dryRun); err != nil { errs = append(errs, err) } @@ -144,8 +143,8 @@ func removeOldDNSDeploymentIfAnotherDNSIsUsed(cfg *kubeadmapi.MasterConfiguratio }, 10) } -func upgradeToSelfHosting(client clientset.Interface, cfg *kubeadmapi.MasterConfiguration, newK8sVer *version.Version, dryRun bool) error { - if features.Enabled(cfg.FeatureGates, features.SelfHosting) && !IsControlPlaneSelfHosted(client) && newK8sVer.AtLeast(v190alpha3) { +func upgradeToSelfHosting(client clientset.Interface, cfg *kubeadmapi.MasterConfiguration, dryRun bool) error { + if features.Enabled(cfg.FeatureGates, features.SelfHosting) && !IsControlPlaneSelfHosted(client) { waiter := getWaiter(dryRun, client) diff --git a/cmd/kubeadm/app/preflight/checks_test.go b/cmd/kubeadm/app/preflight/checks_test.go index 2436bd8f408..0c533a67f17 100644 --- a/cmd/kubeadm/app/preflight/checks_test.go +++ b/cmd/kubeadm/app/preflight/checks_test.go @@ -627,13 +627,13 @@ func TestKubeletVersionCheck(t *testing.T) { expectErrors bool expectWarnings bool }{ - {"v1.10.2", "", false, false}, // check minimally supported version when there is no information about control plane - {"v1.7.3", "v1.7.8", true, false}, // too old kubelet (older than kubeadmconstants.MinimumKubeletVersion), should fail. - {"v1.9.0", "v1.9.5", false, false}, // kubelet within same major.minor as control plane - {"v1.9.5", "v1.9.1", false, false}, // kubelet is newer, but still within same major.minor as control plane - {"v1.9.0", "v1.10.1", false, false}, // kubelet is lower than control plane, but newer than minimally supported - {"v1.10.0-alpha.1", "v1.9.1", true, false}, // kubelet is newer (development build) than control plane, should fail. - {"v1.10.0", "v1.9.5", true, false}, // kubelet is newer (release) than control plane, should fail. + {"v1.11.2", "", false, false}, // check minimally supported version when there is no information about control plane + {"v1.8.3", "v1.8.8", true, false}, // too old kubelet (older than kubeadmconstants.MinimumKubeletVersion), should fail. + {"v1.10.0", "v1.10.5", false, false}, // kubelet within same major.minor as control plane + {"v1.10.5", "v1.10.1", false, false}, // kubelet is newer, but still within same major.minor as control plane + {"v1.10.0", "v1.11.1", false, false}, // kubelet is lower than control plane, but newer than minimally supported + {"v1.11.0-alpha.1", "v1.10.1", true, false}, // kubelet is newer (development build) than control plane, should fail. + {"v1.11.0", "v1.10.5", true, false}, // kubelet is newer (release) than control plane, should fail. } for _, tc := range cases {