Merge pull request #33379 from grosskur/kube-dns-bind-address

Automatic merge from submit-queue

kube-dns: Add --dns-bind-address flag

Currently, `kube-dns` always binds to `0.0.0.0` when starting the SkyDNS server. Sometimes it's useful to have it bind to a different address for testing. So add a new `--dns-bind-address` flag that can be used to configure this (default is `0.0.0.0`).
This commit is contained in:
Kubernetes Submit Queue 2016-10-13 06:26:27 -07:00 committed by GitHub
commit 6a2f0932e4
3 changed files with 12 additions and 6 deletions

View File

@ -34,6 +34,7 @@ type KubeDNSConfig struct {
KubeConfigFile string KubeConfigFile string
KubeMasterURL string KubeMasterURL string
HealthzPort int HealthzPort int
DNSBindAddress string
DNSPort int DNSPort int
// Federations maps federation names to their registered domain names. // Federations maps federation names to their registered domain names.
Federations map[string]string Federations map[string]string
@ -45,6 +46,7 @@ func NewKubeDNSConfig() *KubeDNSConfig {
KubeConfigFile: "", KubeConfigFile: "",
KubeMasterURL: "", KubeMasterURL: "",
HealthzPort: 8081, HealthzPort: 8081,
DNSBindAddress: "0.0.0.0",
DNSPort: 53, DNSPort: 53,
Federations: make(map[string]string), Federations: make(map[string]string),
} }
@ -143,6 +145,7 @@ func (s *KubeDNSConfig) AddFlags(fs *pflag.FlagSet) {
fs.StringVar(&s.KubeConfigFile, "kubecfg-file", s.KubeConfigFile, "Location of kubecfg file for access to kubernetes master service; --kube-master-url overrides the URL part of this; if neither this nor --kube-master-url are provided, defaults to service account tokens") fs.StringVar(&s.KubeConfigFile, "kubecfg-file", s.KubeConfigFile, "Location of kubecfg file for access to kubernetes master service; --kube-master-url overrides the URL part of this; if neither this nor --kube-master-url are provided, defaults to service account tokens")
fs.Var(kubeMasterURLVar{&s.KubeMasterURL}, "kube-master-url", "URL to reach kubernetes master. Env variables in this flag will be expanded.") fs.Var(kubeMasterURLVar{&s.KubeMasterURL}, "kube-master-url", "URL to reach kubernetes master. Env variables in this flag will be expanded.")
fs.IntVar(&s.HealthzPort, "healthz-port", s.HealthzPort, "port on which to serve a kube-dns HTTP readiness probe.") fs.IntVar(&s.HealthzPort, "healthz-port", s.HealthzPort, "port on which to serve a kube-dns HTTP readiness probe.")
fs.StringVar(&s.DNSBindAddress, "dns-bind-address", s.DNSBindAddress, "address on which to serve DNS requests.")
fs.IntVar(&s.DNSPort, "dns-port", s.DNSPort, "port on which to serve DNS requests.") fs.IntVar(&s.DNSPort, "dns-port", s.DNSPort, "port on which to serve DNS requests.")
fs.Var(federationsVar{s.Federations}, "federations", "a comma separated list of the federation names and their corresponding domain names to which this cluster belongs. Example: \"myfederation1=example.com,myfederation2=example2.com,myfederation3=example.com\"") fs.Var(federationsVar{s.Federations}, "federations", "a comma separated list of the federation names and their corresponding domain names to which this cluster belongs. Example: \"myfederation1=example.com,myfederation2=example2.com,myfederation3=example.com\"")
} }

View File

@ -41,6 +41,7 @@ type KubeDNSServer struct {
// DNS domain name. // DNS domain name.
domain string domain string
healthzPort int healthzPort int
dnsBindAddress string
dnsPort int dnsPort int
kd *kdns.KubeDNS kd *kdns.KubeDNS
} }
@ -55,6 +56,7 @@ func NewKubeDNSServerDefault(config *options.KubeDNSConfig) *KubeDNSServer {
glog.Fatalf("Failed to create a kubernetes client: %v", err) glog.Fatalf("Failed to create a kubernetes client: %v", err)
} }
ks.healthzPort = config.HealthzPort ks.healthzPort = config.HealthzPort
ks.dnsBindAddress = config.DNSBindAddress
ks.dnsPort = config.DNSPort ks.dnsPort = config.DNSPort
ks.kd, err = kdns.NewKubeDNS(kubeClient, config.ClusterDomain, config.Federations) ks.kd, err = kdns.NewKubeDNS(kubeClient, config.ClusterDomain, config.Federations)
if err != nil { if err != nil {
@ -135,8 +137,8 @@ func setupSignalHandlers() {
} }
func (d *KubeDNSServer) startSkyDNSServer() { func (d *KubeDNSServer) startSkyDNSServer() {
glog.Infof("Starting SkyDNS server. Listening on port:%d", d.dnsPort) glog.Infof("Starting SkyDNS server. Listening on %s:%d", d.dnsBindAddress, d.dnsPort)
skydnsConfig := &server.Config{Domain: d.domain, DnsAddr: fmt.Sprintf("0.0.0.0:%d", d.dnsPort)} skydnsConfig := &server.Config{Domain: d.domain, DnsAddr: fmt.Sprintf("%s:%d", d.dnsBindAddress, d.dnsPort)}
server.SetDefaults(skydnsConfig) server.SetDefaults(skydnsConfig)
s := server.New(d.kd, skydnsConfig) s := server.New(d.kd, skydnsConfig)
if err := metrics.Metrics(); err != nil { if err := metrics.Metrics(); err != nil {

View File

@ -128,6 +128,7 @@ deserialization-cache-size
dest-file dest-file
disable-filter disable-filter
disable-kubenet disable-kubenet
dns-bind-address
dns-port dns-port
dns-provider dns-provider
dns-provider-config dns-provider-config