func DiscoverKubernetesNode()

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")
}