mirror of https://github.com/k3s-io/k3s
Merge pull request #68649 from neolit123/kubeadm-ver-bump
kubeadm: update MinimumControlPlaneVersion to v1.11.0pull/8/head
commit
92dc421d89
|
@ -39,7 +39,7 @@ const (
|
||||||
defaultNumberOfImages = 8
|
defaultNumberOfImages = 8
|
||||||
// dummyKubernetesVersion is just used for unit testing, in order to not make
|
// 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
|
// kubeadm lookup dl.k8s.io to resolve what the latest stable release is
|
||||||
dummyKubernetesVersion = "v1.10.0"
|
dummyKubernetesVersion = "v1.11.0"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestNewCmdConfigImagesList(t *testing.T) {
|
func TestNewCmdConfigImagesList(t *testing.T) {
|
||||||
|
@ -65,12 +65,12 @@ func TestImagesListRunWithCustomConfigPath(t *testing.T) {
|
||||||
name: "set k8s version",
|
name: "set k8s version",
|
||||||
expectedImageCount: defaultNumberOfImages,
|
expectedImageCount: defaultNumberOfImages,
|
||||||
expectedImageSubstrings: []string{
|
expectedImageSubstrings: []string{
|
||||||
":v1.10.1",
|
":v1.11.1",
|
||||||
},
|
},
|
||||||
configContents: []byte(dedent.Dedent(`
|
configContents: []byte(dedent.Dedent(`
|
||||||
apiVersion: kubeadm.k8s.io/v1alpha3
|
apiVersion: kubeadm.k8s.io/v1alpha3
|
||||||
kind: ClusterConfiguration
|
kind: ClusterConfiguration
|
||||||
kubernetesVersion: v1.10.1
|
kubernetesVersion: v1.11.1
|
||||||
`)),
|
`)),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -236,7 +236,7 @@ func TestMigrate(t *testing.T) {
|
||||||
# This is intentionally testing an old API version and the old kind naming and making sure the output is correct
|
# This is intentionally testing an old API version and the old kind naming and making sure the output is correct
|
||||||
apiVersion: kubeadm.k8s.io/v1alpha2
|
apiVersion: kubeadm.k8s.io/v1alpha2
|
||||||
kind: MasterConfiguration
|
kind: MasterConfiguration
|
||||||
kubernetesVersion: v1.10.0
|
kubernetesVersion: v1.11.0
|
||||||
`))
|
`))
|
||||||
configFile, cleanup := tempConfig(t, cfg)
|
configFile, cleanup := tempConfig(t, cfg)
|
||||||
defer cleanup()
|
defer cleanup()
|
||||||
|
|
|
@ -32,7 +32,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// phaseTestK8sVersion is a fake kubernetes version to use when testing
|
// phaseTestK8sVersion is a fake kubernetes version to use when testing
|
||||||
const phaseTestK8sVersion = "v1.10.0"
|
const phaseTestK8sVersion = "v1.11.0"
|
||||||
|
|
||||||
func TestCertsSubCommandsHasFlags(t *testing.T) {
|
func TestCertsSubCommandsHasFlags(t *testing.T) {
|
||||||
|
|
||||||
|
|
|
@ -90,7 +90,7 @@ func TestControlPlaneCreateFilesWithFlags(t *testing.T) {
|
||||||
{
|
{
|
||||||
command: "all",
|
command: "all",
|
||||||
additionalFlags: []string{
|
additionalFlags: []string{
|
||||||
"--kubernetes-version=v1.10.0",
|
"--kubernetes-version=v1.11.0",
|
||||||
"--apiserver-advertise-address=1.2.3.4",
|
"--apiserver-advertise-address=1.2.3.4",
|
||||||
"--apiserver-bind-port=6443",
|
"--apiserver-bind-port=6443",
|
||||||
"--service-cidr=1.2.3.4/16",
|
"--service-cidr=1.2.3.4/16",
|
||||||
|
@ -105,7 +105,7 @@ func TestControlPlaneCreateFilesWithFlags(t *testing.T) {
|
||||||
{
|
{
|
||||||
command: "apiserver",
|
command: "apiserver",
|
||||||
additionalFlags: []string{
|
additionalFlags: []string{
|
||||||
"--kubernetes-version=v1.10.0",
|
"--kubernetes-version=v1.11.0",
|
||||||
"--apiserver-advertise-address=1.2.3.4",
|
"--apiserver-advertise-address=1.2.3.4",
|
||||||
"--apiserver-bind-port=6443",
|
"--apiserver-bind-port=6443",
|
||||||
"--service-cidr=1.2.3.4/16",
|
"--service-cidr=1.2.3.4/16",
|
||||||
|
@ -115,7 +115,7 @@ func TestControlPlaneCreateFilesWithFlags(t *testing.T) {
|
||||||
{
|
{
|
||||||
command: "controller-manager",
|
command: "controller-manager",
|
||||||
additionalFlags: []string{
|
additionalFlags: []string{
|
||||||
"--kubernetes-version=v1.10.0",
|
"--kubernetes-version=v1.11.0",
|
||||||
"--pod-network-cidr=1.2.3.4/16",
|
"--pod-network-cidr=1.2.3.4/16",
|
||||||
},
|
},
|
||||||
expectedFiles: []string{"kube-controller-manager.yaml"},
|
expectedFiles: []string{"kube-controller-manager.yaml"},
|
||||||
|
@ -123,7 +123,7 @@ func TestControlPlaneCreateFilesWithFlags(t *testing.T) {
|
||||||
{
|
{
|
||||||
command: "scheduler",
|
command: "scheduler",
|
||||||
additionalFlags: []string{
|
additionalFlags: []string{
|
||||||
"--kubernetes-version=v1.10.0",
|
"--kubernetes-version=v1.11.0",
|
||||||
},
|
},
|
||||||
expectedFiles: []string{"kube-scheduler.yaml"},
|
expectedFiles: []string{"kube-scheduler.yaml"},
|
||||||
},
|
},
|
||||||
|
|
|
@ -81,7 +81,7 @@ var (
|
||||||
kubeadm alpha phase kubelet config download
|
kubeadm alpha phase kubelet config download
|
||||||
|
|
||||||
# Downloads the kubelet configuration from the ConfigMap in the cluster. Uses a specific desired kubelet version.
|
# Downloads the kubelet configuration from the ConfigMap in the cluster. Uses a specific desired kubelet version.
|
||||||
kubeadm alpha phase kubelet config download --kubelet-version v1.11.0
|
kubeadm alpha phase kubelet config download --kubelet-version v1.12.0
|
||||||
`)
|
`)
|
||||||
|
|
||||||
kubeletConfigWriteToDiskLongDesc = normalizer.LongDesc(`
|
kubeletConfigWriteToDiskLongDesc = normalizer.LongDesc(`
|
||||||
|
@ -104,7 +104,7 @@ var (
|
||||||
|
|
||||||
kubeletConfigEnableDynamicExample = normalizer.Examples(`
|
kubeletConfigEnableDynamicExample = normalizer.Examples(`
|
||||||
# Enables dynamic kubelet configuration for a Node.
|
# Enables dynamic kubelet configuration for a Node.
|
||||||
kubeadm alpha phase kubelet enable-dynamic-config --node-name node-1 --kubelet-version v1.11.0
|
kubeadm alpha phase kubelet enable-dynamic-config --node-name node-1 --kubelet-version v1.12.0
|
||||||
|
|
||||||
WARNING: This feature is still experimental, and disabled by default. Enable only if you know what you are doing, as it
|
WARNING: This feature is still experimental, and disabled by default. Enable only if you know what you are doing, as it
|
||||||
may have surprising side-effects at this stage.
|
may have surprising side-effects at this stage.
|
||||||
|
|
|
@ -182,7 +182,7 @@ func TestRunCreateToken(t *testing.T) {
|
||||||
ClusterConfiguration: kubeadmapiv1alpha3.ClusterConfiguration{
|
ClusterConfiguration: kubeadmapiv1alpha3.ClusterConfiguration{
|
||||||
// KubernetesVersion is not used, but we set this explicitly to avoid
|
// KubernetesVersion is not used, but we set this explicitly to avoid
|
||||||
// the lookup of the version from the internet when executing ConfigFileAndDefaultsToInternalConfig
|
// the lookup of the version from the internet when executing ConfigFileAndDefaultsToInternalConfig
|
||||||
KubernetesVersion: "v1.10.0",
|
KubernetesVersion: "v1.11.0",
|
||||||
},
|
},
|
||||||
BootstrapTokens: []kubeadmapiv1alpha3.BootstrapToken{
|
BootstrapTokens: []kubeadmapiv1alpha3.BootstrapToken{
|
||||||
{
|
{
|
||||||
|
|
|
@ -48,11 +48,11 @@ var (
|
||||||
|
|
||||||
upgradeNodeConfigExample = normalizer.Examples(`
|
upgradeNodeConfigExample = normalizer.Examples(`
|
||||||
# Downloads the kubelet configuration from the ConfigMap in the cluster. Uses a specific desired kubelet version.
|
# Downloads the kubelet configuration from the ConfigMap in the cluster. Uses a specific desired kubelet version.
|
||||||
kubeadm upgrade node config --kubelet-version v1.11.0
|
kubeadm upgrade node config --kubelet-version v1.12.0
|
||||||
|
|
||||||
# Simulates the downloading of the kubelet configuration from the ConfigMap in the cluster with a specific desired
|
# 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.
|
# version. Does not change any state locally on the node.
|
||||||
kubeadm upgrade node config --kubelet-version v1.11.0 --dry-run
|
kubeadm upgrade node config --kubelet-version v1.12.0 --dry-run
|
||||||
`)
|
`)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -352,10 +352,10 @@ var (
|
||||||
MasterComponents = []string{KubeAPIServer, KubeControllerManager, KubeScheduler}
|
MasterComponents = []string{KubeAPIServer, KubeControllerManager, KubeScheduler}
|
||||||
|
|
||||||
// MinimumControlPlaneVersion specifies the minimum control plane version kubeadm can deploy
|
// MinimumControlPlaneVersion specifies the minimum control plane version kubeadm can deploy
|
||||||
MinimumControlPlaneVersion = version.MustParseSemantic("v1.10.0")
|
MinimumControlPlaneVersion = version.MustParseSemantic("v1.11.0")
|
||||||
|
|
||||||
// MinimumKubeletVersion specifies the minimum version of kubelet which kubeadm supports
|
// MinimumKubeletVersion specifies the minimum version of kubelet which kubeadm supports
|
||||||
MinimumKubeletVersion = version.MustParseSemantic("v1.10.0")
|
MinimumKubeletVersion = version.MustParseSemantic("v1.11.0")
|
||||||
|
|
||||||
// SupportedEtcdVersion lists officially supported etcd versions with corresponding kubernetes releases
|
// SupportedEtcdVersion lists officially supported etcd versions with corresponding kubernetes releases
|
||||||
SupportedEtcdVersion = map[uint8]string{
|
SupportedEtcdVersion = map[uint8]string{
|
||||||
|
|
|
@ -24,7 +24,7 @@ import (
|
||||||
"k8s.io/kubernetes/pkg/util/version"
|
"k8s.io/kubernetes/pkg/util/version"
|
||||||
)
|
)
|
||||||
|
|
||||||
var TestMinVersion = version.MustParseSemantic("v1.10.0-alpha.1")
|
var TestMinVersion = version.MustParseSemantic("v1.11.0-alpha.1")
|
||||||
|
|
||||||
func TestKnownFeatures(t *testing.T) {
|
func TestKnownFeatures(t *testing.T) {
|
||||||
var someFeatures = FeatureList{
|
var someFeatures = FeatureList{
|
||||||
|
@ -144,12 +144,12 @@ func TestValidateVersion(t *testing.T) {
|
||||||
},
|
},
|
||||||
{ //min version but correct value given
|
{ //min version but correct value given
|
||||||
requestedFeatures: map[string]bool{"feature2": true},
|
requestedFeatures: map[string]bool{"feature2": true},
|
||||||
requestedVersion: "v1.10.0",
|
requestedVersion: "v1.11.0",
|
||||||
expectedError: false,
|
expectedError: false,
|
||||||
},
|
},
|
||||||
{ //min version and incorrect value given
|
{ //min version and incorrect value given
|
||||||
requestedFeatures: map[string]bool{"feature2": true},
|
requestedFeatures: map[string]bool{"feature2": true},
|
||||||
requestedVersion: "v1.9.2",
|
requestedVersion: "v1.10.2",
|
||||||
expectedError: true,
|
expectedError: true,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -183,7 +183,7 @@ func TestEnsureProxyAddon(t *testing.T) {
|
||||||
PodSubnet: "5.6.7.8/24",
|
PodSubnet: "5.6.7.8/24",
|
||||||
},
|
},
|
||||||
ImageRepository: "someRepo",
|
ImageRepository: "someRepo",
|
||||||
KubernetesVersion: "v1.10.0",
|
KubernetesVersion: "v1.11.0",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,7 @@ func TestCreateConfigMap(t *testing.T) {
|
||||||
cfg := &kubeadmapi.InitConfiguration{
|
cfg := &kubeadmapi.InitConfiguration{
|
||||||
NodeRegistration: kubeadmapi.NodeRegistrationOptions{Name: nodeName},
|
NodeRegistration: kubeadmapi.NodeRegistrationOptions{Name: nodeName},
|
||||||
ClusterConfiguration: kubeadmapi.ClusterConfiguration{
|
ClusterConfiguration: kubeadmapi.ClusterConfiguration{
|
||||||
KubernetesVersion: "v1.11.0",
|
KubernetesVersion: "v1.12.0",
|
||||||
ComponentConfigs: kubeadmapi.ComponentConfigs{
|
ComponentConfigs: kubeadmapi.ComponentConfigs{
|
||||||
Kubelet: &kubeletconfig.KubeletConfiguration{},
|
Kubelet: &kubeletconfig.KubeletConfiguration{},
|
||||||
},
|
},
|
||||||
|
|
|
@ -34,38 +34,38 @@ func TestEnforceVersionPolicies(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "minor upgrade",
|
name: "minor upgrade",
|
||||||
vg: &fakeVersionGetter{
|
vg: &fakeVersionGetter{
|
||||||
clusterVersion: "v1.10.3",
|
clusterVersion: "v1.11.3",
|
||||||
kubeletVersion: "v1.10.3",
|
kubeletVersion: "v1.11.3",
|
||||||
kubeadmVersion: "v1.10.5",
|
kubeadmVersion: "v1.11.5",
|
||||||
},
|
},
|
||||||
newK8sVersion: "v1.10.5",
|
newK8sVersion: "v1.11.5",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "major upgrade",
|
name: "major upgrade",
|
||||||
vg: &fakeVersionGetter{
|
vg: &fakeVersionGetter{
|
||||||
clusterVersion: "v1.10.3",
|
clusterVersion: "v1.11.3",
|
||||||
kubeletVersion: "v1.10.2",
|
kubeletVersion: "v1.11.2",
|
||||||
kubeadmVersion: "v1.11.1",
|
kubeadmVersion: "v1.12.1",
|
||||||
},
|
},
|
||||||
newK8sVersion: "v1.11.0",
|
newK8sVersion: "v1.12.0",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "downgrade",
|
name: "downgrade",
|
||||||
vg: &fakeVersionGetter{
|
vg: &fakeVersionGetter{
|
||||||
clusterVersion: "v1.10.3",
|
clusterVersion: "v1.11.3",
|
||||||
kubeletVersion: "v1.10.3",
|
kubeletVersion: "v1.11.3",
|
||||||
kubeadmVersion: "v1.10.3",
|
kubeadmVersion: "v1.11.3",
|
||||||
},
|
},
|
||||||
newK8sVersion: "v1.10.2",
|
newK8sVersion: "v1.11.2",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "same version upgrade",
|
name: "same version upgrade",
|
||||||
vg: &fakeVersionGetter{
|
vg: &fakeVersionGetter{
|
||||||
clusterVersion: "v1.10.3",
|
clusterVersion: "v1.11.3",
|
||||||
kubeletVersion: "v1.10.3",
|
kubeletVersion: "v1.11.3",
|
||||||
kubeadmVersion: "v1.10.3",
|
kubeadmVersion: "v1.11.3",
|
||||||
},
|
},
|
||||||
newK8sVersion: "v1.10.3",
|
newK8sVersion: "v1.11.3",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "new version must be higher than v1.10.0",
|
name: "new version must be higher than v1.10.0",
|
||||||
|
@ -92,103 +92,103 @@ func TestEnforceVersionPolicies(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "downgrading two minor versions in one go is not supported",
|
name: "downgrading two minor versions in one go is not supported",
|
||||||
vg: &fakeVersionGetter{
|
vg: &fakeVersionGetter{
|
||||||
clusterVersion: "v1.12.3",
|
clusterVersion: "v1.13.3",
|
||||||
kubeletVersion: "v1.12.3",
|
kubeletVersion: "v1.13.3",
|
||||||
kubeadmVersion: "v1.12.0",
|
kubeadmVersion: "v1.13.0",
|
||||||
},
|
},
|
||||||
newK8sVersion: "v1.10.3",
|
newK8sVersion: "v1.11.3",
|
||||||
expectedMandatoryErrs: 1, // can't downgrade two minor versions
|
expectedMandatoryErrs: 1, // can't downgrade two minor versions
|
||||||
expectedSkippableErrs: 1, // can't upgrade old k8s with newer kubeadm
|
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",
|
name: "kubeadm version must be higher than the new kube version. However, patch version skews may be forced",
|
||||||
vg: &fakeVersionGetter{
|
vg: &fakeVersionGetter{
|
||||||
clusterVersion: "v1.10.3",
|
clusterVersion: "v1.11.3",
|
||||||
kubeletVersion: "v1.10.3",
|
kubeletVersion: "v1.11.3",
|
||||||
kubeadmVersion: "v1.10.3",
|
kubeadmVersion: "v1.11.3",
|
||||||
},
|
},
|
||||||
newK8sVersion: "v1.10.5",
|
newK8sVersion: "v1.11.5",
|
||||||
expectedSkippableErrs: 1,
|
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",
|
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{
|
vg: &fakeVersionGetter{
|
||||||
clusterVersion: "v1.10.3",
|
clusterVersion: "v1.11.3",
|
||||||
kubeletVersion: "v1.10.3",
|
kubeletVersion: "v1.11.3",
|
||||||
kubeadmVersion: "v1.10.3",
|
kubeadmVersion: "v1.11.3",
|
||||||
},
|
},
|
||||||
newK8sVersion: "v1.11.0",
|
newK8sVersion: "v1.12.0",
|
||||||
expectedMandatoryErrs: 1,
|
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 one minor version. This may be forced through though.",
|
||||||
vg: &fakeVersionGetter{
|
vg: &fakeVersionGetter{
|
||||||
clusterVersion: "v1.10.3",
|
clusterVersion: "v1.11.3",
|
||||||
kubeletVersion: "v1.9.8",
|
kubeletVersion: "v1.10.8",
|
||||||
kubeadmVersion: "v1.11.0",
|
kubeadmVersion: "v1.12.0",
|
||||||
},
|
},
|
||||||
newK8sVersion: "v1.11.0",
|
newK8sVersion: "v1.12.0",
|
||||||
expectedSkippableErrs: 1,
|
expectedSkippableErrs: 1,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "experimental upgrades supported if the flag is set",
|
name: "experimental upgrades supported if the flag is set",
|
||||||
vg: &fakeVersionGetter{
|
vg: &fakeVersionGetter{
|
||||||
clusterVersion: "v1.10.3",
|
clusterVersion: "v1.11.3",
|
||||||
kubeletVersion: "v1.10.3",
|
kubeletVersion: "v1.11.3",
|
||||||
kubeadmVersion: "v1.11.0-beta.1",
|
kubeadmVersion: "v1.12.0-beta.1",
|
||||||
},
|
},
|
||||||
newK8sVersion: "v1.11.0-beta.1",
|
newK8sVersion: "v1.12.0-beta.1",
|
||||||
allowExperimental: true,
|
allowExperimental: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "release candidate upgrades supported if the flag is set",
|
name: "release candidate upgrades supported if the flag is set",
|
||||||
vg: &fakeVersionGetter{
|
vg: &fakeVersionGetter{
|
||||||
clusterVersion: "v1.10.3",
|
clusterVersion: "v1.11.3",
|
||||||
kubeletVersion: "v1.10.3",
|
kubeletVersion: "v1.11.3",
|
||||||
kubeadmVersion: "v1.11.0-rc.1",
|
kubeadmVersion: "v1.12.0-rc.1",
|
||||||
},
|
},
|
||||||
newK8sVersion: "v1.11.0-rc.1",
|
newK8sVersion: "v1.12.0-rc.1",
|
||||||
allowRCs: true,
|
allowRCs: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "release candidate upgrades supported if the flag is set",
|
name: "release candidate upgrades supported if the flag is set",
|
||||||
vg: &fakeVersionGetter{
|
vg: &fakeVersionGetter{
|
||||||
clusterVersion: "v1.10.3",
|
clusterVersion: "v1.11.3",
|
||||||
kubeletVersion: "v1.10.3",
|
kubeletVersion: "v1.11.3",
|
||||||
kubeadmVersion: "v1.11.0-rc.1",
|
kubeadmVersion: "v1.12.0-rc.1",
|
||||||
},
|
},
|
||||||
newK8sVersion: "v1.11.0-rc.1",
|
newK8sVersion: "v1.12.0-rc.1",
|
||||||
allowExperimental: true,
|
allowExperimental: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "the user should not be able to upgrade to an experimental version if they haven't opted into that",
|
name: "the user should not be able to upgrade to an experimental version if they haven't opted into that",
|
||||||
vg: &fakeVersionGetter{
|
vg: &fakeVersionGetter{
|
||||||
clusterVersion: "v1.10.3",
|
clusterVersion: "v1.11.3",
|
||||||
kubeletVersion: "v1.10.3",
|
kubeletVersion: "v1.11.3",
|
||||||
kubeadmVersion: "v1.11.0-beta.1",
|
kubeadmVersion: "v1.12.0-beta.1",
|
||||||
},
|
},
|
||||||
newK8sVersion: "v1.11.0-beta.1",
|
newK8sVersion: "v1.12.0-beta.1",
|
||||||
allowRCs: true,
|
allowRCs: true,
|
||||||
expectedSkippableErrs: 1,
|
expectedSkippableErrs: 1,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "the user should not be able to upgrade to an release candidate version if they haven't opted into that",
|
name: "the user should not be able to upgrade to an release candidate version if they haven't opted into that",
|
||||||
vg: &fakeVersionGetter{
|
vg: &fakeVersionGetter{
|
||||||
clusterVersion: "v1.10.3",
|
clusterVersion: "v1.11.3",
|
||||||
kubeletVersion: "v1.10.3",
|
kubeletVersion: "v1.11.3",
|
||||||
kubeadmVersion: "v1.11.0-rc.1",
|
kubeadmVersion: "v1.12.0-rc.1",
|
||||||
},
|
},
|
||||||
newK8sVersion: "v1.11.0-rc.1",
|
newK8sVersion: "v1.12.0-rc.1",
|
||||||
expectedSkippableErrs: 1,
|
expectedSkippableErrs: 1,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "the user can't use a newer minor version of kubeadm to upgrade an older version of kubeadm",
|
name: "the user can't use a newer minor version of kubeadm to upgrade an older version of kubeadm",
|
||||||
vg: &fakeVersionGetter{
|
vg: &fakeVersionGetter{
|
||||||
clusterVersion: "v1.10.3",
|
clusterVersion: "v1.11.3",
|
||||||
kubeletVersion: "v1.10.3",
|
kubeletVersion: "v1.11.3",
|
||||||
kubeadmVersion: "v1.11.0",
|
kubeadmVersion: "v1.12.0",
|
||||||
},
|
},
|
||||||
newK8sVersion: "v1.10.6",
|
newK8sVersion: "v1.11.6",
|
||||||
expectedSkippableErrs: 1, // can't upgrade old k8s with newer kubeadm
|
expectedSkippableErrs: 1, // can't upgrade old k8s with newer kubeadm
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -451,7 +451,7 @@ func TestStaticPodControlPlane(t *testing.T) {
|
||||||
t.Fatalf("couldn't read temp file: %v", err)
|
t.Fatalf("couldn't read temp file: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
newcfg, err := getConfig("v1.10.0", tempCertsDir, tmpEtcdDataDir)
|
newcfg, err := getConfig("v1.11.0", tempCertsDir, tmpEtcdDataDir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("couldn't create config: %v", err)
|
t.Fatalf("couldn't create config: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,7 +72,7 @@ func TestUploadConfiguration(t *testing.T) {
|
||||||
AdvertiseAddress: "1.2.3.4",
|
AdvertiseAddress: "1.2.3.4",
|
||||||
},
|
},
|
||||||
ClusterConfiguration: kubeadmapiv1alpha3.ClusterConfiguration{
|
ClusterConfiguration: kubeadmapiv1alpha3.ClusterConfiguration{
|
||||||
KubernetesVersion: "v1.10.10",
|
KubernetesVersion: "v1.11.10",
|
||||||
},
|
},
|
||||||
BootstrapTokens: []kubeadmapiv1alpha3.BootstrapToken{
|
BootstrapTokens: []kubeadmapiv1alpha3.BootstrapToken{
|
||||||
{
|
{
|
||||||
|
|
|
@ -639,13 +639,13 @@ func TestKubeletVersionCheck(t *testing.T) {
|
||||||
expectErrors bool
|
expectErrors bool
|
||||||
expectWarnings bool
|
expectWarnings bool
|
||||||
}{
|
}{
|
||||||
{"v1.11.2", "", false, false}, // check minimally supported version when there is no information about control plane
|
{"v1.12.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.9.3", "v1.9.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.11.0", "v1.11.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.11.5", "v1.11.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", "v1.12.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.12.0-alpha.1", "v1.11.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.
|
{"v1.12.0", "v1.11.5", true, false}, // kubelet is newer (release) than control plane, should fail.
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tc := range cases {
|
for _, tc := range cases {
|
||||||
|
|
|
@ -171,7 +171,7 @@ Etcd:
|
||||||
ServerCertSANs: null
|
ServerCertSANs: null
|
||||||
FeatureGates: null
|
FeatureGates: null
|
||||||
ImageRepository: k8s.gcr.io
|
ImageRepository: k8s.gcr.io
|
||||||
KubernetesVersion: v1.10.2
|
KubernetesVersion: v1.11.2
|
||||||
Networking:
|
Networking:
|
||||||
DNSDomain: cluster.local
|
DNSDomain: cluster.local
|
||||||
PodSubnet: ""
|
PodSubnet: ""
|
||||||
|
|
|
@ -136,7 +136,7 @@ kubeletConfiguration:
|
||||||
streamingConnectionIdleTimeout: 4h0m0s
|
streamingConnectionIdleTimeout: 4h0m0s
|
||||||
syncFrequency: 1m0s
|
syncFrequency: 1m0s
|
||||||
volumeStatsAggPeriod: 1m0s
|
volumeStatsAggPeriod: 1m0s
|
||||||
kubernetesVersion: v1.10.2
|
kubernetesVersion: v1.11.2
|
||||||
networking:
|
networking:
|
||||||
dnsDomain: cluster.local
|
dnsDomain: cluster.local
|
||||||
podSubnet: ""
|
podSubnet: ""
|
||||||
|
|
|
@ -34,7 +34,7 @@ etcd:
|
||||||
image: ""
|
image: ""
|
||||||
imageRepository: k8s.gcr.io
|
imageRepository: k8s.gcr.io
|
||||||
kind: ClusterConfiguration
|
kind: ClusterConfiguration
|
||||||
kubernetesVersion: v1.10.2
|
kubernetesVersion: v1.11.2
|
||||||
networking:
|
networking:
|
||||||
dnsDomain: cluster.local
|
dnsDomain: cluster.local
|
||||||
podSubnet: ""
|
podSubnet: ""
|
||||||
|
|
|
@ -32,7 +32,7 @@ etcd:
|
||||||
image: ""
|
image: ""
|
||||||
imageRepository: my-company.com
|
imageRepository: my-company.com
|
||||||
kind: ClusterConfiguration
|
kind: ClusterConfiguration
|
||||||
kubernetesVersion: v1.10.2
|
kubernetesVersion: v1.11.2
|
||||||
networking:
|
networking:
|
||||||
dnsDomain: cluster.global
|
dnsDomain: cluster.global
|
||||||
podSubnet: 10.148.0.0/16
|
podSubnet: 10.148.0.0/16
|
||||||
|
|
|
@ -8,7 +8,7 @@ bootstrapTokens:
|
||||||
certificatesDir: /var/lib/kubernetes/pki
|
certificatesDir: /var/lib/kubernetes/pki
|
||||||
clusterName: kubernetes
|
clusterName: kubernetes
|
||||||
imageRepository: my-company.com
|
imageRepository: my-company.com
|
||||||
kubernetesVersion: v1.10.2
|
kubernetesVersion: v1.11.2
|
||||||
networking:
|
networking:
|
||||||
dnsDomain: cluster.global
|
dnsDomain: cluster.global
|
||||||
serviceSubnet: 10.196.0.0/12
|
serviceSubnet: 10.196.0.0/12
|
||||||
|
|
|
@ -7,7 +7,7 @@ bootstrapTokens:
|
||||||
certificatesDir: relativepath
|
certificatesDir: relativepath
|
||||||
clusterName: kubernetes
|
clusterName: kubernetes
|
||||||
imageRepository: my-company.com
|
imageRepository: my-company.com
|
||||||
kubernetesVersion: v1.10.2
|
kubernetesVersion: v1.11.2
|
||||||
networking:
|
networking:
|
||||||
dnsDomain: cluster.GLOBAL
|
dnsDomain: cluster.GLOBAL
|
||||||
serviceSubnet: 10.196.1000.0/100
|
serviceSubnet: 10.196.1000.0/100
|
||||||
|
|
|
@ -66,7 +66,7 @@ func SetupInitConfigurationFile(t *testing.T, tmpdir string, cfg *kubeadmapi.Ini
|
||||||
apiVersion: kubeadm.k8s.io/v1alpha3
|
apiVersion: kubeadm.k8s.io/v1alpha3
|
||||||
kind: ClusterConfiguration
|
kind: ClusterConfiguration
|
||||||
certificatesDir: {{.CertificatesDir}}
|
certificatesDir: {{.CertificatesDir}}
|
||||||
kubernetesVersion: v1.10.0
|
kubernetesVersion: v1.11.0
|
||||||
`)))
|
`)))
|
||||||
|
|
||||||
f, err := os.Create(cfgPath)
|
f, err := os.Create(cfgPath)
|
||||||
|
|
Loading…
Reference in New Issue