add -hostname-override

This commit is contained in:
Andy Xie
2017-01-18 23:45:30 +08:00
parent 1202ed0c3e
commit 7302c70143
4 changed files with 40 additions and 22 deletions
+35 -1
View File
@@ -26,6 +26,7 @@ import (
"k8s.io/node-problem-detector/pkg/version"
"github.com/golang/glog"
"fmt"
)
// TODO: Move flags to options directory.
@@ -33,6 +34,7 @@ var (
kernelMonitorConfigPath = flag.String("kernel-monitor", "/config/kernel-monitor.json", "The path to the kernel monitor config file")
apiServerOverride = flag.String("apiserver-override", "", "Custom URI used to connect to Kubernetes ApiServer")
printVersion = flag.Bool("version", false, "Print version information and quit")
hostnameOverride = flag.String("hostname-override", "", "Custom node name used to override hostname")
)
func validateCmdParams() {
@@ -41,6 +43,36 @@ func validateCmdParams() {
}
}
func getNodeNameOrDie() string {
var nodeName string
// Check hostname override first for customized node name.
if *hostnameOverride != "" {
return *hostnameOverride
}
// Get node name from environment variable NODE_NAME
// By default, assume that the NODE_NAME env should have been set with
// downward api or user defined exported environment variable. We prefer it because sometimes
// the hostname returned by os.Hostname is not right because:
// 1. User may override the hostname.
// 2. For some cloud providers, os.Hostname is different from the real hostname.
nodeName = os.Getenv("NODE_NAME")
if nodeName != "" {
return nodeName
}
// For backward compatibility. If the env is not set, get the hostname
// from os.Hostname(). This may not work for all configurations and
// environments.
nodeName, err := os.Hostname()
if err != nil {
panic(fmt.Sprintf("Failed to get host name: %v", err))
}
return nodeName
}
func main() {
flag.Parse()
validateCmdParams()
@@ -50,7 +82,9 @@ func main() {
os.Exit(0)
}
nodeName := getNodeNameOrDie()
k := kernelmonitor.NewKernelMonitorOrDie(*kernelMonitorConfigPath)
p := problemdetector.NewProblemDetector(k, *apiServerOverride)
p := problemdetector.NewProblemDetector(k, *apiServerOverride, nodeName)
p.Run()
}