Skip to content

Commit

Permalink
kubeadm: change in logic of getDNSIP
Browse files Browse the repository at this point in the history
  • Loading branch information
madhukar32 committed Sep 25, 2017
1 parent 8036b66 commit 63655b4
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 12 deletions.
1 change: 1 addition & 0 deletions cmd/kubeadm/app/cmd/phases/addons.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ func getAddonsSubCommands() []*cobra.Command {

if properties.use == "all" || properties.use == "kube-dns" {
cmd.Flags().StringVar(&cfg.Networking.DNSDomain, "service-dns-domain", cfg.Networking.DNSDomain, `Use alternative domain for services, e.g. "myorg.internal.`)
cmd.Flags().StringVar(&cfg.Networking.ServiceSubnet, "service-cidr", cfg.Networking.ServiceSubnet, `Use alternative range of IP address for service VIPs`)
}
subCmds = append(subCmds, cmd)
}
Expand Down
2 changes: 2 additions & 0 deletions cmd/kubeadm/app/cmd/phases/addons_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ func TestAddonsSubCommandsHasFlags(t *testing.T) {
"apiserver-bind-port",
"pod-network-cidr",
"service-dns-domain",
"service-cidr",
},
},
{
Expand All @@ -61,6 +62,7 @@ func TestAddonsSubCommandsHasFlags(t *testing.T) {
command: "kube-dns",
additionalFlags: []string{
"service-dns-domain",
"service-cidr",
},
},
}
Expand Down
1 change: 1 addition & 0 deletions cmd/kubeadm/app/phases/addons/dns/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ go_library(
"//cmd/kubeadm/app/util:go_default_library",
"//cmd/kubeadm/app/util/apiclient:go_default_library",
"//pkg/api: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",
Expand Down
24 changes: 12 additions & 12 deletions cmd/kubeadm/app/phases/addons/dns/dns.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import (
kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util"
"k8s.io/kubernetes/cmd/kubeadm/app/util/apiclient"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/registry/core/service/ipallocator"
"k8s.io/kubernetes/pkg/util/version"
)

Expand Down Expand Up @@ -65,7 +66,7 @@ func EnsureDNSAddon(cfg *kubeadmapi.MasterConfiguration, client clientset.Interf
return fmt.Errorf("error when parsing kube-dns deployment template: %v", err)
}

dnsip, err := getDNSIP(client)
dnsip, err := getDNSIP(cfg)
if err != nil {
return err
}
Expand Down Expand Up @@ -127,21 +128,20 @@ func createKubeDNSAddon(deploymentBytes, serviceBytes []byte, client clientset.I
return nil
}

// getDNSIP fetches the kubernetes service's ClusterIP and appends a "0" to it in order to get the DNS IP
func getDNSIP(client clientset.Interface) (net.IP, error) {
k8ssvc, err := client.CoreV1().Services(metav1.NamespaceDefault).Get("kubernetes", metav1.GetOptions{})
// getDNSIP returns a dnsIP, which is 10th IP in svcSubnet CIDR range
func getDNSIP(cfg *kubeadmapi.MasterConfiguration) (net.IP, error) {

// Get the service subnet CIDR
_, svcSubnet, err := net.ParseCIDR(cfg.Networking.ServiceSubnet)
if err != nil {
return nil, fmt.Errorf("couldn't fetch information about the kubernetes service: %v", err)
return nil, fmt.Errorf("couldn't parse service subnet CIDR %q: %v", cfg.Networking.ServiceSubnet, err)
}

if len(k8ssvc.Spec.ClusterIP) == 0 {
return nil, fmt.Errorf("couldn't fetch a valid clusterIP from the kubernetes service")
// Selects the 10th IP in service subnet CIDR range as dnsIP
dnsIP, err := ipallocator.GetIndexedIP(svcSubnet, 10)
if err != nil {
return nil, fmt.Errorf("unable to get tenth IP address from service subnet CIDR %s: %v", svcSubnet.String(), err)
}

// Build an IP by taking the kubernetes service's clusterIP and appending a "0" and checking that it's valid
dnsIP := net.ParseIP(fmt.Sprintf("%s0", k8ssvc.Spec.ClusterIP))
if dnsIP == nil {
return nil, fmt.Errorf("could not parse dns ip %q: %v", dnsIP, err)
}
return dnsIP, nil
}

0 comments on commit 63655b4

Please sign in to comment.