From 0c7663510d1e0235e65caf5ead2cb757a03dbd7d Mon Sep 17 00:00:00 2001 From: xiangpengzhao Date: Sun, 19 Nov 2017 16:54:34 +0800 Subject: [PATCH 1/3] KubeletConfiguration.BaseConfig.ClusterDNS defaults to the tenth address of MasterConfiguration.Networking.ServiceSubnet --- cmd/kubeadm/app/apis/kubeadm/v1alpha1/defaults.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/cmd/kubeadm/app/apis/kubeadm/v1alpha1/defaults.go b/cmd/kubeadm/app/apis/kubeadm/v1alpha1/defaults.go index 19887296b4b..e1c6987840e 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1alpha1/defaults.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1alpha1/defaults.go @@ -23,6 +23,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/kubernetes/cmd/kubeadm/app/constants" + "k8s.io/kubernetes/cmd/kubeadm/app/phases/addons/dns" kubeletconfigv1alpha1 "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1alpha1" utilpointer "k8s.io/kubernetes/pkg/util/pointer" ) @@ -162,7 +163,12 @@ func SetDefaults_KubeletConfiguration(obj *MasterConfiguration) { obj.KubeletConfiguration.BaseConfig.AllowPrivileged = utilpointer.BoolPtr(true) } if obj.KubeletConfiguration.BaseConfig.ClusterDNS == nil { - obj.KubeletConfiguration.BaseConfig.ClusterDNS = []string{DefaultClusterDNSIP} + dnsIP, err := dns.GetDNSIP(obj.Networking.ServiceSubnet) + if err != nil { + obj.KubeletConfiguration.BaseConfig.ClusterDNS = []string{DefaultClusterDNSIP} + } else { + obj.KubeletConfiguration.BaseConfig.ClusterDNS = []string{dnsIP.String()} + } } if obj.KubeletConfiguration.BaseConfig.ClusterDomain == "" { obj.KubeletConfiguration.BaseConfig.ClusterDomain = DefaultServiceDNSDomain From 41281b727f4e2528abf869bcc66b1a0461ee779f Mon Sep 17 00:00:00 2001 From: xiangpengzhao Date: Sun, 19 Nov 2017 16:56:16 +0800 Subject: [PATCH 2/3] Auto generated BUILD files. --- cmd/kubeadm/app/constants/BUILD | 1 + cmd/kubeadm/app/phases/addons/dns/BUILD | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/kubeadm/app/constants/BUILD b/cmd/kubeadm/app/constants/BUILD index 89204d405e8..0d7706e3ad9 100644 --- a/cmd/kubeadm/app/constants/BUILD +++ b/cmd/kubeadm/app/constants/BUILD @@ -11,6 +11,7 @@ go_library( srcs = ["constants.go"], importpath = "k8s.io/kubernetes/cmd/kubeadm/app/constants", deps = [ + "//pkg/registry/core/service/ipallocator:go_default_library", "//pkg/util/version:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library", ], diff --git a/cmd/kubeadm/app/phases/addons/dns/BUILD b/cmd/kubeadm/app/phases/addons/dns/BUILD index ba7086d154f..bb0f1d4f5df 100644 --- a/cmd/kubeadm/app/phases/addons/dns/BUILD +++ b/cmd/kubeadm/app/phases/addons/dns/BUILD @@ -41,7 +41,6 @@ go_library( "//cmd/kubeadm/app/util:go_default_library", "//cmd/kubeadm/app/util/apiclient:go_default_library", "//pkg/api/legacyscheme:go_default_library", - "//pkg/registry/core/service/ipallocator:go_default_library", "//pkg/util/version:go_default_library", "//vendor/k8s.io/api/apps/v1beta2:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library", From 81c72826ef7340e8ea64c874371afd394e902cde Mon Sep 17 00:00:00 2001 From: xiangpengzhao Date: Sun, 19 Nov 2017 17:46:29 +0800 Subject: [PATCH 3/3] Move GetDNSIP to a "higher level" pkg. --- .../app/apis/kubeadm/v1alpha1/defaults.go | 3 +-- cmd/kubeadm/app/constants/constants.go | 19 +++++++++++++++ cmd/kubeadm/app/phases/addons/dns/dns.go | 24 ++----------------- cmd/kubeadm/app/phases/addons/dns/dns_test.go | 3 ++- 4 files changed, 24 insertions(+), 25 deletions(-) diff --git a/cmd/kubeadm/app/apis/kubeadm/v1alpha1/defaults.go b/cmd/kubeadm/app/apis/kubeadm/v1alpha1/defaults.go index e1c6987840e..f0020b84643 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1alpha1/defaults.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1alpha1/defaults.go @@ -23,7 +23,6 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/kubernetes/cmd/kubeadm/app/constants" - "k8s.io/kubernetes/cmd/kubeadm/app/phases/addons/dns" kubeletconfigv1alpha1 "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1alpha1" utilpointer "k8s.io/kubernetes/pkg/util/pointer" ) @@ -163,7 +162,7 @@ func SetDefaults_KubeletConfiguration(obj *MasterConfiguration) { obj.KubeletConfiguration.BaseConfig.AllowPrivileged = utilpointer.BoolPtr(true) } if obj.KubeletConfiguration.BaseConfig.ClusterDNS == nil { - dnsIP, err := dns.GetDNSIP(obj.Networking.ServiceSubnet) + dnsIP, err := constants.GetDNSIP(obj.Networking.ServiceSubnet) if err != nil { obj.KubeletConfiguration.BaseConfig.ClusterDNS = []string{DefaultClusterDNSIP} } else { diff --git a/cmd/kubeadm/app/constants/constants.go b/cmd/kubeadm/app/constants/constants.go index c465d8aa36e..e3fc44601a3 100644 --- a/cmd/kubeadm/app/constants/constants.go +++ b/cmd/kubeadm/app/constants/constants.go @@ -19,11 +19,13 @@ package constants import ( "fmt" "io/ioutil" + "net" "os" "path/filepath" "time" "k8s.io/api/core/v1" + "k8s.io/kubernetes/pkg/registry/core/service/ipallocator" "k8s.io/kubernetes/pkg/util/version" ) @@ -256,3 +258,20 @@ func CreateTempDirForKubeadm(dirName string) (string, error) { } return tempDir, nil } + +// GetDNSIP returns a dnsIP, which is 10th IP in svcSubnet CIDR range +func GetDNSIP(svcSubnet string) (net.IP, error) { + // Get the service subnet CIDR + _, svcSubnetCIDR, err := net.ParseCIDR(svcSubnet) + if err != nil { + return nil, fmt.Errorf("couldn't parse service subnet CIDR %q: %v", svcSubnet, err) + } + + // Selects the 10th IP in service subnet CIDR range as dnsIP + dnsIP, err := ipallocator.GetIndexedIP(svcSubnetCIDR, 10) + if err != nil { + return nil, fmt.Errorf("unable to get tenth IP address from service subnet CIDR %s: %v", svcSubnetCIDR.String(), err) + } + + return dnsIP, nil +} diff --git a/cmd/kubeadm/app/phases/addons/dns/dns.go b/cmd/kubeadm/app/phases/addons/dns/dns.go index 314b7e0da1a..b1866e584fa 100644 --- a/cmd/kubeadm/app/phases/addons/dns/dns.go +++ b/cmd/kubeadm/app/phases/addons/dns/dns.go @@ -18,7 +18,6 @@ package dns import ( "fmt" - "net" "runtime" apps "k8s.io/api/apps/v1beta2" @@ -34,7 +33,6 @@ import ( kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util" "k8s.io/kubernetes/cmd/kubeadm/app/util/apiclient" "k8s.io/kubernetes/pkg/api/legacyscheme" - "k8s.io/kubernetes/pkg/registry/core/service/ipallocator" "k8s.io/kubernetes/pkg/util/version" ) @@ -60,7 +58,7 @@ func kubeDNSAddon(cfg *kubeadmapi.MasterConfiguration, client clientset.Interfac return err } - dnsip, err := GetDNSIP(cfg.Networking.ServiceSubnet) + dnsip, err := kubeadmconstants.GetDNSIP(cfg.Networking.ServiceSubnet) if err != nil { return err } @@ -149,7 +147,7 @@ func coreDNSAddon(cfg *kubeadmapi.MasterConfiguration, client clientset.Interfac return fmt.Errorf("error when parsing CoreDNS configMap template: %v", err) } - dnsip, err := GetDNSIP(cfg.Networking.ServiceSubnet) + dnsip, err := kubeadmconstants.GetDNSIP(cfg.Networking.ServiceSubnet) if err != nil { return err } @@ -244,21 +242,3 @@ func createDNSService(dnsService *v1.Service, serviceBytes []byte, client client } return nil } - -// GetDNSIP returns a dnsIP, which is 10th IP in svcSubnet CIDR range -func GetDNSIP(svcSubnet string) (net.IP, error) { - - // Get the service subnet CIDR - _, svcSubnetCIDR, err := net.ParseCIDR(svcSubnet) - if err != nil { - return nil, fmt.Errorf("couldn't parse service subnet CIDR %q: %v", svcSubnet, err) - } - - // Selects the 10th IP in service subnet CIDR range as dnsIP - dnsIP, err := ipallocator.GetIndexedIP(svcSubnetCIDR, 10) - if err != nil { - return nil, fmt.Errorf("unable to get tenth IP address from service subnet CIDR %s: %v", svcSubnetCIDR.String(), err) - } - - return dnsIP, nil -} diff --git a/cmd/kubeadm/app/phases/addons/dns/dns_test.go b/cmd/kubeadm/app/phases/addons/dns/dns_test.go index 92341e26ef4..40c0043436e 100644 --- a/cmd/kubeadm/app/phases/addons/dns/dns_test.go +++ b/cmd/kubeadm/app/phases/addons/dns/dns_test.go @@ -23,6 +23,7 @@ import ( "k8s.io/apimachinery/pkg/runtime" clientsetfake "k8s.io/client-go/kubernetes/fake" core "k8s.io/client-go/testing" + kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants" kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util" api "k8s.io/kubernetes/pkg/apis/core" ) @@ -159,7 +160,7 @@ func TestGetDNSIP(t *testing.T) { }, } for _, rt := range tests { - dnsIP, err := GetDNSIP(rt.svcSubnet) + dnsIP, err := kubeadmconstants.GetDNSIP(rt.svcSubnet) if err != nil { t.Fatalf("couldn't get dnsIP : %v", err) }