Skip to content

Commit 10c7c9d

Browse files
committed
update internal_ip and external_ip node label for multi-value
1 parent 25bdd67 commit 10c7c9d

File tree

2 files changed

+28
-13
lines changed

2 files changed

+28
-13
lines changed

internal/store/node.go

+24-11
Original file line numberDiff line numberDiff line change
@@ -134,23 +134,36 @@ func createNodeInfoFamilyGenerator() generator.FamilyGenerator {
134134
n.Status.NodeInfo.SystemUUID,
135135
}
136136

137-
internalIP := ""
137+
internalIPs := []string{}
138+
externalIPs := []string{}
138139
for _, address := range n.Status.Addresses {
139-
if address.Type == "InternalIP" {
140-
internalIP = address.Address
140+
switch address.Type {
141+
case "InternalIP":
142+
internalIPs = append(internalIPs, address.Address)
143+
case "ExternalIP":
144+
externalIPs = append(externalIPs, address.Address)
141145
}
142146
}
143-
labelKeys = append(labelKeys, "internal_ip")
144-
labelValues = append(labelValues, internalIP)
145147

146-
externalIP := ""
147-
for _, address := range n.Status.Addresses {
148-
if address.Type == "ExternalIP" {
149-
externalIP = address.Address
148+
if len(internalIPs) > 0 {
149+
for _, ip := range internalIPs {
150+
labelKeys = append(labelKeys, "internal_ip")
151+
labelValues = append(labelValues, ip)
152+
}
153+
} else {
154+
labelKeys = append(labelKeys, "internal_ip")
155+
labelValues = append(labelValues, "")
156+
}
157+
158+
if len(externalIPs) > 0 {
159+
for _, ip := range externalIPs {
160+
labelKeys = append(labelKeys, "external_ip")
161+
labelValues = append(labelValues, ip)
150162
}
163+
} else {
164+
labelKeys = append(labelKeys, "external_ip")
165+
labelValues = append(labelValues, "")
151166
}
152-
labelKeys = append(labelKeys, "external_ip")
153-
labelValues = append(labelValues, externalIP)
154167

155168
return &metric.Family{
156169
Metrics: []*metric.Metric{

internal/store/node_test.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ func TestNodeStore(t *testing.T) {
4646
},
4747
Addresses: []v1.NodeAddress{
4848
{Type: "InternalIP", Address: "1.2.3.4"},
49+
{Type: "InternalIP", Address: "fc00::"},
4950
{Type: "ExternalIP", Address: "5.6.7.8"},
5051
},
5152
},
@@ -61,7 +62,7 @@ func TestNodeStore(t *testing.T) {
6162
# TYPE kube_node_info gauge
6263
# TYPE kube_node_labels gauge
6364
# TYPE kube_node_spec_unschedulable gauge
64-
kube_node_info{container_runtime_version="rkt",kernel_version="kernel",kubelet_version="kubelet",kubeproxy_version="kubeproxy",node="127.0.0.1",os_image="osimage",pod_cidr="172.24.10.0/24",provider_id="provider://i-uniqueid",internal_ip="1.2.3.4",external_ip="5.6.7.8",system_uuid="6a934e21-5207-4a84-baea-3a952d926c80"} 1
65+
kube_node_info{container_runtime_version="rkt",kernel_version="kernel",kubelet_version="kubelet",kubeproxy_version="kubeproxy",node="127.0.0.1",os_image="osimage",pod_cidr="172.24.10.0/24",provider_id="provider://i-uniqueid",internal_ip="1.2.3.4",internal_ip="fc00::",external_ip="5.6.7.8",system_uuid="6a934e21-5207-4a84-baea-3a952d926c80"} 1
6566
kube_node_spec_unschedulable{node="127.0.0.1"} 0
6667
`,
6768
MetricNames: []string{"kube_node_spec_unschedulable", "kube_node_labels", "kube_node_info"},
@@ -106,6 +107,7 @@ func TestNodeStore(t *testing.T) {
106107
},
107108
Addresses: []v1.NodeAddress{
108109
{Type: "InternalIP", Address: "1.2.3.4"},
110+
{Type: "InternalIP", Address: "fc00::"},
109111
{Type: "ExternalIP", Address: "5.6.7.8"},
110112
},
111113
Capacity: v1.ResourceList{
@@ -142,7 +144,7 @@ func TestNodeStore(t *testing.T) {
142144
# TYPE kube_node_status_allocatable gauge
143145
# TYPE kube_node_status_capacity gauge
144146
kube_node_created{node="127.0.0.1"} 1.5e+09
145-
kube_node_info{container_runtime_version="rkt",kernel_version="kernel",kubelet_version="kubelet",kubeproxy_version="kubeproxy",node="127.0.0.1",os_image="osimage",pod_cidr="172.24.10.0/24",provider_id="provider://i-randomidentifier",internal_ip="1.2.3.4",external_ip="5.6.7.8",system_uuid="6a934e21-5207-4a84-baea-3a952d926c80"} 1
147+
kube_node_info{container_runtime_version="rkt",kernel_version="kernel",kubelet_version="kubelet",kubeproxy_version="kubeproxy",node="127.0.0.1",os_image="osimage",pod_cidr="172.24.10.0/24",provider_id="provider://i-randomidentifier",internal_ip="1.2.3.4",internal_ip="fc00::",external_ip="5.6.7.8",system_uuid="6a934e21-5207-4a84-baea-3a952d926c80"} 1
146148
kube_node_role{node="127.0.0.1",role="master"} 1
147149
kube_node_spec_unschedulable{node="127.0.0.1"} 1
148150
kube_node_status_allocatable{node="127.0.0.1",resource="cpu",unit="core"} 3

0 commit comments

Comments
 (0)