in kubernetes/util.go [142:176]
func DiscoverKubernetesNode(log *logp.Logger, nd *DiscoverKubernetesNodeParams) (string, error) {
ctx := context.TODO()
// Discover node by configuration file (NODE) if set
if nd.ConfigHost != "" {
log.Infof("kubernetes: Using node %s provided in the config", nd.ConfigHost)
return nd.ConfigHost, nil
}
// Discover node by serviceaccount namespace and pod's hostname in case Beats is running in cluster
if nd.IsInCluster {
node, err := discoverInCluster(nd, ctx)
if err == nil {
log.Infof("kubernetes: Node %s discovered by in cluster pod node query", node)
return node, nil
}
log.Debug(err)
}
// use environment variable NODE_NAME
node := os.Getenv("NODE_NAME")
if node != "" {
log.Infof("kubernetes: Node %s discovered by NODE_NAME environment variable", node)
return node, nil
}
log.Debug(errors.New("NODE_NAME environment variable is not set"))
// try discover node by machine id
node, err := discoverByMachineID(nd, ctx)
if err == nil {
log.Infof("kubernetes: Node %s discovered by machine-id matching", node)
return node, nil
}
log.Debug(err)
return "", errors.New("kubernetes: Node could not be discovered with any known method. Consider setting env var NODE_NAME")
}