Merge pull request #120825 from pacoxu/kubeadm-skew-match

kubeadm: adjust kubeadm skew policy for upgrades
This commit is contained in:
Kubernetes Prow Robot 2023-10-12 16:00:02 +02:00 committed by GitHub
commit 801932c012
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 33 additions and 6 deletions

View File

@ -453,7 +453,7 @@ var (
MinimumControlPlaneVersion = getSkewedKubernetesVersion(-1)
// MinimumKubeletVersion specifies the minimum version of kubelet which kubeadm supports
MinimumKubeletVersion = getSkewedKubernetesVersion(-1)
MinimumKubeletVersion = getSkewedKubernetesVersion(-3)
// CurrentKubernetesVersion specifies current Kubernetes version supported by kubeadm
CurrentKubernetesVersion = getSkewedKubernetesVersion(0)

View File

@ -35,7 +35,7 @@ const (
MaximumAllowedMinorVersionDowngradeSkew = 1
// MaximumAllowedMinorVersionKubeletSkew describes how many minor versions the control plane version and the kubelet can skew in a kubeadm cluster
MaximumAllowedMinorVersionKubeletSkew = 1
MaximumAllowedMinorVersionKubeletSkew = 3
)
// VersionSkewPolicyErrors describes version skew errors that might be seen during the validation process in EnforceVersionPolicies

View File

@ -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,
},
{