Skip to content

Commit fde27ec

Browse files
authored
Merge pull request #2240 from changhyuni/add_label_init_cotainter_metric
feat: add restartPolicy to `kube_pod_init_container_info` metric
2 parents 7324ae5 + 5834d64 commit fde27ec

File tree

3 files changed

+13
-6
lines changed

3 files changed

+13
-6
lines changed

docs/pod-metrics.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
| kube_pod_created | Gauge | Unix creation timestamp | seconds | `pod`=&lt;pod-name&gt; <br> `namespace`=&lt;pod-namespace&gt; <br> `uid`=&lt;pod-uid&gt; | STABLE | - |
3737
| kube_pod_deletion_timestamp | Gauge | Unix deletion timestamp | seconds | `pod`=&lt;pod-name&gt; <br> `namespace`=&lt;pod-namespace&gt; <br> `uid`=&lt;pod-uid&gt; | EXPERIMENTAL | - |
3838
| kube_pod_restart_policy | Gauge | Describes the restart policy in use by this pod | | `pod`=&lt;pod-name&gt; <br> `namespace`=&lt;pod-namespace&gt; <br> `type`=&lt;Always\|Never\|OnFailure&gt; <br> `uid`=&lt;pod-uid&gt; | STABLE | - |
39-
| kube_pod_init_container_info | Gauge | Information about an init container in a pod | | `container`=&lt;container-name&gt; <br> `pod`=&lt;pod-name&gt; <br> `namespace`=&lt;pod-namespace&gt; <br> `image`=&lt;image-name&gt; <br> `image_id`=&lt;image-id&gt; <br> `image_spec`=&lt;image-spec&gt; <br> `container_id`=&lt;containerid&gt; <br> `uid`=&lt;pod-uid&gt; | STABLE | - |
39+
| kube_pod_init_container_info | Gauge | Information about an init container in a pod | | `container`=&lt;container-name&gt; <br> `pod`=&lt;pod-name&gt; <br> `namespace`=&lt;pod-namespace&gt; <br> `image`=&lt;image-name&gt; <br> `image_id`=&lt;image-id&gt; <br> `image_spec`=&lt;image-spec&gt; <br> `container_id`=&lt;containerid&gt; <br> `uid`=&lt;pod-uid&gt; <br> `restart_policy`=&lt;restart-policy&gt; | STABLE | - |
4040
| kube_pod_init_container_status_waiting | Gauge | Describes whether the init container is currently in waiting state | | `container`=&lt;container-name&gt; <br> `pod`=&lt;pod-name&gt; <br> `namespace`=&lt;pod-namespace&gt; <br> `uid`=&lt;pod-uid&gt; | STABLE | - |
4141
| kube_pod_init_container_status_waiting_reason | Gauge | Describes the reason the init container is currently in waiting state | | `container`=&lt;container-name&gt; <br> `pod`=&lt;pod-name&gt; <br> `namespace`=&lt;pod-namespace&gt; <br> `reason`=&lt;container-waiting-reason&gt; <br> `uid`=&lt;pod-uid&gt; | EXPERIMENTAL | - |
4242
| kube_pod_init_container_status_running | Gauge | Describes whether the init container is currently in running state | | `container`=&lt;container-name&gt; <br> `pod`=&lt;pod-name&gt; <br> `namespace`=&lt;pod-namespace&gt; <br> `uid`=&lt;pod-uid&gt; | STABLE | - |

internal/store/pod.go

+7-2
Original file line numberDiff line numberDiff line change
@@ -677,16 +677,21 @@ func createPodInitContainerInfoFamilyGenerator() generator.FamilyGenerator {
677677
"",
678678
wrapPodFunc(func(p *v1.Pod) *metric.Family {
679679
ms := []*metric.Metric{}
680-
labelKeys := []string{"container", "image_spec", "image", "image_id", "container_id"}
680+
labelKeys := []string{"container", "image_spec", "image", "image_id", "container_id", "restart_policy"}
681681

682682
for _, c := range p.Spec.InitContainers {
683+
restartPolicy := ""
684+
if c.RestartPolicy != nil {
685+
restartPolicy = string(*c.RestartPolicy)
686+
}
687+
683688
for _, cs := range p.Status.InitContainerStatuses {
684689
if cs.Name != c.Name {
685690
continue
686691
}
687692
ms = append(ms, &metric.Metric{
688693
LabelKeys: labelKeys,
689-
LabelValues: []string{cs.Name, c.Image, cs.Image, cs.ImageID, cs.ContainerID},
694+
LabelValues: []string{cs.Name, c.Image, cs.Image, cs.ImageID, cs.ContainerID, restartPolicy},
690695
Value: 1,
691696
})
692697
}

internal/store/pod_test.go

+5-3
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ func TestPodStore(t *testing.T) {
3333
runtimeclass := "foo"
3434
startTime := 1501569018
3535
metav1StartTime := metav1.Unix(int64(startTime), 0)
36+
restartPolicyAlways := v1.ContainerRestartPolicyAlways
3637

3738
cases := []generateMetricsTestCase{
3839
{
@@ -87,8 +88,9 @@ func TestPodStore(t *testing.T) {
8788
},
8889
InitContainers: []v1.Container{
8990
{
90-
Name: "initContainer",
91-
Image: "k8s.gcr.io/initfoo_spec",
91+
Name: "initContainer",
92+
Image: "k8s.gcr.io/initfoo_spec",
93+
RestartPolicy: &restartPolicyAlways,
9294
},
9395
},
9496
},
@@ -124,7 +126,7 @@ func TestPodStore(t *testing.T) {
124126
# TYPE kube_pod_init_container_info gauge
125127
kube_pod_container_info{container="container2",container_id="docker://cd456",image_spec="k8s.gcr.io/hyperkube2_spec",image="k8s.gcr.io/hyperkube2",image_id="docker://sha256:bbb",namespace="ns2",pod="pod2",uid="uid2"} 1
126128
kube_pod_container_info{container="container3",container_id="docker://ef789",image_spec="k8s.gcr.io/hyperkube3_spec",image="k8s.gcr.io/hyperkube3",image_id="docker://sha256:ccc",namespace="ns2",pod="pod2",uid="uid2"} 1
127-
kube_pod_init_container_info{container="initContainer",container_id="docker://ef123",image_spec="k8s.gcr.io/initfoo_spec",image="k8s.gcr.io/initfoo",image_id="docker://sha256:wxyz",namespace="ns2",pod="pod2",uid="uid2"} 1`,
129+
kube_pod_init_container_info{container="initContainer",container_id="docker://ef123",image_spec="k8s.gcr.io/initfoo_spec",image="k8s.gcr.io/initfoo",image_id="docker://sha256:wxyz",namespace="ns2",pod="pod2",uid="uid2",restart_policy="Always"} 1`,
128130
MetricNames: []string{"kube_pod_container_info", "kube_pod_init_container_info"},
129131
},
130132
{

0 commit comments

Comments
 (0)