Skip to content

Commit 27b3681

Browse files
author
Kubernetes Submit Queue
authored
Merge pull request kubernetes#56013 from xiangpengzhao/kubeadm-dns-ip
Automatic merge from submit-queue (batch tested with PRs 56008, 56013). 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>. KubeletConfiguration.BaseConfig.ClusterDNS defaults to the tenth address of MasterConfiguration.Networking.ServiceSubnet **What this PR does / why we need it**: If can get DNS IP from MasterConfiguration.Networking.ServiceSubnet, defaults to it. Otherwise defaults to DefaultClusterDNSIP **Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*: ref: kubernetes/kubeadm#28 (comment) **Special notes for your reviewer**: /cc @luxas **Release note**: ```release-note NONE ```
2 parents 3447dc0 + 81c7282 commit 27b3681

File tree

6 files changed

+30
-25
lines changed

6 files changed

+30
-25
lines changed

cmd/kubeadm/app/apis/kubeadm/v1alpha1/defaults.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,12 @@ func SetDefaults_KubeletConfiguration(obj *MasterConfiguration) {
162162
obj.KubeletConfiguration.BaseConfig.AllowPrivileged = utilpointer.BoolPtr(true)
163163
}
164164
if obj.KubeletConfiguration.BaseConfig.ClusterDNS == nil {
165-
obj.KubeletConfiguration.BaseConfig.ClusterDNS = []string{DefaultClusterDNSIP}
165+
dnsIP, err := constants.GetDNSIP(obj.Networking.ServiceSubnet)
166+
if err != nil {
167+
obj.KubeletConfiguration.BaseConfig.ClusterDNS = []string{DefaultClusterDNSIP}
168+
} else {
169+
obj.KubeletConfiguration.BaseConfig.ClusterDNS = []string{dnsIP.String()}
170+
}
166171
}
167172
if obj.KubeletConfiguration.BaseConfig.ClusterDomain == "" {
168173
obj.KubeletConfiguration.BaseConfig.ClusterDomain = DefaultServiceDNSDomain

cmd/kubeadm/app/constants/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ go_library(
1111
srcs = ["constants.go"],
1212
importpath = "k8s.io/kubernetes/cmd/kubeadm/app/constants",
1313
deps = [
14+
"//pkg/registry/core/service/ipallocator:go_default_library",
1415
"//pkg/util/version:go_default_library",
1516
"//vendor/k8s.io/api/core/v1:go_default_library",
1617
],

cmd/kubeadm/app/constants/constants.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,13 @@ package constants
1919
import (
2020
"fmt"
2121
"io/ioutil"
22+
"net"
2223
"os"
2324
"path/filepath"
2425
"time"
2526

2627
"k8s.io/api/core/v1"
28+
"k8s.io/kubernetes/pkg/registry/core/service/ipallocator"
2729
"k8s.io/kubernetes/pkg/util/version"
2830
)
2931

@@ -256,3 +258,20 @@ func CreateTempDirForKubeadm(dirName string) (string, error) {
256258
}
257259
return tempDir, nil
258260
}
261+
262+
// GetDNSIP returns a dnsIP, which is 10th IP in svcSubnet CIDR range
263+
func GetDNSIP(svcSubnet string) (net.IP, error) {
264+
// Get the service subnet CIDR
265+
_, svcSubnetCIDR, err := net.ParseCIDR(svcSubnet)
266+
if err != nil {
267+
return nil, fmt.Errorf("couldn't parse service subnet CIDR %q: %v", svcSubnet, err)
268+
}
269+
270+
// Selects the 10th IP in service subnet CIDR range as dnsIP
271+
dnsIP, err := ipallocator.GetIndexedIP(svcSubnetCIDR, 10)
272+
if err != nil {
273+
return nil, fmt.Errorf("unable to get tenth IP address from service subnet CIDR %s: %v", svcSubnetCIDR.String(), err)
274+
}
275+
276+
return dnsIP, nil
277+
}

cmd/kubeadm/app/phases/addons/dns/BUILD

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ go_library(
4141
"//cmd/kubeadm/app/util:go_default_library",
4242
"//cmd/kubeadm/app/util/apiclient:go_default_library",
4343
"//pkg/api/legacyscheme:go_default_library",
44-
"//pkg/registry/core/service/ipallocator:go_default_library",
4544
"//pkg/util/version:go_default_library",
4645
"//vendor/k8s.io/api/apps/v1beta2:go_default_library",
4746
"//vendor/k8s.io/api/core/v1:go_default_library",

cmd/kubeadm/app/phases/addons/dns/dns.go

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ package dns
1818

1919
import (
2020
"fmt"
21-
"net"
2221
"runtime"
2322

2423
apps "k8s.io/api/apps/v1beta2"
@@ -34,7 +33,6 @@ import (
3433
kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util"
3534
"k8s.io/kubernetes/cmd/kubeadm/app/util/apiclient"
3635
"k8s.io/kubernetes/pkg/api/legacyscheme"
37-
"k8s.io/kubernetes/pkg/registry/core/service/ipallocator"
3836
"k8s.io/kubernetes/pkg/util/version"
3937
)
4038

@@ -60,7 +58,7 @@ func kubeDNSAddon(cfg *kubeadmapi.MasterConfiguration, client clientset.Interfac
6058
return err
6159
}
6260

63-
dnsip, err := GetDNSIP(cfg.Networking.ServiceSubnet)
61+
dnsip, err := kubeadmconstants.GetDNSIP(cfg.Networking.ServiceSubnet)
6462
if err != nil {
6563
return err
6664
}
@@ -149,7 +147,7 @@ func coreDNSAddon(cfg *kubeadmapi.MasterConfiguration, client clientset.Interfac
149147
return fmt.Errorf("error when parsing CoreDNS configMap template: %v", err)
150148
}
151149

152-
dnsip, err := GetDNSIP(cfg.Networking.ServiceSubnet)
150+
dnsip, err := kubeadmconstants.GetDNSIP(cfg.Networking.ServiceSubnet)
153151
if err != nil {
154152
return err
155153
}
@@ -244,21 +242,3 @@ func createDNSService(dnsService *v1.Service, serviceBytes []byte, client client
244242
}
245243
return nil
246244
}
247-
248-
// GetDNSIP returns a dnsIP, which is 10th IP in svcSubnet CIDR range
249-
func GetDNSIP(svcSubnet string) (net.IP, error) {
250-
251-
// Get the service subnet CIDR
252-
_, svcSubnetCIDR, err := net.ParseCIDR(svcSubnet)
253-
if err != nil {
254-
return nil, fmt.Errorf("couldn't parse service subnet CIDR %q: %v", svcSubnet, err)
255-
}
256-
257-
// Selects the 10th IP in service subnet CIDR range as dnsIP
258-
dnsIP, err := ipallocator.GetIndexedIP(svcSubnetCIDR, 10)
259-
if err != nil {
260-
return nil, fmt.Errorf("unable to get tenth IP address from service subnet CIDR %s: %v", svcSubnetCIDR.String(), err)
261-
}
262-
263-
return dnsIP, nil
264-
}

cmd/kubeadm/app/phases/addons/dns/dns_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"k8s.io/apimachinery/pkg/runtime"
2424
clientsetfake "k8s.io/client-go/kubernetes/fake"
2525
core "k8s.io/client-go/testing"
26+
kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
2627
kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util"
2728
api "k8s.io/kubernetes/pkg/apis/core"
2829
)
@@ -159,7 +160,7 @@ func TestGetDNSIP(t *testing.T) {
159160
},
160161
}
161162
for _, rt := range tests {
162-
dnsIP, err := GetDNSIP(rt.svcSubnet)
163+
dnsIP, err := kubeadmconstants.GetDNSIP(rt.svcSubnet)
163164
if err != nil {
164165
t.Fatalf("couldn't get dnsIP : %v", err)
165166
}

0 commit comments

Comments
 (0)