Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
08ba47b2
Unverified
Commit
08ba47b2
authored
May 01, 2018
by
Jason DeTiberus
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
kubeadm - set CoreDNS FeatureGate to true by default
parent
9a868b38
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
253 additions
and
17 deletions
+253
-17
plan.go
cmd/kubeadm/app/cmd/upgrade/plan.go
+33
-8
plan_test.go
cmd/kubeadm/app/cmd/upgrade/plan_test.go
+158
-2
features.go
cmd/kubeadm/app/features/features.go
+6
-3
features_test.go
cmd/kubeadm/app/features/features_test.go
+15
-2
dns.go
cmd/kubeadm/app/phases/addons/dns/dns.go
+22
-0
BUILD
cmd/kubeadm/app/phases/upgrade/BUILD
+4
-0
compute.go
cmd/kubeadm/app/phases/upgrade/compute.go
+15
-2
compute_test.go
cmd/kubeadm/app/phases/upgrade/compute_test.go
+0
-0
No files found.
cmd/kubeadm/app/cmd/upgrade/plan.go
View file @
08ba47b2
...
@@ -28,7 +28,6 @@ import (
...
@@ -28,7 +28,6 @@ import (
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation"
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation"
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
"k8s.io/kubernetes/cmd/kubeadm/app/features"
"k8s.io/kubernetes/cmd/kubeadm/app/phases/upgrade"
"k8s.io/kubernetes/cmd/kubeadm/app/phases/upgrade"
kubeadmutil
"k8s.io/kubernetes/cmd/kubeadm/app/util"
kubeadmutil
"k8s.io/kubernetes/cmd/kubeadm/app/util"
etcdutil
"k8s.io/kubernetes/cmd/kubeadm/app/util/etcd"
etcdutil
"k8s.io/kubernetes/cmd/kubeadm/app/util/etcd"
...
@@ -118,19 +117,19 @@ func RunPlan(flags *planFlags) error {
...
@@ -118,19 +117,19 @@ func RunPlan(flags *planFlags) error {
// Compute which upgrade possibilities there are
// Compute which upgrade possibilities there are
glog
.
V
(
1
)
.
Infof
(
"[upgrade/plan] computing upgrade possibilities"
)
glog
.
V
(
1
)
.
Infof
(
"[upgrade/plan] computing upgrade possibilities"
)
availUpgrades
,
err
:=
upgrade
.
GetAvailableUpgrades
(
upgradeVars
.
versionGetter
,
flags
.
parent
.
allowExperimentalUpgrades
,
flags
.
parent
.
allowRCUpgrades
,
etcdClient
,
upgradeVars
.
cfg
.
FeatureGates
)
availUpgrades
,
err
:=
upgrade
.
GetAvailableUpgrades
(
upgradeVars
.
versionGetter
,
flags
.
parent
.
allowExperimentalUpgrades
,
flags
.
parent
.
allowRCUpgrades
,
etcdClient
,
upgradeVars
.
cfg
.
FeatureGates
,
upgradeVars
.
client
)
if
err
!=
nil
{
if
err
!=
nil
{
return
fmt
.
Errorf
(
"[upgrade/versions] FATAL: %v"
,
err
)
return
fmt
.
Errorf
(
"[upgrade/versions] FATAL: %v"
,
err
)
}
}
// Tell the user which upgrades are available
// Tell the user which upgrades are available
printAvailableUpgrades
(
availUpgrades
,
os
.
Stdout
,
upgradeVars
.
cfg
.
FeatureGates
,
isExternalEtcd
)
printAvailableUpgrades
(
availUpgrades
,
os
.
Stdout
,
isExternalEtcd
)
return
nil
return
nil
}
}
// printAvailableUpgrades prints a UX-friendly overview of what versions are available to upgrade to
// printAvailableUpgrades prints a UX-friendly overview of what versions are available to upgrade to
// TODO look into columnize or some other formatter when time permits instead of using the tabwriter
// TODO look into columnize or some other formatter when time permits instead of using the tabwriter
func
printAvailableUpgrades
(
upgrades
[]
upgrade
.
Upgrade
,
w
io
.
Writer
,
featureGates
map
[
string
]
bool
,
isExternalEtcd
bool
)
{
func
printAvailableUpgrades
(
upgrades
[]
upgrade
.
Upgrade
,
w
io
.
Writer
,
isExternalEtcd
bool
)
{
// Return quickly if no upgrades can be made
// Return quickly if no upgrades can be made
if
len
(
upgrades
)
==
0
{
if
len
(
upgrades
)
==
0
{
...
@@ -182,11 +181,37 @@ func printAvailableUpgrades(upgrades []upgrade.Upgrade, w io.Writer, featureGate
...
@@ -182,11 +181,37 @@ func printAvailableUpgrades(upgrades []upgrade.Upgrade, w io.Writer, featureGate
fmt
.
Fprintf
(
tabw
,
"Controller Manager
\t
%s
\t
%s
\n
"
,
upgrade
.
Before
.
KubeVersion
,
upgrade
.
After
.
KubeVersion
)
fmt
.
Fprintf
(
tabw
,
"Controller Manager
\t
%s
\t
%s
\n
"
,
upgrade
.
Before
.
KubeVersion
,
upgrade
.
After
.
KubeVersion
)
fmt
.
Fprintf
(
tabw
,
"Scheduler
\t
%s
\t
%s
\n
"
,
upgrade
.
Before
.
KubeVersion
,
upgrade
.
After
.
KubeVersion
)
fmt
.
Fprintf
(
tabw
,
"Scheduler
\t
%s
\t
%s
\n
"
,
upgrade
.
Before
.
KubeVersion
,
upgrade
.
After
.
KubeVersion
)
fmt
.
Fprintf
(
tabw
,
"Kube Proxy
\t
%s
\t
%s
\n
"
,
upgrade
.
Before
.
KubeVersion
,
upgrade
.
After
.
KubeVersion
)
fmt
.
Fprintf
(
tabw
,
"Kube Proxy
\t
%s
\t
%s
\n
"
,
upgrade
.
Before
.
KubeVersion
,
upgrade
.
After
.
KubeVersion
)
if
features
.
Enabled
(
featureGates
,
features
.
CoreDNS
)
{
fmt
.
Fprintf
(
tabw
,
"CoreDNS
\t
%s
\t
%s
\n
"
,
upgrade
.
Before
.
DNSVersion
,
upgrade
.
After
.
DNSVersion
)
// TODO There is currently no way to cleanly output upgrades that involve adding, removing, or changing components
}
else
{
// https://github.com/kubernetes/kubeadm/issues/810 was created to track addressing this.
fmt
.
Fprintf
(
tabw
,
"Kube DNS
\t
%s
\t
%s
\n
"
,
upgrade
.
Before
.
DNSVersion
,
upgrade
.
After
.
DNSVersion
)
printCoreDNS
,
printKubeDNS
:=
false
,
false
coreDNSBeforeVersion
,
coreDNSAfterVersion
,
kubeDNSBeforeVersion
,
kubeDNSAfterVersion
:=
""
,
""
,
""
,
""
switch
upgrade
.
Before
.
DNSType
{
case
constants
.
CoreDNS
:
printCoreDNS
=
true
coreDNSBeforeVersion
=
upgrade
.
Before
.
DNSVersion
case
constants
.
KubeDNS
:
printKubeDNS
=
true
kubeDNSBeforeVersion
=
upgrade
.
Before
.
DNSVersion
}
switch
upgrade
.
After
.
DNSType
{
case
constants
.
CoreDNS
:
printCoreDNS
=
true
coreDNSAfterVersion
=
upgrade
.
After
.
DNSVersion
case
constants
.
KubeDNS
:
printKubeDNS
=
true
kubeDNSAfterVersion
=
upgrade
.
After
.
DNSVersion
}
}
if
printCoreDNS
{
fmt
.
Fprintf
(
tabw
,
"CoreDNS
\t
%s
\t
%s
\n
"
,
coreDNSBeforeVersion
,
coreDNSAfterVersion
)
}
if
printKubeDNS
{
fmt
.
Fprintf
(
tabw
,
"Kube DNS
\t
%s
\t
%s
\n
"
,
kubeDNSBeforeVersion
,
kubeDNSAfterVersion
)
}
if
!
isExternalEtcd
{
if
!
isExternalEtcd
{
fmt
.
Fprintf
(
tabw
,
"Etcd
\t
%s
\t
%s
\n
"
,
upgrade
.
Before
.
EtcdVersion
,
upgrade
.
After
.
EtcdVersion
)
fmt
.
Fprintf
(
tabw
,
"Etcd
\t
%s
\t
%s
\n
"
,
upgrade
.
Before
.
EtcdVersion
,
upgrade
.
After
.
EtcdVersion
)
}
}
...
...
cmd/kubeadm/app/cmd/upgrade/plan_test.go
View file @
08ba47b2
...
@@ -60,7 +60,6 @@ func TestSortedSliceFromStringIntMap(t *testing.T) {
...
@@ -60,7 +60,6 @@ func TestSortedSliceFromStringIntMap(t *testing.T) {
// TODO Think about modifying this test to be less verbose checking b/c it can be brittle.
// TODO Think about modifying this test to be less verbose checking b/c it can be brittle.
func
TestPrintAvailableUpgrades
(
t
*
testing
.
T
)
{
func
TestPrintAvailableUpgrades
(
t
*
testing
.
T
)
{
featureGates
:=
make
(
map
[
string
]
bool
)
var
tests
=
[]
struct
{
var
tests
=
[]
struct
{
name
string
name
string
upgrades
[]
upgrade
.
Upgrade
upgrades
[]
upgrade
.
Upgrade
...
@@ -92,12 +91,14 @@ func TestPrintAvailableUpgrades(t *testing.T) {
...
@@ -92,12 +91,14 @@ func TestPrintAvailableUpgrades(t *testing.T) {
"v1.8.1"
:
1
,
"v1.8.1"
:
1
,
},
},
KubeadmVersion
:
"v1.8.2"
,
KubeadmVersion
:
"v1.8.2"
,
DNSType
:
"kube-dns"
,
DNSVersion
:
"1.14.5"
,
DNSVersion
:
"1.14.5"
,
EtcdVersion
:
"3.0.17"
,
EtcdVersion
:
"3.0.17"
,
},
},
After
:
upgrade
.
ClusterState
{
After
:
upgrade
.
ClusterState
{
KubeVersion
:
"v1.8.3"
,
KubeVersion
:
"v1.8.3"
,
KubeadmVersion
:
"v1.8.3"
,
KubeadmVersion
:
"v1.8.3"
,
DNSType
:
"kube-dns"
,
DNSVersion
:
"1.14.5"
,
DNSVersion
:
"1.14.5"
,
EtcdVersion
:
"3.0.17"
,
EtcdVersion
:
"3.0.17"
,
},
},
...
@@ -138,12 +139,14 @@ _____________________________________________________________________
...
@@ -138,12 +139,14 @@ _____________________________________________________________________
"v1.8.3"
:
1
,
"v1.8.3"
:
1
,
},
},
KubeadmVersion
:
"v1.9.0"
,
KubeadmVersion
:
"v1.9.0"
,
DNSType
:
"kube-dns"
,
DNSVersion
:
"1.14.5"
,
DNSVersion
:
"1.14.5"
,
EtcdVersion
:
"3.0.17"
,
EtcdVersion
:
"3.0.17"
,
},
},
After
:
upgrade
.
ClusterState
{
After
:
upgrade
.
ClusterState
{
KubeVersion
:
"v1.9.0"
,
KubeVersion
:
"v1.9.0"
,
KubeadmVersion
:
"v1.9.0"
,
KubeadmVersion
:
"v1.9.0"
,
DNSType
:
"kube-dns"
,
DNSVersion
:
"1.14.10"
,
DNSVersion
:
"1.14.10"
,
EtcdVersion
:
"3.1.12"
,
EtcdVersion
:
"3.1.12"
,
},
},
...
@@ -182,12 +185,14 @@ _____________________________________________________________________
...
@@ -182,12 +185,14 @@ _____________________________________________________________________
"v1.8.3"
:
1
,
"v1.8.3"
:
1
,
},
},
KubeadmVersion
:
"v1.8.3"
,
KubeadmVersion
:
"v1.8.3"
,
DNSType
:
"kube-dns"
,
DNSVersion
:
"1.14.5"
,
DNSVersion
:
"1.14.5"
,
EtcdVersion
:
"3.0.17"
,
EtcdVersion
:
"3.0.17"
,
},
},
After
:
upgrade
.
ClusterState
{
After
:
upgrade
.
ClusterState
{
KubeVersion
:
"v1.8.5"
,
KubeVersion
:
"v1.8.5"
,
KubeadmVersion
:
"v1.8.3"
,
KubeadmVersion
:
"v1.8.3"
,
DNSType
:
"kube-dns"
,
DNSVersion
:
"1.14.5"
,
DNSVersion
:
"1.14.5"
,
EtcdVersion
:
"3.0.17"
,
EtcdVersion
:
"3.0.17"
,
},
},
...
@@ -200,12 +205,14 @@ _____________________________________________________________________
...
@@ -200,12 +205,14 @@ _____________________________________________________________________
"v1.8.3"
:
1
,
"v1.8.3"
:
1
,
},
},
KubeadmVersion
:
"v1.8.3"
,
KubeadmVersion
:
"v1.8.3"
,
DNSType
:
"kube-dns"
,
DNSVersion
:
"1.14.5"
,
DNSVersion
:
"1.14.5"
,
EtcdVersion
:
"3.0.17"
,
EtcdVersion
:
"3.0.17"
,
},
},
After
:
upgrade
.
ClusterState
{
After
:
upgrade
.
ClusterState
{
KubeVersion
:
"v1.9.0"
,
KubeVersion
:
"v1.9.0"
,
KubeadmVersion
:
"v1.9.0"
,
KubeadmVersion
:
"v1.9.0"
,
DNSType
:
"kube-dns"
,
DNSVersion
:
"1.14.10"
,
DNSVersion
:
"1.14.10"
,
EtcdVersion
:
"3.1.12"
,
EtcdVersion
:
"3.1.12"
,
},
},
...
@@ -266,12 +273,14 @@ _____________________________________________________________________
...
@@ -266,12 +273,14 @@ _____________________________________________________________________
"v1.8.5"
:
1
,
"v1.8.5"
:
1
,
},
},
KubeadmVersion
:
"v1.8.5"
,
KubeadmVersion
:
"v1.8.5"
,
DNSType
:
"kube-dns"
,
DNSVersion
:
"1.14.5"
,
DNSVersion
:
"1.14.5"
,
EtcdVersion
:
"3.0.17"
,
EtcdVersion
:
"3.0.17"
,
},
},
After
:
upgrade
.
ClusterState
{
After
:
upgrade
.
ClusterState
{
KubeVersion
:
"v1.9.0-beta.1"
,
KubeVersion
:
"v1.9.0-beta.1"
,
KubeadmVersion
:
"v1.9.0-beta.1"
,
KubeadmVersion
:
"v1.9.0-beta.1"
,
DNSType
:
"kube-dns"
,
DNSVersion
:
"1.14.10"
,
DNSVersion
:
"1.14.10"
,
EtcdVersion
:
"3.1.12"
,
EtcdVersion
:
"3.1.12"
,
},
},
...
@@ -312,12 +321,14 @@ _____________________________________________________________________
...
@@ -312,12 +321,14 @@ _____________________________________________________________________
"v1.8.5"
:
1
,
"v1.8.5"
:
1
,
},
},
KubeadmVersion
:
"v1.8.5"
,
KubeadmVersion
:
"v1.8.5"
,
DNSType
:
"kube-dns"
,
DNSVersion
:
"1.14.5"
,
DNSVersion
:
"1.14.5"
,
EtcdVersion
:
"3.0.17"
,
EtcdVersion
:
"3.0.17"
,
},
},
After
:
upgrade
.
ClusterState
{
After
:
upgrade
.
ClusterState
{
KubeVersion
:
"v1.9.0-rc.1"
,
KubeVersion
:
"v1.9.0-rc.1"
,
KubeadmVersion
:
"v1.9.0-rc.1"
,
KubeadmVersion
:
"v1.9.0-rc.1"
,
DNSType
:
"kube-dns"
,
DNSVersion
:
"1.14.10"
,
DNSVersion
:
"1.14.10"
,
EtcdVersion
:
"3.1.12"
,
EtcdVersion
:
"3.1.12"
,
},
},
...
@@ -359,12 +370,14 @@ _____________________________________________________________________
...
@@ -359,12 +370,14 @@ _____________________________________________________________________
"v1.9.3"
:
2
,
"v1.9.3"
:
2
,
},
},
KubeadmVersion
:
"v1.9.2"
,
KubeadmVersion
:
"v1.9.2"
,
DNSType
:
"kube-dns"
,
DNSVersion
:
"1.14.5"
,
DNSVersion
:
"1.14.5"
,
EtcdVersion
:
"3.0.17"
,
EtcdVersion
:
"3.0.17"
,
},
},
After
:
upgrade
.
ClusterState
{
After
:
upgrade
.
ClusterState
{
KubeVersion
:
"v1.9.3"
,
KubeVersion
:
"v1.9.3"
,
KubeadmVersion
:
"v1.9.3"
,
KubeadmVersion
:
"v1.9.3"
,
DNSType
:
"kube-dns"
,
DNSVersion
:
"1.14.8"
,
DNSVersion
:
"1.14.8"
,
EtcdVersion
:
"3.1.12"
,
EtcdVersion
:
"3.1.12"
,
},
},
...
@@ -395,6 +408,7 @@ _____________________________________________________________________
...
@@ -395,6 +408,7 @@ _____________________________________________________________________
`
),
`
),
},
},
{
{
name
:
"external etcd upgrade available"
,
name
:
"external etcd upgrade available"
,
upgrades
:
[]
upgrade
.
Upgrade
{
upgrades
:
[]
upgrade
.
Upgrade
{
...
@@ -406,12 +420,14 @@ _____________________________________________________________________
...
@@ -406,12 +420,14 @@ _____________________________________________________________________
"v1.9.2"
:
1
,
"v1.9.2"
:
1
,
},
},
KubeadmVersion
:
"v1.9.2"
,
KubeadmVersion
:
"v1.9.2"
,
DNSType
:
"kube-dns"
,
DNSVersion
:
"1.14.5"
,
DNSVersion
:
"1.14.5"
,
EtcdVersion
:
"3.0.17"
,
EtcdVersion
:
"3.0.17"
,
},
},
After
:
upgrade
.
ClusterState
{
After
:
upgrade
.
ClusterState
{
KubeVersion
:
"v1.9.3"
,
KubeVersion
:
"v1.9.3"
,
KubeadmVersion
:
"v1.9.3"
,
KubeadmVersion
:
"v1.9.3"
,
DNSType
:
"kube-dns"
,
DNSVersion
:
"1.14.8"
,
DNSVersion
:
"1.14.8"
,
EtcdVersion
:
"3.1.12"
,
EtcdVersion
:
"3.1.12"
,
},
},
...
@@ -445,11 +461,151 @@ _____________________________________________________________________
...
@@ -445,11 +461,151 @@ _____________________________________________________________________
`
),
`
),
},
},
{
name
:
"kubedns to coredns"
,
upgrades
:
[]
upgrade
.
Upgrade
{
{
Description
:
"kubedns to coredns"
,
Before
:
upgrade
.
ClusterState
{
KubeVersion
:
"v1.10.2"
,
KubeletVersions
:
map
[
string
]
uint16
{
"v1.10.2"
:
1
,
},
KubeadmVersion
:
"v1.11.0"
,
DNSType
:
"kube-dns"
,
DNSVersion
:
"1.14.7"
,
EtcdVersion
:
"3.1.11"
,
},
After
:
upgrade
.
ClusterState
{
KubeVersion
:
"v1.11.0"
,
KubeadmVersion
:
"v1.11.0"
,
DNSType
:
"coredns"
,
DNSVersion
:
"1.0.6"
,
EtcdVersion
:
"3.2.18"
,
},
},
},
expectedBytes
:
[]
byte
(
`Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply':
COMPONENT CURRENT AVAILABLE
Kubelet 1 x v1.10.2 v1.11.0
Upgrade to the latest kubedns to coredns:
COMPONENT CURRENT AVAILABLE
API Server v1.10.2 v1.11.0
Controller Manager v1.10.2 v1.11.0
Scheduler v1.10.2 v1.11.0
Kube Proxy v1.10.2 v1.11.0
CoreDNS 1.0.6
Kube DNS 1.14.7
Etcd 3.1.11 3.2.18
You can now apply the upgrade by executing the following command:
kubeadm upgrade apply v1.11.0
_____________________________________________________________________
`
),
},
{
name
:
"coredns"
,
upgrades
:
[]
upgrade
.
Upgrade
{
{
Description
:
"coredns"
,
Before
:
upgrade
.
ClusterState
{
KubeVersion
:
"v1.10.2"
,
KubeletVersions
:
map
[
string
]
uint16
{
"v1.10.2"
:
1
,
},
KubeadmVersion
:
"v1.11.0"
,
DNSType
:
"coredns"
,
DNSVersion
:
"1.0.5"
,
EtcdVersion
:
"3.1.11"
,
},
After
:
upgrade
.
ClusterState
{
KubeVersion
:
"v1.11.0"
,
KubeadmVersion
:
"v1.11.0"
,
DNSType
:
"coredns"
,
DNSVersion
:
"1.0.6"
,
EtcdVersion
:
"3.2.18"
,
},
},
},
expectedBytes
:
[]
byte
(
`Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply':
COMPONENT CURRENT AVAILABLE
Kubelet 1 x v1.10.2 v1.11.0
Upgrade to the latest coredns:
COMPONENT CURRENT AVAILABLE
API Server v1.10.2 v1.11.0
Controller Manager v1.10.2 v1.11.0
Scheduler v1.10.2 v1.11.0
Kube Proxy v1.10.2 v1.11.0
CoreDNS 1.0.5 1.0.6
Etcd 3.1.11 3.2.18
You can now apply the upgrade by executing the following command:
kubeadm upgrade apply v1.11.0
_____________________________________________________________________
`
),
},
{
name
:
"coredns to kubedns"
,
upgrades
:
[]
upgrade
.
Upgrade
{
{
Description
:
"coredns to kubedns"
,
Before
:
upgrade
.
ClusterState
{
KubeVersion
:
"v1.10.2"
,
KubeletVersions
:
map
[
string
]
uint16
{
"v1.10.2"
:
1
,
},
KubeadmVersion
:
"v1.11.0"
,
DNSType
:
"coredns"
,
DNSVersion
:
"1.0.6"
,
EtcdVersion
:
"3.1.11"
,
},
After
:
upgrade
.
ClusterState
{
KubeVersion
:
"v1.11.0"
,
KubeadmVersion
:
"v1.11.0"
,
DNSType
:
"kube-dns"
,
DNSVersion
:
"1.14.9"
,
EtcdVersion
:
"3.2.18"
,
},
},
},
expectedBytes
:
[]
byte
(
`Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply':
COMPONENT CURRENT AVAILABLE
Kubelet 1 x v1.10.2 v1.11.0
Upgrade to the latest coredns to kubedns:
COMPONENT CURRENT AVAILABLE
API Server v1.10.2 v1.11.0
Controller Manager v1.10.2 v1.11.0
Scheduler v1.10.2 v1.11.0
Kube Proxy v1.10.2 v1.11.0
CoreDNS 1.0.6
Kube DNS 1.14.9
Etcd 3.1.11 3.2.18
You can now apply the upgrade by executing the following command:
kubeadm upgrade apply v1.11.0
_____________________________________________________________________
`
),
},
}
}
for
_
,
rt
:=
range
tests
{
for
_
,
rt
:=
range
tests
{
t
.
Run
(
rt
.
name
,
func
(
t
*
testing
.
T
)
{
t
.
Run
(
rt
.
name
,
func
(
t
*
testing
.
T
)
{
rt
.
buf
=
bytes
.
NewBufferString
(
""
)
rt
.
buf
=
bytes
.
NewBufferString
(
""
)
printAvailableUpgrades
(
rt
.
upgrades
,
rt
.
buf
,
featureGates
,
rt
.
externalEtcd
)
printAvailableUpgrades
(
rt
.
upgrades
,
rt
.
buf
,
rt
.
externalEtcd
)
actualBytes
:=
rt
.
buf
.
Bytes
()
actualBytes
:=
rt
.
buf
.
Bytes
()
if
!
bytes
.
Equal
(
actualBytes
,
rt
.
expectedBytes
)
{
if
!
bytes
.
Equal
(
actualBytes
,
rt
.
expectedBytes
)
{
t
.
Errorf
(
t
.
Errorf
(
...
...
cmd/kubeadm/app/features/features.go
View file @
08ba47b2
...
@@ -30,7 +30,7 @@ const (
...
@@ -30,7 +30,7 @@ const (
// HighAvailability is alpha in v1.9
// HighAvailability is alpha in v1.9
HighAvailability
=
"HighAvailability"
HighAvailability
=
"HighAvailability"
// CoreDNS is
alpha in v1.9
// CoreDNS is
GA in v1.11
CoreDNS
=
"CoreDNS"
CoreDNS
=
"CoreDNS"
// SelfHosting is alpha in v1.8 and v1.9
// SelfHosting is alpha in v1.8 and v1.9
...
@@ -54,7 +54,7 @@ var InitFeatureGates = FeatureList{
...
@@ -54,7 +54,7 @@ var InitFeatureGates = FeatureList{
StoreCertsInSecrets
:
{
FeatureSpec
:
utilfeature
.
FeatureSpec
{
Default
:
false
,
PreRelease
:
utilfeature
.
Alpha
}},
StoreCertsInSecrets
:
{
FeatureSpec
:
utilfeature
.
FeatureSpec
{
Default
:
false
,
PreRelease
:
utilfeature
.
Alpha
}},
// We don't want to advertise this feature gate exists in v1.9 to avoid confusion as it is not yet working
// We don't want to advertise this feature gate exists in v1.9 to avoid confusion as it is not yet working
HighAvailability
:
{
FeatureSpec
:
utilfeature
.
FeatureSpec
{
Default
:
false
,
PreRelease
:
utilfeature
.
Alpha
},
MinimumVersion
:
v190
,
HiddenInHelpText
:
true
},
HighAvailability
:
{
FeatureSpec
:
utilfeature
.
FeatureSpec
{
Default
:
false
,
PreRelease
:
utilfeature
.
Alpha
},
MinimumVersion
:
v190
,
HiddenInHelpText
:
true
},
CoreDNS
:
{
FeatureSpec
:
utilfeature
.
FeatureSpec
{
Default
:
fals
e
,
PreRelease
:
utilfeature
.
GA
},
MinimumVersion
:
v190
},
CoreDNS
:
{
FeatureSpec
:
utilfeature
.
FeatureSpec
{
Default
:
tru
e
,
PreRelease
:
utilfeature
.
GA
},
MinimumVersion
:
v190
},
DynamicKubeletConfig
:
{
FeatureSpec
:
utilfeature
.
FeatureSpec
{
Default
:
false
,
PreRelease
:
utilfeature
.
Alpha
},
MinimumVersion
:
v190
},
DynamicKubeletConfig
:
{
FeatureSpec
:
utilfeature
.
FeatureSpec
{
Default
:
false
,
PreRelease
:
utilfeature
.
Alpha
},
MinimumVersion
:
v190
},
Auditing
:
{
FeatureSpec
:
utilfeature
.
FeatureSpec
{
Default
:
false
,
PreRelease
:
utilfeature
.
Alpha
}},
Auditing
:
{
FeatureSpec
:
utilfeature
.
FeatureSpec
{
Default
:
false
,
PreRelease
:
utilfeature
.
Alpha
}},
}
}
...
@@ -92,7 +92,10 @@ func ValidateVersion(allFeatures FeatureList, requestedFeatures map[string]bool,
...
@@ -92,7 +92,10 @@ func ValidateVersion(allFeatures FeatureList, requestedFeatures map[string]bool,
// Enabled indicates whether a feature name has been enabled
// Enabled indicates whether a feature name has been enabled
func
Enabled
(
featureList
map
[
string
]
bool
,
featureName
string
)
bool
{
func
Enabled
(
featureList
map
[
string
]
bool
,
featureName
string
)
bool
{
return
featureList
[
string
(
featureName
)]
if
enabled
,
ok
:=
featureList
[
string
(
featureName
)];
ok
{
return
enabled
}
return
InitFeatureGates
[
string
(
featureName
)]
.
Default
}
}
// Supports indicates whether a feature name is supported on the given
// Supports indicates whether a feature name is supported on the given
...
...
cmd/kubeadm/app/features/features_test.go
View file @
08ba47b2
...
@@ -168,8 +168,8 @@ func TestResolveFeatureGateDependencies(t *testing.T) {
...
@@ -168,8 +168,8 @@ func TestResolveFeatureGateDependencies(t *testing.T) {
expectedFeatures
:
map
[
string
]
bool
{},
expectedFeatures
:
map
[
string
]
bool
{},
},
},
{
// others flags
{
// others flags
inputFeatures
:
map
[
string
]
bool
{
CoreDNS
:
tru
e
},
inputFeatures
:
map
[
string
]
bool
{
CoreDNS
:
fals
e
},
expectedFeatures
:
map
[
string
]
bool
{
CoreDNS
:
tru
e
},
expectedFeatures
:
map
[
string
]
bool
{
CoreDNS
:
fals
e
},
},
},
{
// just StoreCertsInSecrets flags
{
// just StoreCertsInSecrets flags
inputFeatures
:
map
[
string
]
bool
{
StoreCertsInSecrets
:
true
},
inputFeatures
:
map
[
string
]
bool
{
StoreCertsInSecrets
:
true
},
...
@@ -189,3 +189,16 @@ func TestResolveFeatureGateDependencies(t *testing.T) {
...
@@ -189,3 +189,16 @@ func TestResolveFeatureGateDependencies(t *testing.T) {
}
}
}
}
}
}
// TestEnabledDefaults tests that Enabled returns the default values for
// each feature gate when no feature gates are specified.
func
TestEnabledDefaults
(
t
*
testing
.
T
)
{
for
featureName
,
feature
:=
range
InitFeatureGates
{
featureList
:=
make
(
map
[
string
]
bool
)
enabled
:=
Enabled
(
featureList
,
featureName
)
if
enabled
!=
feature
.
Default
{
t
.
Errorf
(
"Enabled returned %v instead of default value %v for feature %s"
,
enabled
,
feature
.
Default
,
featureName
)
}
}
}
cmd/kubeadm/app/phases/addons/dns/dns.go
View file @
08ba47b2
...
@@ -48,6 +48,28 @@ const (
...
@@ -48,6 +48,28 @@ const (
kubeDNSFederation
=
"federations"
kubeDNSFederation
=
"federations"
)
)
// DeployedDNSAddon returns the type of DNS addon currently deployed
func
DeployedDNSAddon
(
client
clientset
.
Interface
)
(
string
,
string
,
error
)
{
deploymentsClient
:=
client
.
AppsV1
()
.
Deployments
(
metav1
.
NamespaceSystem
)
deployments
,
err
:=
deploymentsClient
.
List
(
metav1
.
ListOptions
{
LabelSelector
:
"k8s-app=kube-dns"
})
if
err
!=
nil
{
return
""
,
""
,
fmt
.
Errorf
(
"couldn't retrieve DNS addon deployments: %v"
,
err
)
}
switch
len
(
deployments
.
Items
)
{
case
0
:
return
""
,
""
,
nil
case
1
:
addonName
:=
deployments
.
Items
[
0
]
.
Name
addonImage
:=
deployments
.
Items
[
0
]
.
Spec
.
Template
.
Spec
.
Containers
[
0
]
.
Image
addonImageParts
:=
strings
.
Split
(
addonImage
,
":"
)
addonVersion
:=
addonImageParts
[
len
(
addonImageParts
)
-
1
]
return
addonName
,
addonVersion
,
nil
default
:
return
""
,
""
,
fmt
.
Errorf
(
"multiple DNS addon deployments found: %v"
,
deployments
.
Items
)
}
}
// EnsureDNSAddon creates the kube-dns or CoreDNS addon
// EnsureDNSAddon creates the kube-dns or CoreDNS addon
func
EnsureDNSAddon
(
cfg
*
kubeadmapi
.
MasterConfiguration
,
client
clientset
.
Interface
)
error
{
func
EnsureDNSAddon
(
cfg
*
kubeadmapi
.
MasterConfiguration
,
client
clientset
.
Interface
)
error
{
k8sVersion
,
err
:=
version
.
ParseSemantic
(
cfg
.
KubernetesVersion
)
k8sVersion
,
err
:=
version
.
ParseSemantic
(
cfg
.
KubernetesVersion
)
...
...
cmd/kubeadm/app/phases/upgrade/BUILD
View file @
08ba47b2
...
@@ -91,6 +91,10 @@ go_test(
...
@@ -91,6 +91,10 @@ go_test(
"//pkg/util/version:go_default_library",
"//pkg/util/version:go_default_library",
"//vendor/github.com/coreos/etcd/clientv3:go_default_library",
"//vendor/github.com/coreos/etcd/clientv3:go_default_library",
"//vendor/github.com/coreos/etcd/pkg/transport:go_default_library",
"//vendor/github.com/coreos/etcd/pkg/transport:go_default_library",
"//vendor/k8s.io/api/apps/v1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/fake:go_default_library",
],
],
)
)
cmd/kubeadm/app/phases/upgrade/compute.go
View file @
08ba47b2
...
@@ -20,6 +20,7 @@ import (
...
@@ -20,6 +20,7 @@ import (
"fmt"
"fmt"
"strings"
"strings"
clientset
"k8s.io/client-go/kubernetes"
kubeadmconstants
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
kubeadmconstants
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
"k8s.io/kubernetes/cmd/kubeadm/app/features"
"k8s.io/kubernetes/cmd/kubeadm/app/features"
"k8s.io/kubernetes/cmd/kubeadm/app/phases/addons/dns"
"k8s.io/kubernetes/cmd/kubeadm/app/phases/addons/dns"
...
@@ -67,6 +68,8 @@ func ActiveDNSAddon(featureGates map[string]bool) string {
...
@@ -67,6 +68,8 @@ func ActiveDNSAddon(featureGates map[string]bool) string {
type
ClusterState
struct
{
type
ClusterState
struct
{
// KubeVersion describes the version of the Kubernetes API Server, Controller Manager, Scheduler and Proxy.
// KubeVersion describes the version of the Kubernetes API Server, Controller Manager, Scheduler and Proxy.
KubeVersion
string
KubeVersion
string
// DNSType
DNSType
string
// DNSVersion describes the version of the kube-dns images used and manifest version
// DNSVersion describes the version of the kube-dns images used and manifest version
DNSVersion
string
DNSVersion
string
// KubeadmVersion describes the version of the kubeadm CLI
// KubeadmVersion describes the version of the kubeadm CLI
...
@@ -79,7 +82,7 @@ type ClusterState struct {
...
@@ -79,7 +82,7 @@ type ClusterState struct {
// GetAvailableUpgrades fetches all versions from the specified VersionGetter and computes which
// GetAvailableUpgrades fetches all versions from the specified VersionGetter and computes which
// kinds of upgrades can be performed
// kinds of upgrades can be performed
func
GetAvailableUpgrades
(
versionGetterImpl
VersionGetter
,
experimentalUpgradesAllowed
,
rcUpgradesAllowed
bool
,
etcdClient
etcdutil
.
ClusterInterrogator
,
featureGates
map
[
string
]
bool
)
([]
Upgrade
,
error
)
{
func
GetAvailableUpgrades
(
versionGetterImpl
VersionGetter
,
experimentalUpgradesAllowed
,
rcUpgradesAllowed
bool
,
etcdClient
etcdutil
.
ClusterInterrogator
,
featureGates
map
[
string
]
bool
,
client
clientset
.
Interface
)
([]
Upgrade
,
error
)
{
fmt
.
Println
(
"[upgrade] Fetching available versions to upgrade to"
)
fmt
.
Println
(
"[upgrade] Fetching available versions to upgrade to"
)
// Collect the upgrades kubeadm can do in this list
// Collect the upgrades kubeadm can do in this list
...
@@ -117,10 +120,16 @@ func GetAvailableUpgrades(versionGetterImpl VersionGetter, experimentalUpgradesA
...
@@ -117,10 +120,16 @@ func GetAvailableUpgrades(versionGetterImpl VersionGetter, experimentalUpgradesA
return
upgrades
,
err
return
upgrades
,
err
}
}
dnsType
,
dnsVersion
,
err
:=
dns
.
DeployedDNSAddon
(
client
)
if
err
!=
nil
{
return
nil
,
err
}
// Construct a descriptor for the current state of the world
// Construct a descriptor for the current state of the world
beforeState
:=
ClusterState
{
beforeState
:=
ClusterState
{
KubeVersion
:
clusterVersionStr
,
KubeVersion
:
clusterVersionStr
,
DNSVersion
:
dns
.
GetDNSVersion
(
clusterVersion
,
ActiveDNSAddon
(
featureGates
)),
DNSType
:
dnsType
,
DNSVersion
:
dnsVersion
,
KubeadmVersion
:
kubeadmVersionStr
,
KubeadmVersion
:
kubeadmVersionStr
,
KubeletVersions
:
kubeletVersions
,
KubeletVersions
:
kubeletVersions
,
EtcdVersion
:
etcdVersion
,
EtcdVersion
:
etcdVersion
,
...
@@ -163,6 +172,7 @@ func GetAvailableUpgrades(versionGetterImpl VersionGetter, experimentalUpgradesA
...
@@ -163,6 +172,7 @@ func GetAvailableUpgrades(versionGetterImpl VersionGetter, experimentalUpgradesA
Before
:
beforeState
,
Before
:
beforeState
,
After
:
ClusterState
{
After
:
ClusterState
{
KubeVersion
:
patchVersionStr
,
KubeVersion
:
patchVersionStr
,
DNSType
:
ActiveDNSAddon
(
featureGates
),
DNSVersion
:
dns
.
GetDNSVersion
(
patchVersion
,
ActiveDNSAddon
(
featureGates
)),
DNSVersion
:
dns
.
GetDNSVersion
(
patchVersion
,
ActiveDNSAddon
(
featureGates
)),
KubeadmVersion
:
newKubeadmVer
,
KubeadmVersion
:
newKubeadmVer
,
EtcdVersion
:
getSuggestedEtcdVersion
(
patchVersionStr
),
EtcdVersion
:
getSuggestedEtcdVersion
(
patchVersionStr
),
...
@@ -179,6 +189,7 @@ func GetAvailableUpgrades(versionGetterImpl VersionGetter, experimentalUpgradesA
...
@@ -179,6 +189,7 @@ func GetAvailableUpgrades(versionGetterImpl VersionGetter, experimentalUpgradesA
Before
:
beforeState
,
Before
:
beforeState
,
After
:
ClusterState
{
After
:
ClusterState
{
KubeVersion
:
stableVersionStr
,
KubeVersion
:
stableVersionStr
,
DNSType
:
ActiveDNSAddon
(
featureGates
),
DNSVersion
:
dns
.
GetDNSVersion
(
stableVersion
,
ActiveDNSAddon
(
featureGates
)),
DNSVersion
:
dns
.
GetDNSVersion
(
stableVersion
,
ActiveDNSAddon
(
featureGates
)),
KubeadmVersion
:
stableVersionStr
,
KubeadmVersion
:
stableVersionStr
,
EtcdVersion
:
getSuggestedEtcdVersion
(
stableVersionStr
),
EtcdVersion
:
getSuggestedEtcdVersion
(
stableVersionStr
),
...
@@ -224,6 +235,7 @@ func GetAvailableUpgrades(versionGetterImpl VersionGetter, experimentalUpgradesA
...
@@ -224,6 +235,7 @@ func GetAvailableUpgrades(versionGetterImpl VersionGetter, experimentalUpgradesA
Before
:
beforeState
,
Before
:
beforeState
,
After
:
ClusterState
{
After
:
ClusterState
{
KubeVersion
:
previousBranchLatestVersionStr
,
KubeVersion
:
previousBranchLatestVersionStr
,
DNSType
:
ActiveDNSAddon
(
featureGates
),
DNSVersion
:
dns
.
GetDNSVersion
(
previousBranchLatestVersion
,
ActiveDNSAddon
(
featureGates
)),
DNSVersion
:
dns
.
GetDNSVersion
(
previousBranchLatestVersion
,
ActiveDNSAddon
(
featureGates
)),
KubeadmVersion
:
previousBranchLatestVersionStr
,
KubeadmVersion
:
previousBranchLatestVersionStr
,
EtcdVersion
:
getSuggestedEtcdVersion
(
previousBranchLatestVersionStr
),
EtcdVersion
:
getSuggestedEtcdVersion
(
previousBranchLatestVersionStr
),
...
@@ -250,6 +262,7 @@ func GetAvailableUpgrades(versionGetterImpl VersionGetter, experimentalUpgradesA
...
@@ -250,6 +262,7 @@ func GetAvailableUpgrades(versionGetterImpl VersionGetter, experimentalUpgradesA
Before
:
beforeState
,
Before
:
beforeState
,
After
:
ClusterState
{
After
:
ClusterState
{
KubeVersion
:
unstableKubeVersion
,
KubeVersion
:
unstableKubeVersion
,
DNSType
:
ActiveDNSAddon
(
featureGates
),
DNSVersion
:
unstableKubeDNSVersion
,
DNSVersion
:
unstableKubeDNSVersion
,
KubeadmVersion
:
unstableKubeVersion
,
KubeadmVersion
:
unstableKubeVersion
,
EtcdVersion
:
getSuggestedEtcdVersion
(
unstableKubeVersion
),
EtcdVersion
:
getSuggestedEtcdVersion
(
unstableKubeVersion
),
...
...
cmd/kubeadm/app/phases/upgrade/compute_test.go
View file @
08ba47b2
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment