From 7b1d87383ecd65bb25e5b479154d8cba45b6c91d Mon Sep 17 00:00:00 2001 From: Paco Xu Date: Sun, 8 Oct 2023 11:08:59 +0800 Subject: [PATCH] add kubelet policy skew test for kubeadm --- cmd/kubeadm/app/constants/constants.go | 1 - cmd/kubeadm/app/phases/upgrade/policy.go | 1 - cmd/kubeadm/app/phases/upgrade/policy_test.go | 35 ++++++++++++++++--- 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/cmd/kubeadm/app/constants/constants.go b/cmd/kubeadm/app/constants/constants.go index a11a800fcde..2f0d30bd488 100644 --- a/cmd/kubeadm/app/constants/constants.go +++ b/cmd/kubeadm/app/constants/constants.go @@ -453,7 +453,6 @@ var ( MinimumControlPlaneVersion = getSkewedKubernetesVersion(-1) // MinimumKubeletVersion specifies the minimum version of kubelet which kubeadm supports - // Refer to https://kubernetes.io/releases/version-skew-policy/#kubelet-1 MinimumKubeletVersion = getSkewedKubernetesVersion(-3) // CurrentKubernetesVersion specifies current Kubernetes version supported by kubeadm diff --git a/cmd/kubeadm/app/phases/upgrade/policy.go b/cmd/kubeadm/app/phases/upgrade/policy.go index d3723dbaf2f..497e03747dd 100644 --- a/cmd/kubeadm/app/phases/upgrade/policy.go +++ b/cmd/kubeadm/app/phases/upgrade/policy.go @@ -35,7 +35,6 @@ const ( MaximumAllowedMinorVersionDowngradeSkew = 1 // MaximumAllowedMinorVersionKubeletSkew describes how many minor versions the control plane version and the kubelet can skew in a kubeadm cluster - // Refer to https://kubernetes.io/releases/version-skew-policy/#kubelet-1 MaximumAllowedMinorVersionKubeletSkew = 3 ) diff --git a/cmd/kubeadm/app/phases/upgrade/policy_test.go b/cmd/kubeadm/app/phases/upgrade/policy_test.go index 5d97eca84a7..a747046a361 100644 --- a/cmd/kubeadm/app/phases/upgrade/policy_test.go +++ b/cmd/kubeadm/app/phases/upgrade/policy_test.go @@ -90,6 +90,24 @@ func TestEnforceVersionPolicies(t *testing.T) { }, newK8sVersion: "v1.13.0", expectedMandatoryErrs: 1, // can't upgrade two minor versions + }, + { + name: "upgrading with n-3 kubelet is supported", + vg: &fakeVersionGetter{ + clusterVersion: "v1.14.3", + kubeletVersion: "v1.12.3", + kubeadmVersion: "v1.15.0", + }, + newK8sVersion: "v1.15.0", + }, + { + name: "upgrading with n-4 kubelet is not supported", + vg: &fakeVersionGetter{ + clusterVersion: "v1.14.3", + kubeletVersion: "v1.11.3", + kubeadmVersion: "v1.15.0", + }, + newK8sVersion: "v1.15.0", expectedSkippableErrs: 1, // kubelet <-> apiserver skew too large }, { @@ -123,13 +141,22 @@ func TestEnforceVersionPolicies(t *testing.T) { 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.", + name: "the maximum skew between the cluster version and the kubelet versions should be three minor version.", vg: &fakeVersionGetter{ - clusterVersion: "v1.12.0", + clusterVersion: "v1.13.0", kubeletVersion: "v1.10.8", - kubeadmVersion: "v1.12.0", + kubeadmVersion: "v1.13.0", }, - newK8sVersion: "v1.12.0", + newK8sVersion: "v1.13.0", + }, + { + name: "the maximum skew between the cluster version and the kubelet versions should be three minor version. This may be forced through though.", + vg: &fakeVersionGetter{ + clusterVersion: "v1.14.0", + kubeletVersion: "v1.10.8", + kubeadmVersion: "v1.14.0", + }, + newK8sVersion: "v1.14.0", expectedSkippableErrs: 1, }, {