Commit d9557d4e authored by Bowei Du's avatar Bowei Du

kube-dns logging cleanup

--v=2 is low noise (record changes), can be default --v=3 will shows per request logging Note: due to the code path with which we integrate with skydns, we don't see non-PILLAR_DOMAIN requests, so these will never be logged.
parent 65e421b1
...@@ -20,8 +20,10 @@ go_binary( ...@@ -20,8 +20,10 @@ go_binary(
"//pkg/client/metrics/prometheus:go_default_library", "//pkg/client/metrics/prometheus:go_default_library",
"//pkg/util/flag:go_default_library", "//pkg/util/flag:go_default_library",
"//pkg/util/logs:go_default_library", "//pkg/util/logs:go_default_library",
"//pkg/version:go_default_library",
"//pkg/version/prometheus:go_default_library", "//pkg/version/prometheus:go_default_library",
"//pkg/version/verflag:go_default_library", "//pkg/version/verflag:go_default_library",
"//vendor:github.com/golang/glog",
"//vendor:github.com/spf13/pflag", "//vendor:github.com/spf13/pflag",
], ],
) )
...@@ -21,7 +21,6 @@ go_library( ...@@ -21,7 +21,6 @@ go_library(
"//pkg/client/restclient:go_default_library", "//pkg/client/restclient:go_default_library",
"//pkg/client/unversioned/clientcmd:go_default_library", "//pkg/client/unversioned/clientcmd:go_default_library",
"//pkg/dns:go_default_library", "//pkg/dns:go_default_library",
"//pkg/version:go_default_library",
"//vendor:github.com/golang/glog", "//vendor:github.com/golang/glog",
"//vendor:github.com/skynetservices/skydns/metrics", "//vendor:github.com/skynetservices/skydns/metrics",
"//vendor:github.com/skynetservices/skydns/server", "//vendor:github.com/skynetservices/skydns/server",
......
...@@ -34,7 +34,6 @@ import ( ...@@ -34,7 +34,6 @@ import (
"k8s.io/kubernetes/pkg/client/restclient" "k8s.io/kubernetes/pkg/client/restclient"
kclientcmd "k8s.io/kubernetes/pkg/client/unversioned/clientcmd" kclientcmd "k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
kdns "k8s.io/kubernetes/pkg/dns" kdns "k8s.io/kubernetes/pkg/dns"
"k8s.io/kubernetes/pkg/version"
) )
type KubeDNSServer struct { type KubeDNSServer struct {
...@@ -47,9 +46,7 @@ type KubeDNSServer struct { ...@@ -47,9 +46,7 @@ type KubeDNSServer struct {
} }
func NewKubeDNSServerDefault(config *options.KubeDNSConfig) *KubeDNSServer { func NewKubeDNSServerDefault(config *options.KubeDNSConfig) *KubeDNSServer {
ks := KubeDNSServer{ ks := KubeDNSServer{domain: config.ClusterDomain}
domain: config.ClusterDomain,
}
kubeClient, err := newKubeClient(config) kubeClient, err := newKubeClient(config)
if err != nil { if err != nil {
...@@ -93,28 +90,32 @@ func newKubeClient(dnsConfig *options.KubeDNSConfig) (clientset.Interface, error ...@@ -93,28 +90,32 @@ func newKubeClient(dnsConfig *options.KubeDNSConfig) (clientset.Interface, error
} }
} }
glog.Infof("Using %s for kubernetes master, kubernetes API: %v", config.Host, config.GroupVersion) glog.V(0).Infof("Using %v for kubernetes master, kubernetes API: %v",
config.Host, config.GroupVersion)
return clientset.NewForConfig(config) return clientset.NewForConfig(config)
} }
func (server *KubeDNSServer) Run() { func (server *KubeDNSServer) Run() {
glog.Infof("%+v", version.Get())
pflag.VisitAll(func(flag *pflag.Flag) { pflag.VisitAll(func(flag *pflag.Flag) {
glog.Infof("FLAG: --%s=%q", flag.Name, flag.Value) glog.V(0).Infof("FLAG: --%s=%q", flag.Name, flag.Value)
}) })
setupSignalHandlers() setupSignalHandlers()
server.startSkyDNSServer() server.startSkyDNSServer()
server.kd.Start() server.kd.Start()
server.setupHealthzHandlers() server.setupHandlers()
glog.Infof("Setting up Healthz Handler(/readiness, /cache) on port :%d", server.healthzPort)
glog.V(0).Infof("Status HTTP port %v", server.healthzPort)
glog.Fatal(http.ListenAndServe(fmt.Sprintf(":%d", server.healthzPort), nil)) glog.Fatal(http.ListenAndServe(fmt.Sprintf(":%d", server.healthzPort), nil))
} }
// setupHealthzHandlers sets up a readiness and liveness endpoint for kube2sky. // setupHealthzHandlers sets up a readiness and liveness endpoint for kube2sky.
func (server *KubeDNSServer) setupHealthzHandlers() { func (server *KubeDNSServer) setupHandlers() {
glog.V(0).Infof("Setting up Healthz Handler (/readiness)")
http.HandleFunc("/readiness", func(w http.ResponseWriter, req *http.Request) { http.HandleFunc("/readiness", func(w http.ResponseWriter, req *http.Request) {
fmt.Fprintf(w, "ok\n") fmt.Fprintf(w, "ok\n")
}) })
glog.V(0).Infof("Setting up cache handler (/cache)")
http.HandleFunc("/cache", func(w http.ResponseWriter, req *http.Request) { http.HandleFunc("/cache", func(w http.ResponseWriter, req *http.Request) {
serializedJSON, err := server.kd.GetCacheAsJSON() serializedJSON, err := server.kd.GetCacheAsJSON()
if err == nil { if err == nil {
...@@ -126,25 +127,32 @@ func (server *KubeDNSServer) setupHealthzHandlers() { ...@@ -126,25 +127,32 @@ func (server *KubeDNSServer) setupHealthzHandlers() {
}) })
} }
// setupSignalHandlers runs a goroutine that waits on SIGINT or SIGTERM and logs it // setupSignalHandlers installs signal handler to ignore SIGINT and
// program will be terminated by SIGKILL when grace period ends. // SIGTERM. This daemon will be killed by SIGKILL after the grace
// period to allow for some manner of graceful shutdown.
func setupSignalHandlers() { func setupSignalHandlers() {
sigChan := make(chan os.Signal) sigChan := make(chan os.Signal)
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM) signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
go func() { go func() {
glog.Infof("Received signal: %s, will exit when the grace period ends", <-sigChan) glog.V(0).Infof("Ignoring signal %v (can only be terminated by SIGKILL)", <-sigChan)
}() }()
} }
func (d *KubeDNSServer) startSkyDNSServer() { func (d *KubeDNSServer) startSkyDNSServer() {
glog.Infof("Starting SkyDNS server. Listening on %s:%d", d.dnsBindAddress, d.dnsPort) glog.V(0).Infof("Starting SkyDNS server (%v:%v)", d.dnsBindAddress, d.dnsPort)
skydnsConfig := &server.Config{Domain: d.domain, DnsAddr: fmt.Sprintf("%s:%d", d.dnsBindAddress, 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 {
glog.Fatalf("skydns: %s", err) glog.Fatalf("Skydns metrics error: %s", err)
} else if metrics.Port != "" {
glog.V(0).Infof("Skydns metrics enabled (%v:%v)", metrics.Path, metrics.Port)
} else {
glog.V(0).Infof("Skydns metrics not enabled")
} }
glog.Infof("skydns: metrics enabled on : %s:%s", metrics.Path, metrics.Port)
go s.Run() go s.Run()
} }
...@@ -17,12 +17,14 @@ limitations under the License. ...@@ -17,12 +17,14 @@ limitations under the License.
package main package main
import ( import (
"github.com/golang/glog"
"github.com/spf13/pflag" "github.com/spf13/pflag"
"k8s.io/kubernetes/cmd/kube-dns/app" "k8s.io/kubernetes/cmd/kube-dns/app"
"k8s.io/kubernetes/cmd/kube-dns/app/options" "k8s.io/kubernetes/cmd/kube-dns/app/options"
_ "k8s.io/kubernetes/pkg/client/metrics/prometheus" // for client metric registration _ "k8s.io/kubernetes/pkg/client/metrics/prometheus" // for client metric registration
"k8s.io/kubernetes/pkg/util/flag" "k8s.io/kubernetes/pkg/util/flag"
"k8s.io/kubernetes/pkg/util/logs" "k8s.io/kubernetes/pkg/util/logs"
"k8s.io/kubernetes/pkg/version"
_ "k8s.io/kubernetes/pkg/version/prometheus" // for version metric registration _ "k8s.io/kubernetes/pkg/version/prometheus" // for version metric registration
"k8s.io/kubernetes/pkg/version/verflag" "k8s.io/kubernetes/pkg/version/verflag"
) )
...@@ -36,6 +38,9 @@ func main() { ...@@ -36,6 +38,9 @@ func main() {
defer logs.FlushLogs() defer logs.FlushLogs()
verflag.PrintAndExitIfRequested() verflag.PrintAndExitIfRequested()
glog.V(0).Infof("version: %+v", version.Get())
server := app.NewKubeDNSServerDefault(config) server := app.NewKubeDNSServerDefault(config)
server.Run() server.Run()
} }
...@@ -15,7 +15,6 @@ go_library( ...@@ -15,7 +15,6 @@ go_library(
srcs = [ srcs = [
"dns.go", "dns.go",
"doc.go", "doc.go",
"treecache.go",
], ],
tags = ["automanaged"], tags = ["automanaged"],
deps = [ deps = [
...@@ -24,6 +23,7 @@ go_library( ...@@ -24,6 +23,7 @@ go_library(
"//pkg/api/unversioned:go_default_library", "//pkg/api/unversioned:go_default_library",
"//pkg/client/cache:go_default_library", "//pkg/client/cache:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/dns/treecache:go_default_library",
"//pkg/dns/util:go_default_library", "//pkg/dns/util:go_default_library",
"//pkg/runtime:go_default_library", "//pkg/runtime:go_default_library",
"//pkg/util/validation:go_default_library", "//pkg/util/validation:go_default_library",
...@@ -47,6 +47,7 @@ go_test( ...@@ -47,6 +47,7 @@ go_test(
"//pkg/api/unversioned:go_default_library", "//pkg/api/unversioned:go_default_library",
"//pkg/client/cache:go_default_library", "//pkg/client/cache:go_default_library",
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library", "//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
"//pkg/dns/treecache:go_default_library",
"//pkg/dns/util:go_default_library", "//pkg/dns/util:go_default_library",
"//pkg/util/sets:go_default_library", "//pkg/util/sets:go_default_library",
"//vendor:github.com/coreos/etcd/client", "//vendor:github.com/coreos/etcd/client",
......
...@@ -63,7 +63,8 @@ func ReverseArray(arr []string) []string { ...@@ -63,7 +63,8 @@ func ReverseArray(arr []string) []string {
func GetSkyMsg(ip string, port int) (*msg.Service, string) { func GetSkyMsg(ip string, port int) (*msg.Service, string) {
msg := NewServiceRecord(ip, port) msg := NewServiceRecord(ip, port)
hash := HashServiceRecord(msg) hash := HashServiceRecord(msg)
glog.V(2).Infof("DNS Record:%s, hash:%s", fmt.Sprintf("%v", msg), hash) glog.V(5).Infof("Constructed new DNS record: %s, hash:%s",
fmt.Sprintf("%v", msg), hash)
return msg, fmt.Sprintf("%x", hash) return msg, fmt.Sprintf("%x", hash)
} }
......
...@@ -593,6 +593,7 @@ k8s.io/kubernetes/pkg/credentialprovider,justinsb,1 ...@@ -593,6 +593,7 @@ k8s.io/kubernetes/pkg/credentialprovider,justinsb,1
k8s.io/kubernetes/pkg/credentialprovider/aws,zmerlynn,1 k8s.io/kubernetes/pkg/credentialprovider/aws,zmerlynn,1
k8s.io/kubernetes/pkg/credentialprovider/gcp,mml,1 k8s.io/kubernetes/pkg/credentialprovider/gcp,mml,1
k8s.io/kubernetes/pkg/dns,jdef,1 k8s.io/kubernetes/pkg/dns,jdef,1
k8s.io/kubernetes/pkg/dns/treecache,bowei,0
k8s.io/kubernetes/pkg/fieldpath,childsb,1 k8s.io/kubernetes/pkg/fieldpath,childsb,1
k8s.io/kubernetes/pkg/fields,jsafrane,1 k8s.io/kubernetes/pkg/fields,jsafrane,1
k8s.io/kubernetes/pkg/genericapiserver,nikhiljindal,0 k8s.io/kubernetes/pkg/genericapiserver,nikhiljindal,0
......
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