Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

kubeadm: Bump minimum Kubernetes version to v1.12 #71259

Merged
merged 1 commit into from
Nov 21, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
8 changes: 4 additions & 4 deletions cmd/kubeadm/app/cmd/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ const (
defaultNumberOfImages = 8
// dummyKubernetesVersion is just used for unit testing, in order to not make
// kubeadm lookup dl.k8s.io to resolve what the latest stable release is
dummyKubernetesVersion = "v1.11.0"
dummyKubernetesVersion = "v1.12.0"
)

func TestNewCmdConfigImagesList(t *testing.T) {
Expand All @@ -69,12 +69,12 @@ func TestImagesListRunWithCustomConfigPath(t *testing.T) {
name: "set k8s version",
expectedImageCount: defaultNumberOfImages,
expectedImageSubstrings: []string{
":v1.11.1",
":v1.12.1",
},
configContents: []byte(dedent.Dedent(`
apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
kubernetesVersion: v1.11.1
kubernetesVersion: v1.12.1
`)),
},
{
Expand All @@ -86,7 +86,7 @@ func TestImagesListRunWithCustomConfigPath(t *testing.T) {
configContents: []byte(dedent.Dedent(`
apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
kubernetesVersion: v1.11.0
kubernetesVersion: v1.12.0
`)),
},
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/kubeadm/app/cmd/token_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ func TestRunCreateToken(t *testing.T) {
ClusterConfiguration: kubeadmapiv1beta1.ClusterConfiguration{
// KubernetesVersion is not used, but we set this explicitly to avoid
// the lookup of the version from the internet when executing ConfigFileAndDefaultsToInternalConfig
KubernetesVersion: "v1.11.0",
KubernetesVersion: "v1.12.0",
},
BootstrapTokens: []kubeadmapiv1beta1.BootstrapToken{
{
Expand Down
4 changes: 2 additions & 2 deletions cmd/kubeadm/app/cmd/upgrade/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,11 @@ var (

upgradeNodeConfigExample = normalizer.Examples(`
# Downloads the kubelet configuration from the ConfigMap in the cluster. Uses a specific desired kubelet version.
kubeadm upgrade node config --kubelet-version v1.12.0
kubeadm upgrade node config --kubelet-version v1.13.0

# Simulates the downloading of the kubelet configuration from the ConfigMap in the cluster with a specific desired
# version. Does not change any state locally on the node.
kubeadm upgrade node config --kubelet-version v1.12.0 --dry-run
kubeadm upgrade node config --kubelet-version v1.13.0 --dry-run
`)
)

Expand Down
4 changes: 2 additions & 2 deletions cmd/kubeadm/app/constants/constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -377,10 +377,10 @@ var (
MasterComponents = []string{KubeAPIServer, KubeControllerManager, KubeScheduler}

// MinimumControlPlaneVersion specifies the minimum control plane version kubeadm can deploy
MinimumControlPlaneVersion = version.MustParseSemantic("v1.11.0")
MinimumControlPlaneVersion = version.MustParseSemantic("v1.12.0")

// MinimumKubeletVersion specifies the minimum version of kubelet which kubeadm supports
MinimumKubeletVersion = version.MustParseSemantic("v1.11.0")
MinimumKubeletVersion = version.MustParseSemantic("v1.12.0")

// SupportedEtcdVersion lists officially supported etcd versions with corresponding Kubernetes releases
SupportedEtcdVersion = map[uint8]string{
Expand Down
6 changes: 3 additions & 3 deletions cmd/kubeadm/app/features/features_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import (
utilfeature "k8s.io/apiserver/pkg/util/feature"
)

var TestMinVersion = version.MustParseSemantic("v1.11.0-alpha.1")
var TestMinVersion = version.MustParseSemantic("v1.12.0-alpha.1")

func TestKnownFeatures(t *testing.T) {
var someFeatures = FeatureList{
Expand Down Expand Up @@ -144,12 +144,12 @@ func TestValidateVersion(t *testing.T) {
},
{ //min version but correct value given
requestedFeatures: map[string]bool{"feature2": true},
requestedVersion: "v1.11.0",
requestedVersion: "v1.12.0",
expectedError: false,
},
{ //min version and incorrect value given
requestedFeatures: map[string]bool{"feature2": true},
requestedVersion: "v1.10.2",
requestedVersion: "v1.11.2",
expectedError: true,
},
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/kubeadm/app/phases/addons/proxy/proxy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ func TestEnsureProxyAddon(t *testing.T) {
PodSubnet: "5.6.7.8/24",
},
ImageRepository: "someRepo",
KubernetesVersion: "v1.11.0",
KubernetesVersion: "v1.12.0",
},
}

Expand Down
2 changes: 1 addition & 1 deletion cmd/kubeadm/app/phases/kubelet/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func TestCreateConfigMap(t *testing.T) {
cfg := &kubeadmapi.InitConfiguration{
NodeRegistration: kubeadmapi.NodeRegistrationOptions{Name: nodeName},
ClusterConfiguration: kubeadmapi.ClusterConfiguration{
KubernetesVersion: "v1.12.0",
KubernetesVersion: "v1.13.0",
ComponentConfigs: kubeadmapi.ComponentConfigs{
Kubelet: &kubeletconfig.KubeletConfiguration{},
},
Expand Down
120 changes: 60 additions & 60 deletions cmd/kubeadm/app/phases/upgrade/policy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,38 +34,38 @@ func TestEnforceVersionPolicies(t *testing.T) {
{
name: "minor upgrade",
vg: &fakeVersionGetter{
clusterVersion: "v1.11.3",
kubeletVersion: "v1.11.3",
kubeadmVersion: "v1.11.5",
clusterVersion: "v1.12.3",
kubeletVersion: "v1.12.3",
kubeadmVersion: "v1.12.5",
},
newK8sVersion: "v1.11.5",
newK8sVersion: "v1.12.5",
},
{
name: "major upgrade",
vg: &fakeVersionGetter{
clusterVersion: "v1.11.3",
kubeletVersion: "v1.11.2",
kubeadmVersion: "v1.12.1",
clusterVersion: "v1.12.3",
kubeletVersion: "v1.12.2",
kubeadmVersion: "v1.13.1",
},
newK8sVersion: "v1.12.0",
newK8sVersion: "v1.13.0",
},
{
name: "downgrade",
vg: &fakeVersionGetter{
clusterVersion: "v1.11.3",
kubeletVersion: "v1.11.3",
kubeadmVersion: "v1.11.3",
clusterVersion: "v1.12.3",
kubeletVersion: "v1.12.3",
kubeadmVersion: "v1.12.3",
},
newK8sVersion: "v1.11.2",
newK8sVersion: "v1.12.2",
},
{
name: "same version upgrade",
vg: &fakeVersionGetter{
clusterVersion: "v1.11.3",
kubeletVersion: "v1.11.3",
kubeadmVersion: "v1.11.3",
clusterVersion: "v1.12.3",
kubeletVersion: "v1.12.3",
kubeadmVersion: "v1.12.3",
},
newK8sVersion: "v1.11.3",
newK8sVersion: "v1.12.3",
},
{
name: "new version must be higher than v1.10.0",
Expand All @@ -81,114 +81,114 @@ func TestEnforceVersionPolicies(t *testing.T) {
{
name: "upgrading two minor versions in one go is not supported",
vg: &fakeVersionGetter{
clusterVersion: "v1.10.3",
kubeletVersion: "v1.10.3",
kubeadmVersion: "v1.12.0",
clusterVersion: "v1.11.3",
kubeletVersion: "v1.11.3",
kubeadmVersion: "v1.13.0",
},
newK8sVersion: "v1.12.0",
newK8sVersion: "v1.13.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.13.3",
kubeletVersion: "v1.13.3",
kubeadmVersion: "v1.13.0",
clusterVersion: "v1.14.3",
kubeletVersion: "v1.14.3",
kubeadmVersion: "v1.14.0",
},
newK8sVersion: "v1.11.3",
newK8sVersion: "v1.12.3",
expectedMandatoryErrs: 1, // can't downgrade two minor versions
expectedSkippableErrs: 1, // 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.11.3",
kubeletVersion: "v1.11.3",
kubeadmVersion: "v1.11.3",
clusterVersion: "v1.12.3",
kubeletVersion: "v1.12.3",
kubeadmVersion: "v1.12.3",
},
newK8sVersion: "v1.11.5",
newK8sVersion: "v1.12.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.11.3",
kubeletVersion: "v1.11.3",
kubeadmVersion: "v1.11.3",
clusterVersion: "v1.12.3",
kubeletVersion: "v1.12.3",
kubeadmVersion: "v1.12.3",
},
newK8sVersion: "v1.12.0",
newK8sVersion: "v1.13.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.11.3",
kubeletVersion: "v1.10.8",
kubeadmVersion: "v1.12.0",
clusterVersion: "v1.12.3",
kubeletVersion: "v1.11.8",
kubeadmVersion: "v1.13.0",
},
newK8sVersion: "v1.12.0",
newK8sVersion: "v1.13.0",
expectedSkippableErrs: 1,
},
{
name: "experimental upgrades supported if the flag is set",
vg: &fakeVersionGetter{
clusterVersion: "v1.11.3",
kubeletVersion: "v1.11.3",
kubeadmVersion: "v1.12.0-beta.1",
clusterVersion: "v1.12.3",
kubeletVersion: "v1.12.3",
kubeadmVersion: "v1.13.0-beta.1",
},
newK8sVersion: "v1.12.0-beta.1",
newK8sVersion: "v1.13.0-beta.1",
allowExperimental: true,
},
{
name: "release candidate upgrades supported if the flag is set",
vg: &fakeVersionGetter{
clusterVersion: "v1.11.3",
kubeletVersion: "v1.11.3",
kubeadmVersion: "v1.12.0-rc.1",
clusterVersion: "v1.12.3",
kubeletVersion: "v1.12.3",
kubeadmVersion: "v1.13.0-rc.1",
},
newK8sVersion: "v1.12.0-rc.1",
newK8sVersion: "v1.13.0-rc.1",
allowRCs: true,
},
{
name: "release candidate upgrades supported if the flag is set",
vg: &fakeVersionGetter{
clusterVersion: "v1.11.3",
kubeletVersion: "v1.11.3",
kubeadmVersion: "v1.12.0-rc.1",
clusterVersion: "v1.12.3",
kubeletVersion: "v1.12.3",
kubeadmVersion: "v1.13.0-rc.1",
},
newK8sVersion: "v1.12.0-rc.1",
newK8sVersion: "v1.13.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.11.3",
kubeletVersion: "v1.11.3",
kubeadmVersion: "v1.12.0-beta.1",
clusterVersion: "v1.12.3",
kubeletVersion: "v1.12.3",
kubeadmVersion: "v1.13.0-beta.1",
},
newK8sVersion: "v1.12.0-beta.1",
newK8sVersion: "v1.13.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.11.3",
kubeletVersion: "v1.11.3",
kubeadmVersion: "v1.12.0-rc.1",
clusterVersion: "v1.12.3",
kubeletVersion: "v1.12.3",
kubeadmVersion: "v1.13.0-rc.1",
},
newK8sVersion: "v1.12.0-rc.1",
newK8sVersion: "v1.13.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.11.3",
kubeletVersion: "v1.11.3",
kubeadmVersion: "v1.12.0",
clusterVersion: "v1.12.3",
kubeletVersion: "v1.12.3",
kubeadmVersion: "v1.13.0",
},
newK8sVersion: "v1.11.6",
newK8sVersion: "v1.12.6",
expectedSkippableErrs: 1, // can't upgrade old k8s with newer kubeadm
},
}
Expand Down
5 changes: 3 additions & 2 deletions cmd/kubeadm/app/phases/upgrade/staticpods_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -471,7 +471,7 @@ func TestStaticPodControlPlane(t *testing.T) {
t.Fatalf("couldn't read temp file: %v", err)
}

newcfg, err := getConfig("v1.11.0", tempCertsDir, tmpEtcdDataDir)
newcfg, err := getConfig("v1.13.0", tempCertsDir, tmpEtcdDataDir)
if err != nil {
t.Fatalf("couldn't create config: %v", err)
}
Expand Down Expand Up @@ -523,10 +523,11 @@ func TestStaticPodControlPlane(t *testing.T) {

if (oldHash != newHash) != rt.manifestShouldChange {
t.Errorf(
"failed StaticPodControlPlane\n%s\n\texpected manifest change: %t\n\tgot: %t",
"failed StaticPodControlPlane\n%s\n\texpected manifest change: %t\n\tgot: %t\n\tnewHash: %v",
rt.description,
rt.manifestShouldChange,
(oldHash != newHash),
newHash,
)
}
return
Expand Down
2 changes: 1 addition & 1 deletion cmd/kubeadm/app/phases/uploadconfig/uploadconfig_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ func TestUploadConfiguration(t *testing.T) {
AdvertiseAddress: "1.2.3.4",
},
ClusterConfiguration: kubeadmapiv1beta1.ClusterConfiguration{
KubernetesVersion: "v1.11.10",
KubernetesVersion: "v1.12.10",
},
BootstrapTokens: []kubeadmapiv1beta1.BootstrapToken{
{
Expand Down
14 changes: 7 additions & 7 deletions cmd/kubeadm/app/preflight/checks_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -647,13 +647,13 @@ func TestKubeletVersionCheck(t *testing.T) {
expectErrors bool
expectWarnings bool
}{
{"v1.12.2", "", false, false}, // check minimally supported version when there is no information about control plane
{"v1.9.3", "v1.9.8", true, false}, // too old kubelet (older than kubeadmconstants.MinimumKubeletVersion), should fail.
{"v1.11.0", "v1.11.5", false, false}, // kubelet within same major.minor as control plane
{"v1.11.5", "v1.11.1", false, false}, // kubelet is newer, but still within same major.minor as control plane
{"v1.11.0", "v1.12.1", false, false}, // kubelet is lower than control plane, but newer than minimally supported
{"v1.12.0-alpha.1", "v1.11.1", true, false}, // kubelet is newer (development build) than control plane, should fail.
{"v1.12.0", "v1.11.5", true, false}, // kubelet is newer (release) than control plane, should fail.
{"v1.13.2", "", false, false}, // check minimally supported version when there is no information about control plane
{"v1.11.3", "v1.11.8", true, false}, // too old kubelet (older than kubeadmconstants.MinimumKubeletVersion), should fail.
{"v1.12.0", "v1.12.5", false, false}, // kubelet within same major.minor as control plane
{"v1.12.5", "v1.12.1", false, false}, // kubelet is newer, but still within same major.minor as control plane
{"v1.12.0", "v1.13.1", false, false}, // kubelet is lower than control plane, but newer than minimally supported
{"v1.13.0-alpha.1", "v1.12.1", true, false}, // kubelet is newer (development build) than control plane, should fail.
{"v1.13.0", "v1.12.5", true, false}, // kubelet is newer (release) than control plane, should fail.
}

for _, tc := range cases {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ Etcd:
ServerCertSANs: null
FeatureGates: null
ImageRepository: k8s.gcr.io
KubernetesVersion: v1.11.2
KubernetesVersion: v1.12.2
LocalAPIEndpoint:
AdvertiseAddress: 192.168.2.2
BindPort: 6443
Expand Down