mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-11 13:02:14 +00:00
Merge pull request #57271 from xiangpengzhao/kubeadm-dns-update
Automatic merge from submit-queue (batch tested with PRs 56068, 57271). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Update DNS version in kubeadm of 1.10 cycle. **What this PR does / why we need it**: Since kubeadm in 1.10 will not support 1.8 kubernetes, update DNS version accordingly. **Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*: Fixes # **Special notes for your reviewer**: /cc @kubernetes/sig-cluster-lifecycle-pr-reviews **Release note**: ```release-note none ```
This commit is contained in:
commit
0611813bd4
@ -236,6 +236,7 @@ var (
|
|||||||
8: "3.0.17",
|
8: "3.0.17",
|
||||||
9: "3.1.10",
|
9: "3.1.10",
|
||||||
10: "3.1.10",
|
10: "3.1.10",
|
||||||
|
11: "3.1.10",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ func kubeDNSAddon(cfg *kubeadmapi.MasterConfiguration, client clientset.Interfac
|
|||||||
// Get the YAML manifest conditionally based on the k8s version
|
// Get the YAML manifest conditionally based on the k8s version
|
||||||
kubeDNSDeploymentBytes := GetKubeDNSManifest(k8sVersion)
|
kubeDNSDeploymentBytes := GetKubeDNSManifest(k8sVersion)
|
||||||
dnsDeploymentBytes, err := kubeadmutil.ParseTemplate(kubeDNSDeploymentBytes,
|
dnsDeploymentBytes, err := kubeadmutil.ParseTemplate(kubeDNSDeploymentBytes,
|
||||||
struct{ ImageRepository, Arch, Version, DNSBindAddr, DNSProbeAddr, DNSDomain, DNSProbeType, MasterTaintKey string }{
|
struct{ ImageRepository, Arch, Version, DNSBindAddr, DNSProbeAddr, DNSDomain, MasterTaintKey string }{
|
||||||
ImageRepository: cfg.ImageRepository,
|
ImageRepository: cfg.ImageRepository,
|
||||||
Arch: runtime.GOARCH,
|
Arch: runtime.GOARCH,
|
||||||
// Get the kube-dns version conditionally based on the k8s version
|
// Get the kube-dns version conditionally based on the k8s version
|
||||||
@ -83,7 +83,6 @@ func kubeDNSAddon(cfg *kubeadmapi.MasterConfiguration, client clientset.Interfac
|
|||||||
DNSBindAddr: dnsBindAddr,
|
DNSBindAddr: dnsBindAddr,
|
||||||
DNSProbeAddr: dnsProbeAddr,
|
DNSProbeAddr: dnsProbeAddr,
|
||||||
DNSDomain: cfg.Networking.DNSDomain,
|
DNSDomain: cfg.Networking.DNSDomain,
|
||||||
DNSProbeType: GetKubeDNSProbeType(k8sVersion),
|
|
||||||
MasterTaintKey: kubeadmconstants.LabelNodeRoleMaster,
|
MasterTaintKey: kubeadmconstants.LabelNodeRoleMaster,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -92,14 +92,13 @@ func TestCompileManifests(t *testing.T) {
|
|||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
manifest: v180AndAboveKubeDNSDeployment,
|
manifest: v180AndAboveKubeDNSDeployment,
|
||||||
data: struct{ ImageRepository, Arch, Version, DNSBindAddr, DNSProbeAddr, DNSDomain, DNSProbeType, MasterTaintKey string }{
|
data: struct{ ImageRepository, Arch, Version, DNSBindAddr, DNSProbeAddr, DNSDomain, MasterTaintKey string }{
|
||||||
ImageRepository: "foo",
|
ImageRepository: "foo",
|
||||||
Arch: "foo",
|
Arch: "foo",
|
||||||
Version: "foo",
|
Version: "foo",
|
||||||
DNSBindAddr: "foo",
|
DNSBindAddr: "foo",
|
||||||
DNSProbeAddr: "foo",
|
DNSProbeAddr: "foo",
|
||||||
DNSDomain: "foo",
|
DNSDomain: "foo",
|
||||||
DNSProbeType: "foo",
|
|
||||||
MasterTaintKey: "foo",
|
MasterTaintKey: "foo",
|
||||||
},
|
},
|
||||||
expected: true,
|
expected: true,
|
||||||
|
@ -156,8 +156,8 @@ spec:
|
|||||||
args:
|
args:
|
||||||
- --v=2
|
- --v=2
|
||||||
- --logtostderr
|
- --logtostderr
|
||||||
- --probe=kubedns,{{ .DNSProbeAddr }}:10053,kubernetes.default.svc.{{ .DNSDomain }},5,{{ .DNSProbeType }}
|
- --probe=kubedns,{{ .DNSProbeAddr }}:10053,kubernetes.default.svc.{{ .DNSDomain }},5,SRV
|
||||||
- --probe=dnsmasq,{{ .DNSProbeAddr }}:53,kubernetes.default.svc.{{ .DNSDomain }},5,{{ .DNSProbeType }}
|
- --probe=dnsmasq,{{ .DNSProbeAddr }}:53,kubernetes.default.svc.{{ .DNSDomain }},5,SRV
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 10054
|
- containerPort: 10054
|
||||||
name: metrics
|
name: metrics
|
||||||
|
@ -22,48 +22,26 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
kubeDNSv180AndAboveVersion = "1.14.5"
|
|
||||||
kubeDNSv190AndAboveVersion = "1.14.7"
|
kubeDNSv190AndAboveVersion = "1.14.7"
|
||||||
|
|
||||||
kubeDNSProbeSRV = "SRV"
|
|
||||||
kubeDNSProbeA = "A"
|
|
||||||
coreDNSVersion = "1.0.1"
|
coreDNSVersion = "1.0.1"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GetDNSVersion returns the right kube-dns version for a specific k8s version
|
// GetDNSVersion returns the right kube-dns version for a specific k8s version
|
||||||
func GetDNSVersion(kubeVersion *version.Version, dns string) string {
|
func GetDNSVersion(kubeVersion *version.Version, dns string) string {
|
||||||
// v1.8.0+ uses kube-dns 1.14.5
|
|
||||||
// v1.9.0+ uses kube-dns 1.14.7
|
// v1.9.0+ uses kube-dns 1.14.7
|
||||||
// v1.9.0+ uses CoreDNS 1.0.1
|
// v1.9.0+ uses CoreDNS 1.0.1 if feature gate "CoreDNS" is enabled.
|
||||||
|
|
||||||
// In the future when the version is bumped at HEAD; add conditional logic to return the right versions
|
// In the future when the version is bumped at HEAD; add conditional logic to return the right versions
|
||||||
// Also, the version might be bumped for different k8s releases on the same branch
|
// Also, the version might be bumped for different k8s releases on the same branch
|
||||||
switch dns {
|
switch dns {
|
||||||
case kubeadmconstants.KubeDNS:
|
|
||||||
// return the kube-dns version
|
|
||||||
if kubeVersion.Major() == 1 && kubeVersion.Minor() >= 9 {
|
|
||||||
return kubeDNSv190AndAboveVersion
|
|
||||||
}
|
|
||||||
return kubeDNSv180AndAboveVersion
|
|
||||||
case kubeadmconstants.CoreDNS:
|
case kubeadmconstants.CoreDNS:
|
||||||
// return the CoreDNS version
|
// return the CoreDNS version
|
||||||
return coreDNSVersion
|
return coreDNSVersion
|
||||||
default:
|
default:
|
||||||
return kubeDNSv180AndAboveVersion
|
return kubeDNSv190AndAboveVersion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetKubeDNSProbeType returns the right kube-dns probe for a specific k8s version
|
|
||||||
func GetKubeDNSProbeType(kubeVersion *version.Version) string {
|
|
||||||
// v1.8.0+ uses type A, just return that here
|
|
||||||
// In the future when the kube-dns version is bumped at HEAD; add conditional logic to return the right versions
|
|
||||||
// Also, the version might be bumped for different k8s releases on the same branch
|
|
||||||
if kubeVersion.Major() == 1 && kubeVersion.Minor() >= 9 {
|
|
||||||
return kubeDNSProbeSRV
|
|
||||||
}
|
|
||||||
return kubeDNSProbeA
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetKubeDNSManifest returns the right kube-dns YAML manifest for a specific k8s version
|
// GetKubeDNSManifest returns the right kube-dns YAML manifest for a specific k8s version
|
||||||
func GetKubeDNSManifest(kubeVersion *version.Version) string {
|
func GetKubeDNSManifest(kubeVersion *version.Version) string {
|
||||||
// v1.8.0+ has only one known YAML manifest spec, just return that here
|
// v1.8.0+ has only one known YAML manifest spec, just return that here
|
||||||
|
@ -25,45 +25,38 @@ import (
|
|||||||
|
|
||||||
func TestGetKubeDNSVersion(t *testing.T) {
|
func TestGetKubeDNSVersion(t *testing.T) {
|
||||||
var tests = []struct {
|
var tests = []struct {
|
||||||
k8sVersion, expected string
|
k8sVersion string
|
||||||
|
dns string
|
||||||
|
expected string
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
k8sVersion: "v1.7.0",
|
k8sVersion: "v1.9.0",
|
||||||
expected: "1.14.5",
|
dns: kubeadmconstants.KubeDNS,
|
||||||
|
expected: kubeDNSv190AndAboveVersion,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
k8sVersion: "v1.7.1",
|
k8sVersion: "v1.10.0",
|
||||||
expected: "1.14.5",
|
dns: kubeadmconstants.KubeDNS,
|
||||||
},
|
expected: kubeDNSv190AndAboveVersion,
|
||||||
{
|
|
||||||
k8sVersion: "v1.7.2",
|
|
||||||
expected: "1.14.5",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
k8sVersion: "v1.7.3",
|
|
||||||
expected: "1.14.5",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
k8sVersion: "v1.8.0-alpha.2",
|
|
||||||
expected: "1.14.5",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
k8sVersion: "v1.8.0",
|
|
||||||
expected: "1.14.5",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
k8sVersion: "v1.9.0",
|
k8sVersion: "v1.9.0",
|
||||||
expected: "1.14.7",
|
dns: kubeadmconstants.CoreDNS,
|
||||||
|
expected: coreDNSVersion,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
k8sVersion: "v1.10.0",
|
||||||
|
dns: kubeadmconstants.CoreDNS,
|
||||||
|
expected: coreDNSVersion,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, rt := range tests {
|
for _, rt := range tests {
|
||||||
|
|
||||||
k8sVersion, err := version.ParseSemantic(rt.k8sVersion)
|
k8sVersion, err := version.ParseSemantic(rt.k8sVersion)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("couldn't parse kubernetes version %q: %v", rt.k8sVersion, err)
|
t.Fatalf("couldn't parse kubernetes version %q: %v", rt.k8sVersion, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
actualDNSVersion := GetDNSVersion(k8sVersion, kubeadmconstants.KubeDNS)
|
actualDNSVersion := GetDNSVersion(k8sVersion, rt.dns)
|
||||||
if actualDNSVersion != rt.expected {
|
if actualDNSVersion != rt.expected {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"failed GetDNSVersion:\n\texpected: %s\n\t actual: %s",
|
"failed GetDNSVersion:\n\texpected: %s\n\t actual: %s",
|
||||||
@ -73,54 +66,3 @@ func TestGetKubeDNSVersion(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetKubeDNSProbeType(t *testing.T) {
|
|
||||||
var tests = []struct {
|
|
||||||
k8sVersion, expected string
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
k8sVersion: "v1.7.0",
|
|
||||||
expected: "A",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
k8sVersion: "v1.7.1",
|
|
||||||
expected: "A",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
k8sVersion: "v1.7.2",
|
|
||||||
expected: "A",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
k8sVersion: "v1.7.3",
|
|
||||||
expected: "A",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
k8sVersion: "v1.8.0-alpha.2",
|
|
||||||
expected: "A",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
k8sVersion: "v1.8.0",
|
|
||||||
expected: "A",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
k8sVersion: "v1.9.0",
|
|
||||||
expected: "SRV",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for _, rt := range tests {
|
|
||||||
|
|
||||||
k8sVersion, err := version.ParseSemantic(rt.k8sVersion)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("couldn't parse kubernetes version %q: %v", rt.k8sVersion, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
actualDNSProbeType := GetKubeDNSProbeType(k8sVersion)
|
|
||||||
if actualDNSProbeType != rt.expected {
|
|
||||||
t.Errorf(
|
|
||||||
"failed GetKubeDNSProbeType:\n\texpected: %s\n\t actual: %s",
|
|
||||||
rt.expected,
|
|
||||||
actualDNSProbeType,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -47,7 +47,7 @@ func (f *fakeVersionGetter) VersionFromCILabel(ciVersionLabel, _ string) (string
|
|||||||
if ciVersionLabel == "latest" {
|
if ciVersionLabel == "latest" {
|
||||||
return f.latestVersion, versionutil.MustParseSemantic(f.latestVersion), nil
|
return f.latestVersion, versionutil.MustParseSemantic(f.latestVersion), nil
|
||||||
}
|
}
|
||||||
if ciVersionLabel == "latest-1.9" {
|
if ciVersionLabel == "latest-1.10" {
|
||||||
return f.latestDevBranchVersion, versionutil.MustParseSemantic(f.latestDevBranchVersion), nil
|
return f.latestDevBranchVersion, versionutil.MustParseSemantic(f.latestDevBranchVersion), nil
|
||||||
}
|
}
|
||||||
return f.stablePatchVersion, versionutil.MustParseSemantic(f.stablePatchVersion), nil
|
return f.stablePatchVersion, versionutil.MustParseSemantic(f.stablePatchVersion), nil
|
||||||
@ -64,7 +64,7 @@ type fakeEtcdCluster struct{}
|
|||||||
|
|
||||||
func (f fakeEtcdCluster) GetEtcdClusterStatus() (*clientv3.StatusResponse, error) {
|
func (f fakeEtcdCluster) GetEtcdClusterStatus() (*clientv3.StatusResponse, error) {
|
||||||
client := &clientv3.StatusResponse{}
|
client := &clientv3.StatusResponse{}
|
||||||
client.Version = "3.0.14"
|
client.Version = "3.1.10"
|
||||||
return client, nil
|
return client, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -78,12 +78,12 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
|||||||
}{
|
}{
|
||||||
{ // no action needed, already up-to-date
|
{ // no action needed, already up-to-date
|
||||||
vg: &fakeVersionGetter{
|
vg: &fakeVersionGetter{
|
||||||
clusterVersion: "v1.8.3",
|
clusterVersion: "v1.9.3",
|
||||||
kubeletVersion: "v1.8.3",
|
kubeletVersion: "v1.9.3",
|
||||||
kubeadmVersion: "v1.8.3",
|
kubeadmVersion: "v1.9.3",
|
||||||
|
|
||||||
stablePatchVersion: "v1.8.3",
|
stablePatchVersion: "v1.9.3",
|
||||||
stableVersion: "v1.8.3",
|
stableVersion: "v1.9.3",
|
||||||
},
|
},
|
||||||
expectedUpgrades: []Upgrade{},
|
expectedUpgrades: []Upgrade{},
|
||||||
allowExperimental: false,
|
allowExperimental: false,
|
||||||
@ -91,30 +91,30 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{ // simple patch version upgrade
|
{ // simple patch version upgrade
|
||||||
vg: &fakeVersionGetter{
|
vg: &fakeVersionGetter{
|
||||||
clusterVersion: "v1.8.1",
|
clusterVersion: "v1.9.1",
|
||||||
kubeletVersion: "v1.8.1", // the kubelet are on the same version as the control plane
|
kubeletVersion: "v1.9.1", // the kubelet are on the same version as the control plane
|
||||||
kubeadmVersion: "v1.8.2",
|
kubeadmVersion: "v1.9.2",
|
||||||
|
|
||||||
stablePatchVersion: "v1.8.3",
|
stablePatchVersion: "v1.9.3",
|
||||||
stableVersion: "v1.8.3",
|
stableVersion: "v1.9.3",
|
||||||
},
|
},
|
||||||
expectedUpgrades: []Upgrade{
|
expectedUpgrades: []Upgrade{
|
||||||
{
|
{
|
||||||
Description: "version in the v1.8 series",
|
Description: "version in the v1.9 series",
|
||||||
Before: ClusterState{
|
Before: ClusterState{
|
||||||
KubeVersion: "v1.8.1",
|
KubeVersion: "v1.9.1",
|
||||||
KubeletVersions: map[string]uint16{
|
KubeletVersions: map[string]uint16{
|
||||||
"v1.8.1": 1,
|
"v1.9.1": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.8.2",
|
KubeadmVersion: "v1.9.2",
|
||||||
DNSVersion: "1.14.5",
|
DNSVersion: "1.14.7",
|
||||||
EtcdVersion: "3.0.14",
|
EtcdVersion: "3.1.10",
|
||||||
},
|
},
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: "v1.8.3",
|
KubeVersion: "v1.9.3",
|
||||||
KubeadmVersion: "v1.8.3",
|
KubeadmVersion: "v1.9.3",
|
||||||
DNSVersion: "1.14.5",
|
DNSVersion: "1.14.7",
|
||||||
EtcdVersion: "3.0.17",
|
EtcdVersion: "3.1.10",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -123,28 +123,28 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{ // minor version upgrade only
|
{ // minor version upgrade only
|
||||||
vg: &fakeVersionGetter{
|
vg: &fakeVersionGetter{
|
||||||
clusterVersion: "v1.8.1",
|
clusterVersion: "v1.9.1",
|
||||||
kubeletVersion: "v1.8.1", // the kubelet are on the same version as the control plane
|
kubeletVersion: "v1.9.1", // the kubelet are on the same version as the control plane
|
||||||
kubeadmVersion: "v1.9.0",
|
kubeadmVersion: "v1.10.0",
|
||||||
|
|
||||||
stablePatchVersion: "v1.8.1",
|
stablePatchVersion: "v1.9.1",
|
||||||
stableVersion: "v1.9.0",
|
stableVersion: "v1.10.0",
|
||||||
},
|
},
|
||||||
expectedUpgrades: []Upgrade{
|
expectedUpgrades: []Upgrade{
|
||||||
{
|
{
|
||||||
Description: "stable version",
|
Description: "stable version",
|
||||||
Before: ClusterState{
|
Before: ClusterState{
|
||||||
KubeVersion: "v1.8.1",
|
KubeVersion: "v1.9.1",
|
||||||
KubeletVersions: map[string]uint16{
|
KubeletVersions: map[string]uint16{
|
||||||
"v1.8.1": 1,
|
"v1.9.1": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.9.0",
|
KubeadmVersion: "v1.10.0",
|
||||||
DNSVersion: "1.14.5",
|
DNSVersion: "1.14.7",
|
||||||
EtcdVersion: "3.0.14",
|
EtcdVersion: "3.1.10",
|
||||||
},
|
},
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: "v1.9.0",
|
KubeVersion: "v1.10.0",
|
||||||
KubeadmVersion: "v1.9.0",
|
KubeadmVersion: "v1.10.0",
|
||||||
DNSVersion: "1.14.7",
|
DNSVersion: "1.14.7",
|
||||||
EtcdVersion: "3.1.10",
|
EtcdVersion: "3.1.10",
|
||||||
},
|
},
|
||||||
@ -155,46 +155,46 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{ // both minor version upgrade and patch version upgrade available
|
{ // both minor version upgrade and patch version upgrade available
|
||||||
vg: &fakeVersionGetter{
|
vg: &fakeVersionGetter{
|
||||||
clusterVersion: "v1.8.3",
|
clusterVersion: "v1.9.3",
|
||||||
kubeletVersion: "v1.8.3", // the kubelet are on the same version as the control plane
|
kubeletVersion: "v1.9.3", // the kubelet are on the same version as the control plane
|
||||||
kubeadmVersion: "v1.8.5",
|
kubeadmVersion: "v1.9.5",
|
||||||
|
|
||||||
stablePatchVersion: "v1.8.5",
|
stablePatchVersion: "v1.9.5",
|
||||||
stableVersion: "v1.9.1",
|
stableVersion: "v1.10.1",
|
||||||
},
|
},
|
||||||
expectedUpgrades: []Upgrade{
|
expectedUpgrades: []Upgrade{
|
||||||
{
|
{
|
||||||
Description: "version in the v1.8 series",
|
Description: "version in the v1.9 series",
|
||||||
Before: ClusterState{
|
Before: ClusterState{
|
||||||
KubeVersion: "v1.8.3",
|
KubeVersion: "v1.9.3",
|
||||||
KubeletVersions: map[string]uint16{
|
KubeletVersions: map[string]uint16{
|
||||||
"v1.8.3": 1,
|
"v1.9.3": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.8.5",
|
KubeadmVersion: "v1.9.5",
|
||||||
DNSVersion: "1.14.5",
|
DNSVersion: "1.14.7",
|
||||||
EtcdVersion: "3.0.14",
|
EtcdVersion: "3.1.10",
|
||||||
},
|
},
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: "v1.8.5",
|
KubeVersion: "v1.9.5",
|
||||||
KubeadmVersion: "v1.8.5", // Note: The kubeadm version mustn't be "downgraded" here
|
KubeadmVersion: "v1.9.5", // Note: The kubeadm version mustn't be "downgraded" here
|
||||||
DNSVersion: "1.14.5",
|
DNSVersion: "1.14.7",
|
||||||
EtcdVersion: "3.0.17",
|
EtcdVersion: "3.1.10",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Description: "stable version",
|
Description: "stable version",
|
||||||
Before: ClusterState{
|
Before: ClusterState{
|
||||||
KubeVersion: "v1.8.3",
|
KubeVersion: "v1.9.3",
|
||||||
KubeletVersions: map[string]uint16{
|
KubeletVersions: map[string]uint16{
|
||||||
"v1.8.3": 1,
|
"v1.9.3": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.8.5",
|
KubeadmVersion: "v1.9.5",
|
||||||
DNSVersion: "1.14.5",
|
DNSVersion: "1.14.7",
|
||||||
EtcdVersion: "3.0.14",
|
EtcdVersion: "3.1.10",
|
||||||
},
|
},
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: "v1.9.1",
|
KubeVersion: "v1.10.1",
|
||||||
KubeadmVersion: "v1.9.1",
|
KubeadmVersion: "v1.10.1",
|
||||||
DNSVersion: "1.14.7",
|
DNSVersion: "1.14.7",
|
||||||
EtcdVersion: "3.1.10",
|
EtcdVersion: "3.1.10",
|
||||||
},
|
},
|
||||||
@ -205,13 +205,13 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{ // allow experimental upgrades, but no upgrade available
|
{ // allow experimental upgrades, but no upgrade available
|
||||||
vg: &fakeVersionGetter{
|
vg: &fakeVersionGetter{
|
||||||
clusterVersion: "v1.9.0-alpha.2",
|
clusterVersion: "v1.10.0-alpha.2",
|
||||||
kubeletVersion: "v1.8.5",
|
kubeletVersion: "v1.9.5",
|
||||||
kubeadmVersion: "v1.8.5",
|
kubeadmVersion: "v1.9.5",
|
||||||
|
|
||||||
stablePatchVersion: "v1.8.5",
|
stablePatchVersion: "v1.9.5",
|
||||||
stableVersion: "v1.8.5",
|
stableVersion: "v1.9.5",
|
||||||
latestVersion: "v1.9.0-alpha.2",
|
latestVersion: "v1.10.0-alpha.2",
|
||||||
},
|
},
|
||||||
expectedUpgrades: []Upgrade{},
|
expectedUpgrades: []Upgrade{},
|
||||||
allowExperimental: true,
|
allowExperimental: true,
|
||||||
@ -219,29 +219,29 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{ // upgrade to an unstable version should be supported
|
{ // upgrade to an unstable version should be supported
|
||||||
vg: &fakeVersionGetter{
|
vg: &fakeVersionGetter{
|
||||||
clusterVersion: "v1.8.5",
|
clusterVersion: "v1.9.5",
|
||||||
kubeletVersion: "v1.8.5",
|
kubeletVersion: "v1.9.5",
|
||||||
kubeadmVersion: "v1.8.5",
|
kubeadmVersion: "v1.9.5",
|
||||||
|
|
||||||
stablePatchVersion: "v1.8.5",
|
stablePatchVersion: "v1.9.5",
|
||||||
stableVersion: "v1.8.5",
|
stableVersion: "v1.9.5",
|
||||||
latestVersion: "v1.9.0-alpha.2",
|
latestVersion: "v1.10.0-alpha.2",
|
||||||
},
|
},
|
||||||
expectedUpgrades: []Upgrade{
|
expectedUpgrades: []Upgrade{
|
||||||
{
|
{
|
||||||
Description: "experimental version",
|
Description: "experimental version",
|
||||||
Before: ClusterState{
|
Before: ClusterState{
|
||||||
KubeVersion: "v1.8.5",
|
KubeVersion: "v1.9.5",
|
||||||
KubeletVersions: map[string]uint16{
|
KubeletVersions: map[string]uint16{
|
||||||
"v1.8.5": 1,
|
"v1.9.5": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.8.5",
|
KubeadmVersion: "v1.9.5",
|
||||||
DNSVersion: "1.14.5",
|
DNSVersion: "1.14.7",
|
||||||
EtcdVersion: "3.0.14",
|
EtcdVersion: "3.1.10",
|
||||||
},
|
},
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: "v1.9.0-alpha.2",
|
KubeVersion: "v1.10.0-alpha.2",
|
||||||
KubeadmVersion: "v1.9.0-alpha.2",
|
KubeadmVersion: "v1.10.0-alpha.2",
|
||||||
DNSVersion: "1.14.7",
|
DNSVersion: "1.14.7",
|
||||||
EtcdVersion: "3.1.10",
|
EtcdVersion: "3.1.10",
|
||||||
},
|
},
|
||||||
@ -252,29 +252,29 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{ // upgrade from an unstable version to an unstable version should be supported
|
{ // upgrade from an unstable version to an unstable version should be supported
|
||||||
vg: &fakeVersionGetter{
|
vg: &fakeVersionGetter{
|
||||||
clusterVersion: "v1.9.0-alpha.1",
|
clusterVersion: "v1.10.0-alpha.1",
|
||||||
kubeletVersion: "v1.8.5",
|
kubeletVersion: "v1.9.5",
|
||||||
kubeadmVersion: "v1.8.5",
|
kubeadmVersion: "v1.9.5",
|
||||||
|
|
||||||
stablePatchVersion: "v1.8.5",
|
stablePatchVersion: "v1.9.5",
|
||||||
stableVersion: "v1.8.5",
|
stableVersion: "v1.9.5",
|
||||||
latestVersion: "v1.9.0-alpha.2",
|
latestVersion: "v1.10.0-alpha.2",
|
||||||
},
|
},
|
||||||
expectedUpgrades: []Upgrade{
|
expectedUpgrades: []Upgrade{
|
||||||
{
|
{
|
||||||
Description: "experimental version",
|
Description: "experimental version",
|
||||||
Before: ClusterState{
|
Before: ClusterState{
|
||||||
KubeVersion: "v1.9.0-alpha.1",
|
KubeVersion: "v1.10.0-alpha.1",
|
||||||
KubeletVersions: map[string]uint16{
|
KubeletVersions: map[string]uint16{
|
||||||
"v1.8.5": 1,
|
"v1.9.5": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.8.5",
|
KubeadmVersion: "v1.9.5",
|
||||||
DNSVersion: "1.14.7",
|
DNSVersion: "1.14.7",
|
||||||
EtcdVersion: "3.0.14",
|
EtcdVersion: "3.1.10",
|
||||||
},
|
},
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: "v1.9.0-alpha.2",
|
KubeVersion: "v1.10.0-alpha.2",
|
||||||
KubeadmVersion: "v1.9.0-alpha.2",
|
KubeadmVersion: "v1.10.0-alpha.2",
|
||||||
DNSVersion: "1.14.7",
|
DNSVersion: "1.14.7",
|
||||||
EtcdVersion: "3.1.10",
|
EtcdVersion: "3.1.10",
|
||||||
},
|
},
|
||||||
@ -285,30 +285,30 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{ // v1.X.0-alpha.0 should be ignored
|
{ // v1.X.0-alpha.0 should be ignored
|
||||||
vg: &fakeVersionGetter{
|
vg: &fakeVersionGetter{
|
||||||
clusterVersion: "v1.8.5",
|
clusterVersion: "v1.9.5",
|
||||||
kubeletVersion: "v1.8.5",
|
kubeletVersion: "v1.9.5",
|
||||||
kubeadmVersion: "v1.8.5",
|
kubeadmVersion: "v1.9.5",
|
||||||
|
|
||||||
stablePatchVersion: "v1.8.5",
|
stablePatchVersion: "v1.9.5",
|
||||||
stableVersion: "v1.8.5",
|
stableVersion: "v1.9.5",
|
||||||
latestDevBranchVersion: "v1.9.0-beta.1",
|
latestDevBranchVersion: "v1.10.0-beta.1",
|
||||||
latestVersion: "v1.10.0-alpha.0",
|
latestVersion: "v1.11.0-alpha.0",
|
||||||
},
|
},
|
||||||
expectedUpgrades: []Upgrade{
|
expectedUpgrades: []Upgrade{
|
||||||
{
|
{
|
||||||
Description: "experimental version",
|
Description: "experimental version",
|
||||||
Before: ClusterState{
|
Before: ClusterState{
|
||||||
KubeVersion: "v1.8.5",
|
KubeVersion: "v1.9.5",
|
||||||
KubeletVersions: map[string]uint16{
|
KubeletVersions: map[string]uint16{
|
||||||
"v1.8.5": 1,
|
"v1.9.5": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.8.5",
|
KubeadmVersion: "v1.9.5",
|
||||||
DNSVersion: "1.14.5",
|
DNSVersion: "1.14.7",
|
||||||
EtcdVersion: "3.0.14",
|
EtcdVersion: "3.1.10",
|
||||||
},
|
},
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: "v1.9.0-beta.1",
|
KubeVersion: "v1.10.0-beta.1",
|
||||||
KubeadmVersion: "v1.9.0-beta.1",
|
KubeadmVersion: "v1.10.0-beta.1",
|
||||||
DNSVersion: "1.14.7",
|
DNSVersion: "1.14.7",
|
||||||
EtcdVersion: "3.1.10",
|
EtcdVersion: "3.1.10",
|
||||||
},
|
},
|
||||||
@ -319,30 +319,30 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{ // upgrade to an RC version should be supported
|
{ // upgrade to an RC version should be supported
|
||||||
vg: &fakeVersionGetter{
|
vg: &fakeVersionGetter{
|
||||||
clusterVersion: "v1.8.5",
|
clusterVersion: "v1.9.5",
|
||||||
kubeletVersion: "v1.8.5",
|
kubeletVersion: "v1.9.5",
|
||||||
kubeadmVersion: "v1.8.5",
|
kubeadmVersion: "v1.9.5",
|
||||||
|
|
||||||
stablePatchVersion: "v1.8.5",
|
stablePatchVersion: "v1.9.5",
|
||||||
stableVersion: "v1.8.5",
|
stableVersion: "v1.9.5",
|
||||||
latestDevBranchVersion: "v1.9.0-rc.1",
|
latestDevBranchVersion: "v1.10.0-rc.1",
|
||||||
latestVersion: "v1.10.0-alpha.1",
|
latestVersion: "v1.11.0-alpha.1",
|
||||||
},
|
},
|
||||||
expectedUpgrades: []Upgrade{
|
expectedUpgrades: []Upgrade{
|
||||||
{
|
{
|
||||||
Description: "release candidate version",
|
Description: "release candidate version",
|
||||||
Before: ClusterState{
|
Before: ClusterState{
|
||||||
KubeVersion: "v1.8.5",
|
KubeVersion: "v1.9.5",
|
||||||
KubeletVersions: map[string]uint16{
|
KubeletVersions: map[string]uint16{
|
||||||
"v1.8.5": 1,
|
"v1.9.5": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.8.5",
|
KubeadmVersion: "v1.9.5",
|
||||||
DNSVersion: "1.14.5",
|
DNSVersion: "1.14.7",
|
||||||
EtcdVersion: "3.0.14",
|
EtcdVersion: "3.1.10",
|
||||||
},
|
},
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: "v1.9.0-rc.1",
|
KubeVersion: "v1.10.0-rc.1",
|
||||||
KubeadmVersion: "v1.9.0-rc.1",
|
KubeadmVersion: "v1.10.0-rc.1",
|
||||||
DNSVersion: "1.14.7",
|
DNSVersion: "1.14.7",
|
||||||
EtcdVersion: "3.1.10",
|
EtcdVersion: "3.1.10",
|
||||||
},
|
},
|
||||||
@ -353,30 +353,30 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{ // 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
|
{ // 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{
|
vg: &fakeVersionGetter{
|
||||||
clusterVersion: "v1.8.5",
|
clusterVersion: "v1.9.5",
|
||||||
kubeletVersion: "v1.8.5",
|
kubeletVersion: "v1.9.5",
|
||||||
kubeadmVersion: "v1.8.5",
|
kubeadmVersion: "v1.9.5",
|
||||||
|
|
||||||
stablePatchVersion: "v1.8.5",
|
stablePatchVersion: "v1.9.5",
|
||||||
stableVersion: "v1.8.5",
|
stableVersion: "v1.9.5",
|
||||||
latestDevBranchVersion: "v1.9.6-rc.1",
|
latestDevBranchVersion: "v1.10.6-rc.1",
|
||||||
latestVersion: "v1.10.1-alpha.0",
|
latestVersion: "v1.11.1-alpha.0",
|
||||||
},
|
},
|
||||||
expectedUpgrades: []Upgrade{
|
expectedUpgrades: []Upgrade{
|
||||||
{
|
{
|
||||||
Description: "experimental version", // Note that this is considered an experimental version in this uncommon scenario
|
Description: "experimental version", // Note that this is considered an experimental version in this uncommon scenario
|
||||||
Before: ClusterState{
|
Before: ClusterState{
|
||||||
KubeVersion: "v1.8.5",
|
KubeVersion: "v1.9.5",
|
||||||
KubeletVersions: map[string]uint16{
|
KubeletVersions: map[string]uint16{
|
||||||
"v1.8.5": 1,
|
"v1.9.5": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.8.5",
|
KubeadmVersion: "v1.9.5",
|
||||||
DNSVersion: "1.14.5",
|
DNSVersion: "1.14.7",
|
||||||
EtcdVersion: "3.0.14",
|
EtcdVersion: "3.1.10",
|
||||||
},
|
},
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: "v1.9.6-rc.1",
|
KubeVersion: "v1.10.6-rc.1",
|
||||||
KubeadmVersion: "v1.9.6-rc.1",
|
KubeadmVersion: "v1.10.6-rc.1",
|
||||||
DNSVersion: "1.14.7",
|
DNSVersion: "1.14.7",
|
||||||
EtcdVersion: "3.1.10",
|
EtcdVersion: "3.1.10",
|
||||||
},
|
},
|
||||||
@ -387,30 +387,30 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{ // upgrade to an RC version should be supported. There may also be an even newer unstable version.
|
{ // upgrade to an RC version should be supported. There may also be an even newer unstable version.
|
||||||
vg: &fakeVersionGetter{
|
vg: &fakeVersionGetter{
|
||||||
clusterVersion: "v1.8.5",
|
clusterVersion: "v1.9.5",
|
||||||
kubeletVersion: "v1.8.5",
|
kubeletVersion: "v1.9.5",
|
||||||
kubeadmVersion: "v1.8.5",
|
kubeadmVersion: "v1.9.5",
|
||||||
|
|
||||||
stablePatchVersion: "v1.8.5",
|
stablePatchVersion: "v1.9.5",
|
||||||
stableVersion: "v1.8.5",
|
stableVersion: "v1.9.5",
|
||||||
latestDevBranchVersion: "v1.9.0-rc.1",
|
latestDevBranchVersion: "v1.10.0-rc.1",
|
||||||
latestVersion: "v1.10.0-alpha.2",
|
latestVersion: "v1.11.0-alpha.2",
|
||||||
},
|
},
|
||||||
expectedUpgrades: []Upgrade{
|
expectedUpgrades: []Upgrade{
|
||||||
{
|
{
|
||||||
Description: "release candidate version",
|
Description: "release candidate version",
|
||||||
Before: ClusterState{
|
Before: ClusterState{
|
||||||
KubeVersion: "v1.8.5",
|
KubeVersion: "v1.9.5",
|
||||||
KubeletVersions: map[string]uint16{
|
KubeletVersions: map[string]uint16{
|
||||||
"v1.8.5": 1,
|
"v1.9.5": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.8.5",
|
KubeadmVersion: "v1.9.5",
|
||||||
DNSVersion: "1.14.5",
|
DNSVersion: "1.14.7",
|
||||||
EtcdVersion: "3.0.14",
|
EtcdVersion: "3.1.10",
|
||||||
},
|
},
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: "v1.9.0-rc.1",
|
KubeVersion: "v1.10.0-rc.1",
|
||||||
KubeadmVersion: "v1.9.0-rc.1",
|
KubeadmVersion: "v1.10.0-rc.1",
|
||||||
DNSVersion: "1.14.7",
|
DNSVersion: "1.14.7",
|
||||||
EtcdVersion: "3.1.10",
|
EtcdVersion: "3.1.10",
|
||||||
},
|
},
|
||||||
@ -418,17 +418,17 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Description: "experimental version",
|
Description: "experimental version",
|
||||||
Before: ClusterState{
|
Before: ClusterState{
|
||||||
KubeVersion: "v1.8.5",
|
KubeVersion: "v1.9.5",
|
||||||
KubeletVersions: map[string]uint16{
|
KubeletVersions: map[string]uint16{
|
||||||
"v1.8.5": 1,
|
"v1.9.5": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.8.5",
|
KubeadmVersion: "v1.9.5",
|
||||||
DNSVersion: "1.14.5",
|
DNSVersion: "1.14.7",
|
||||||
EtcdVersion: "3.0.14",
|
EtcdVersion: "3.1.10",
|
||||||
},
|
},
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: "v1.10.0-alpha.2",
|
KubeVersion: "v1.11.0-alpha.2",
|
||||||
KubeadmVersion: "v1.10.0-alpha.2",
|
KubeadmVersion: "v1.11.0-alpha.2",
|
||||||
DNSVersion: "1.14.7",
|
DNSVersion: "1.14.7",
|
||||||
EtcdVersion: "3.1.10",
|
EtcdVersion: "3.1.10",
|
||||||
},
|
},
|
||||||
@ -463,36 +463,36 @@ func TestKubeletUpgrade(t *testing.T) {
|
|||||||
}{
|
}{
|
||||||
{ // upgrade available
|
{ // upgrade available
|
||||||
before: map[string]uint16{
|
before: map[string]uint16{
|
||||||
"v1.7.1": 1,
|
"v1.9.1": 1,
|
||||||
},
|
},
|
||||||
after: "v1.7.3",
|
after: "v1.9.3",
|
||||||
expected: true,
|
expected: true,
|
||||||
},
|
},
|
||||||
{ // upgrade available
|
{ // upgrade available
|
||||||
before: map[string]uint16{
|
before: map[string]uint16{
|
||||||
"v1.7.1": 1,
|
"v1.9.1": 1,
|
||||||
"v1.7.3": 100,
|
"v1.9.3": 100,
|
||||||
},
|
},
|
||||||
after: "v1.7.3",
|
after: "v1.9.3",
|
||||||
expected: true,
|
expected: true,
|
||||||
},
|
},
|
||||||
{ // upgrade not available
|
{ // upgrade not available
|
||||||
before: map[string]uint16{
|
before: map[string]uint16{
|
||||||
"v1.7.3": 1,
|
"v1.9.3": 1,
|
||||||
},
|
},
|
||||||
after: "v1.7.3",
|
after: "v1.9.3",
|
||||||
expected: false,
|
expected: false,
|
||||||
},
|
},
|
||||||
{ // upgrade not available
|
{ // upgrade not available
|
||||||
before: map[string]uint16{
|
before: map[string]uint16{
|
||||||
"v1.7.3": 100,
|
"v1.9.3": 100,
|
||||||
},
|
},
|
||||||
after: "v1.7.3",
|
after: "v1.9.3",
|
||||||
expected: false,
|
expected: false,
|
||||||
},
|
},
|
||||||
{ // upgrade not available if we don't know anything about the earlier state
|
{ // upgrade not available if we don't know anything about the earlier state
|
||||||
before: map[string]uint16{},
|
before: map[string]uint16{},
|
||||||
after: "v1.7.3",
|
after: "v1.9.3",
|
||||||
expected: false,
|
expected: false,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user