Commit 205cbf47 authored by xiangpengzhao's avatar xiangpengzhao

Update DNS version in kubeadm of 1.10 cycle.

parent f5f6f3e7
...@@ -75,7 +75,7 @@ func kubeDNSAddon(cfg *kubeadmapi.MasterConfiguration, client clientset.Interfac ...@@ -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 ...@@ -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) { ...@@ -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: ...@@ -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,46 +22,24 @@ import ( ...@@ -22,46 +22,24 @@ import (
) )
const ( const (
kubeDNSv180AndAboveVersion = "1.14.5"
kubeDNSv190AndAboveVersion = "1.14.7" kubeDNSv190AndAboveVersion = "1.14.7"
coreDNSVersion = "1.0.1"
kubeDNSProbeSRV = "SRV"
kubeDNSProbeA = "A"
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
......
...@@ -25,45 +25,38 @@ import ( ...@@ -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",
expected: "1.14.5",
},
{
k8sVersion: "v1.7.2",
expected: "1.14.5",
},
{
k8sVersion: "v1.7.3",
expected: "1.14.5",
}, },
{ {
k8sVersion: "v1.8.0-alpha.2", k8sVersion: "v1.10.0",
expected: "1.14.5", dns: kubeadmconstants.KubeDNS,
expected: kubeDNSv190AndAboveVersion,
}, },
{ {
k8sVersion: "v1.8.0", k8sVersion: "v1.9.0",
expected: "1.14.5", dns: kubeadmconstants.CoreDNS,
expected: coreDNSVersion,
}, },
{ {
k8sVersion: "v1.9.0", k8sVersion: "v1.10.0",
expected: "1.14.7", 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) { ...@@ -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,
)
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment