mirror of
https://github.com/prometheus/prometheus.git
synced 2025-01-29 14:43:21 -08:00
Merge pull request #1440 from fabric8io/kubernetes-discovery
Kubernetes SD: Fix node IP discovery
This commit is contained in:
commit
671cc59de7
|
@ -265,7 +265,13 @@ func (kd *Discovery) updateNodesTargetGroup() *config.TargetGroup {
|
||||||
|
|
||||||
// Now let's loop through the nodes & add them to the target group with appropriate labels.
|
// Now let's loop through the nodes & add them to the target group with appropriate labels.
|
||||||
for nodeName, node := range kd.nodes {
|
for nodeName, node := range kd.nodes {
|
||||||
address := fmt.Sprintf("%s:%d", node.Status.Addresses[0].Address, kd.Conf.KubeletPort)
|
nodeAddress, err := nodeHostIP(node)
|
||||||
|
if err != nil {
|
||||||
|
log.Debugf("Skipping node %s: %s", node.Name, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
address := fmt.Sprintf("%s:%d", nodeAddress.String(), kd.Conf.KubeletPort)
|
||||||
|
|
||||||
t := model.LabelSet{
|
t := model.LabelSet{
|
||||||
model.AddressLabel: model.LabelValue(address),
|
model.AddressLabel: model.LabelValue(address),
|
||||||
|
@ -744,3 +750,27 @@ func until(f func(), period time.Duration, stopCh <-chan struct{}) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// nodeHostIP returns the provided node's address, based on the priority:
|
||||||
|
// 1. NodeInternalIP
|
||||||
|
// 2. NodeExternalIP
|
||||||
|
// 3. NodeLegacyHostIP
|
||||||
|
//
|
||||||
|
// Copied from k8s.io/kubernetes/pkg/util/node/node.go
|
||||||
|
func nodeHostIP(node *Node) (net.IP, error) {
|
||||||
|
addresses := node.Status.Addresses
|
||||||
|
addressMap := make(map[NodeAddressType][]NodeAddress)
|
||||||
|
for i := range addresses {
|
||||||
|
addressMap[addresses[i].Type] = append(addressMap[addresses[i].Type], addresses[i])
|
||||||
|
}
|
||||||
|
if addresses, ok := addressMap[NodeInternalIP]; ok {
|
||||||
|
return net.ParseIP(addresses[0].Address), nil
|
||||||
|
}
|
||||||
|
if addresses, ok := addressMap[NodeExternalIP]; ok {
|
||||||
|
return net.ParseIP(addresses[0].Address), nil
|
||||||
|
}
|
||||||
|
if addresses, ok := addressMap[NodeLegacyHostIP]; ok {
|
||||||
|
return net.ParseIP(addresses[0].Address), nil
|
||||||
|
}
|
||||||
|
return nil, fmt.Errorf("host IP unknown; known addresses: %v", addresses)
|
||||||
|
}
|
||||||
|
|
|
@ -202,8 +202,10 @@ type NodeStatus struct {
|
||||||
|
|
||||||
type NodeAddressType string
|
type NodeAddressType string
|
||||||
|
|
||||||
// These are valid address type of node.
|
// These are valid address types of node. NodeLegacyHostIP is used to transit
|
||||||
|
// from out-dated HostIP field to NodeAddress.
|
||||||
const (
|
const (
|
||||||
|
NodeLegacyHostIP NodeAddressType = "LegacyHostIP"
|
||||||
NodeHostName NodeAddressType = "Hostname"
|
NodeHostName NodeAddressType = "Hostname"
|
||||||
NodeExternalIP NodeAddressType = "ExternalIP"
|
NodeExternalIP NodeAddressType = "ExternalIP"
|
||||||
NodeInternalIP NodeAddressType = "InternalIP"
|
NodeInternalIP NodeAddressType = "InternalIP"
|
||||||
|
|
Loading…
Reference in a new issue