diff --git a/main_test.go b/main_test.go index 3d74e9666d..2a54996ab7 100644 --- a/main_test.go +++ b/main_test.go @@ -143,6 +143,7 @@ func TestFullScrapeCycle(t *testing.T) { "kube_pod_labels": { "namespace", "pod", + "uid", }, }) @@ -264,83 +265,83 @@ func TestFullScrapeCycle(t *testing.T) { # TYPE kube_pod_status_scheduled gauge # TYPE kube_pod_status_scheduled_time gauge # TYPE kube_pod_status_unschedulable gauge -kube_pod_container_info{namespace="default",pod="pod0",container="container2",image="k8s.gcr.io/hyperkube2",image_id="docker://sha256:bbb",container_id="docker://cd456"} 1 -kube_pod_container_info{namespace="default",pod="pod0",container="container3",image="k8s.gcr.io/hyperkube3",image_id="docker://sha256:ccc",container_id="docker://ef789"} 1 -kube_pod_container_resource_limits{namespace="default",pod="pod0",container="pod1_con1",node="node1",resource="cpu",unit="core"} 0.2 -kube_pod_container_resource_limits{namespace="default",pod="pod0",container="pod1_con1",node="node1",resource="ephemeral_storage",unit="byte"} 3e+08 -kube_pod_container_resource_limits{namespace="default",pod="pod0",container="pod1_con1",node="node1",resource="memory",unit="byte"} 1e+08 -kube_pod_container_resource_limits{namespace="default",pod="pod0",container="pod1_con1",node="node1",resource="nvidia_com_gpu",unit="integer"} 1 -kube_pod_container_resource_limits{namespace="default",pod="pod0",container="pod1_con1",node="node1",resource="storage",unit="byte"} 4e+08 -kube_pod_container_resource_limits{namespace="default",pod="pod0",container="pod1_con2",node="node1",resource="cpu",unit="core"} 0.3 -kube_pod_container_resource_limits{namespace="default",pod="pod0",container="pod1_con2",node="node1",resource="memory",unit="byte"} 2e+08 -kube_pod_container_resource_requests{namespace="default",pod="pod0",container="pod1_con1",node="node1",resource="cpu",unit="core"} 0.2 -kube_pod_container_resource_requests{namespace="default",pod="pod0",container="pod1_con1",node="node1",resource="ephemeral_storage",unit="byte"} 3e+08 -kube_pod_container_resource_requests{namespace="default",pod="pod0",container="pod1_con1",node="node1",resource="memory",unit="byte"} 1e+08 -kube_pod_container_resource_requests{namespace="default",pod="pod0",container="pod1_con1",node="node1",resource="nvidia_com_gpu",unit="integer"} 1 -kube_pod_container_resource_requests{namespace="default",pod="pod0",container="pod1_con1",node="node1",resource="storage",unit="byte"} 4e+08 -kube_pod_container_resource_requests{namespace="default",pod="pod0",container="pod1_con2",node="node1",resource="cpu",unit="core"} 0.3 -kube_pod_container_resource_requests{namespace="default",pod="pod0",container="pod1_con2",node="node1",resource="memory",unit="byte"} 2e+08 -kube_pod_container_status_last_terminated_reason{namespace="default",pod="pod0",container="container2",reason="Completed"} 0 -kube_pod_container_status_last_terminated_reason{namespace="default",pod="pod0",container="container2",reason="ContainerCannotRun"} 0 -kube_pod_container_status_last_terminated_reason{namespace="default",pod="pod0",container="container2",reason="DeadlineExceeded"} 0 -kube_pod_container_status_last_terminated_reason{namespace="default",pod="pod0",container="container2",reason="Error"} 0 -kube_pod_container_status_last_terminated_reason{namespace="default",pod="pod0",container="container2",reason="Evicted"} 0 -kube_pod_container_status_last_terminated_reason{namespace="default",pod="pod0",container="container2",reason="OOMKilled"} 1 -kube_pod_container_status_last_terminated_reason{namespace="default",pod="pod0",container="container3",reason="Completed"} 0 -kube_pod_container_status_last_terminated_reason{namespace="default",pod="pod0",container="container3",reason="ContainerCannotRun"} 0 -kube_pod_container_status_last_terminated_reason{namespace="default",pod="pod0",container="container3",reason="DeadlineExceeded"} 0 -kube_pod_container_status_last_terminated_reason{namespace="default",pod="pod0",container="container3",reason="Error"} 0 -kube_pod_container_status_last_terminated_reason{namespace="default",pod="pod0",container="container3",reason="Evicted"} 0 -kube_pod_container_status_last_terminated_reason{namespace="default",pod="pod0",container="container3",reason="OOMKilled"} 0 -kube_pod_container_status_ready{namespace="default",pod="pod0",container="container2"} 0 -kube_pod_container_status_ready{namespace="default",pod="pod0",container="container3"} 0 -kube_pod_container_status_restarts_total{namespace="default",pod="pod0",container="container2"} 0 -kube_pod_container_status_restarts_total{namespace="default",pod="pod0",container="container3"} 0 -kube_pod_container_status_running{namespace="default",pod="pod0",container="container2"} 0 -kube_pod_container_status_running{namespace="default",pod="pod0",container="container3"} 0 -kube_pod_container_status_terminated_reason{namespace="default",pod="pod0",container="container2",reason="Completed"} 0 -kube_pod_container_status_terminated_reason{namespace="default",pod="pod0",container="container2",reason="ContainerCannotRun"} 0 -kube_pod_container_status_terminated_reason{namespace="default",pod="pod0",container="container2",reason="DeadlineExceeded"} 0 -kube_pod_container_status_terminated_reason{namespace="default",pod="pod0",container="container2",reason="Error"} 0 -kube_pod_container_status_terminated_reason{namespace="default",pod="pod0",container="container2",reason="Evicted"} 0 -kube_pod_container_status_terminated_reason{namespace="default",pod="pod0",container="container2",reason="OOMKilled"} 0 -kube_pod_container_status_terminated_reason{namespace="default",pod="pod0",container="container3",reason="Completed"} 0 -kube_pod_container_status_terminated_reason{namespace="default",pod="pod0",container="container3",reason="ContainerCannotRun"} 0 -kube_pod_container_status_terminated_reason{namespace="default",pod="pod0",container="container3",reason="DeadlineExceeded"} 0 -kube_pod_container_status_terminated_reason{namespace="default",pod="pod0",container="container3",reason="Error"} 0 -kube_pod_container_status_terminated_reason{namespace="default",pod="pod0",container="container3",reason="Evicted"} 0 -kube_pod_container_status_terminated_reason{namespace="default",pod="pod0",container="container3",reason="OOMKilled"} 0 -kube_pod_container_status_terminated{namespace="default",pod="pod0",container="container2"} 0 -kube_pod_container_status_terminated{namespace="default",pod="pod0",container="container3"} 0 -kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",container="container2",reason="ContainerCreating"} 0 -kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",container="container2",reason="CrashLoopBackOff"} 1 -kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",container="container2",reason="CreateContainerConfigError"} 0 -kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",container="container2",reason="CreateContainerError"} 0 -kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",container="container2",reason="ErrImagePull"} 0 -kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",container="container2",reason="ImagePullBackOff"} 0 -kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",container="container2",reason="InvalidImageName"} 0 -kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",container="container3",reason="ContainerCreating"} 0 -kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",container="container3",reason="CrashLoopBackOff"} 0 -kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",container="container3",reason="CreateContainerConfigError"} 0 -kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",container="container3",reason="CreateContainerError"} 0 -kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",container="container3",reason="ErrImagePull"} 0 -kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",container="container3",reason="ImagePullBackOff"} 0 -kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",container="container3",reason="InvalidImageName"} 0 -kube_pod_container_status_waiting{namespace="default",pod="pod0",container="container2"} 1 -kube_pod_container_status_waiting{namespace="default",pod="pod0",container="container3"} 0 -kube_pod_created{namespace="default",pod="pod0"} 1.5e+09 -kube_pod_info{namespace="default",pod="pod0",host_ip="1.1.1.1",pod_ip="1.2.3.4",uid="abc-0",node="node1",created_by_kind="",created_by_name="",priority_class="",host_network="false"} 1 -kube_pod_labels{namespace="default",pod="pod0"} 1 -kube_pod_owner{namespace="default",pod="pod0",owner_kind="",owner_name="",owner_is_controller=""} 1 -kube_pod_restart_policy{namespace="default",pod="pod0",type="Always"} 1 -kube_pod_status_phase{namespace="default",pod="pod0",phase="Failed"} 0 -kube_pod_status_phase{namespace="default",pod="pod0",phase="Pending"} 0 -kube_pod_status_phase{namespace="default",pod="pod0",phase="Running"} 1 -kube_pod_status_phase{namespace="default",pod="pod0",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="default",pod="pod0",phase="Unknown"} 0 -kube_pod_status_reason{namespace="default",pod="pod0",reason="Evicted"} 0 -kube_pod_status_reason{namespace="default",pod="pod0",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="default",pod="pod0",reason="UnexpectedAdmissionError"} 0 +kube_pod_container_info{namespace="default",pod="pod0",uid="abc-0",container="container2",image="k8s.gcr.io/hyperkube2",image_id="docker://sha256:bbb",container_id="docker://cd456"} 1 +kube_pod_container_info{namespace="default",pod="pod0",uid="abc-0",container="container3",image="k8s.gcr.io/hyperkube3",image_id="docker://sha256:ccc",container_id="docker://ef789"} 1 +kube_pod_container_resource_limits{namespace="default",pod="pod0",uid="abc-0",container="pod1_con1",node="node1",resource="cpu",unit="core"} 0.2 +kube_pod_container_resource_limits{namespace="default",pod="pod0",uid="abc-0",container="pod1_con1",node="node1",resource="ephemeral_storage",unit="byte"} 3e+08 +kube_pod_container_resource_limits{namespace="default",pod="pod0",uid="abc-0",container="pod1_con1",node="node1",resource="memory",unit="byte"} 1e+08 +kube_pod_container_resource_limits{namespace="default",pod="pod0",uid="abc-0",container="pod1_con1",node="node1",resource="nvidia_com_gpu",unit="integer"} 1 +kube_pod_container_resource_limits{namespace="default",pod="pod0",uid="abc-0",container="pod1_con1",node="node1",resource="storage",unit="byte"} 4e+08 +kube_pod_container_resource_limits{namespace="default",pod="pod0",uid="abc-0",container="pod1_con2",node="node1",resource="cpu",unit="core"} 0.3 +kube_pod_container_resource_limits{namespace="default",pod="pod0",uid="abc-0",container="pod1_con2",node="node1",resource="memory",unit="byte"} 2e+08 +kube_pod_container_resource_requests{namespace="default",pod="pod0",uid="abc-0",container="pod1_con1",node="node1",resource="cpu",unit="core"} 0.2 +kube_pod_container_resource_requests{namespace="default",pod="pod0",uid="abc-0",container="pod1_con1",node="node1",resource="ephemeral_storage",unit="byte"} 3e+08 +kube_pod_container_resource_requests{namespace="default",pod="pod0",uid="abc-0",container="pod1_con1",node="node1",resource="memory",unit="byte"} 1e+08 +kube_pod_container_resource_requests{namespace="default",pod="pod0",uid="abc-0",container="pod1_con1",node="node1",resource="nvidia_com_gpu",unit="integer"} 1 +kube_pod_container_resource_requests{namespace="default",pod="pod0",uid="abc-0",container="pod1_con1",node="node1",resource="storage",unit="byte"} 4e+08 +kube_pod_container_resource_requests{namespace="default",pod="pod0",uid="abc-0",container="pod1_con2",node="node1",resource="cpu",unit="core"} 0.3 +kube_pod_container_resource_requests{namespace="default",pod="pod0",uid="abc-0",container="pod1_con2",node="node1",resource="memory",unit="byte"} 2e+08 +kube_pod_container_status_last_terminated_reason{namespace="default",pod="pod0",uid="abc-0",container="container2",reason="Completed"} 0 +kube_pod_container_status_last_terminated_reason{namespace="default",pod="pod0",uid="abc-0",container="container2",reason="ContainerCannotRun"} 0 +kube_pod_container_status_last_terminated_reason{namespace="default",pod="pod0",uid="abc-0",container="container2",reason="DeadlineExceeded"} 0 +kube_pod_container_status_last_terminated_reason{namespace="default",pod="pod0",uid="abc-0",container="container2",reason="Error"} 0 +kube_pod_container_status_last_terminated_reason{namespace="default",pod="pod0",uid="abc-0",container="container2",reason="Evicted"} 0 +kube_pod_container_status_last_terminated_reason{namespace="default",pod="pod0",uid="abc-0",container="container2",reason="OOMKilled"} 1 +kube_pod_container_status_last_terminated_reason{namespace="default",pod="pod0",uid="abc-0",container="container3",reason="Completed"} 0 +kube_pod_container_status_last_terminated_reason{namespace="default",pod="pod0",uid="abc-0",container="container3",reason="ContainerCannotRun"} 0 +kube_pod_container_status_last_terminated_reason{namespace="default",pod="pod0",uid="abc-0",container="container3",reason="DeadlineExceeded"} 0 +kube_pod_container_status_last_terminated_reason{namespace="default",pod="pod0",uid="abc-0",container="container3",reason="Error"} 0 +kube_pod_container_status_last_terminated_reason{namespace="default",pod="pod0",uid="abc-0",container="container3",reason="Evicted"} 0 +kube_pod_container_status_last_terminated_reason{namespace="default",pod="pod0",uid="abc-0",container="container3",reason="OOMKilled"} 0 +kube_pod_container_status_ready{namespace="default",pod="pod0",uid="abc-0",container="container2"} 0 +kube_pod_container_status_ready{namespace="default",pod="pod0",uid="abc-0",container="container3"} 0 +kube_pod_container_status_restarts_total{namespace="default",pod="pod0",uid="abc-0",container="container2"} 0 +kube_pod_container_status_restarts_total{namespace="default",pod="pod0",uid="abc-0",container="container3"} 0 +kube_pod_container_status_running{namespace="default",pod="pod0",uid="abc-0",container="container2"} 0 +kube_pod_container_status_running{namespace="default",pod="pod0",uid="abc-0",container="container3"} 0 +kube_pod_container_status_terminated_reason{namespace="default",pod="pod0",uid="abc-0",container="container2",reason="Completed"} 0 +kube_pod_container_status_terminated_reason{namespace="default",pod="pod0",uid="abc-0",container="container2",reason="ContainerCannotRun"} 0 +kube_pod_container_status_terminated_reason{namespace="default",pod="pod0",uid="abc-0",container="container2",reason="DeadlineExceeded"} 0 +kube_pod_container_status_terminated_reason{namespace="default",pod="pod0",uid="abc-0",container="container2",reason="Error"} 0 +kube_pod_container_status_terminated_reason{namespace="default",pod="pod0",uid="abc-0",container="container2",reason="Evicted"} 0 +kube_pod_container_status_terminated_reason{namespace="default",pod="pod0",uid="abc-0",container="container2",reason="OOMKilled"} 0 +kube_pod_container_status_terminated_reason{namespace="default",pod="pod0",uid="abc-0",container="container3",reason="Completed"} 0 +kube_pod_container_status_terminated_reason{namespace="default",pod="pod0",uid="abc-0",container="container3",reason="ContainerCannotRun"} 0 +kube_pod_container_status_terminated_reason{namespace="default",pod="pod0",uid="abc-0",container="container3",reason="DeadlineExceeded"} 0 +kube_pod_container_status_terminated_reason{namespace="default",pod="pod0",uid="abc-0",container="container3",reason="Error"} 0 +kube_pod_container_status_terminated_reason{namespace="default",pod="pod0",uid="abc-0",container="container3",reason="Evicted"} 0 +kube_pod_container_status_terminated_reason{namespace="default",pod="pod0",uid="abc-0",container="container3",reason="OOMKilled"} 0 +kube_pod_container_status_terminated{namespace="default",pod="pod0",uid="abc-0",container="container2"} 0 +kube_pod_container_status_terminated{namespace="default",pod="pod0",uid="abc-0",container="container3"} 0 +kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",uid="abc-0",container="container2",reason="ContainerCreating"} 0 +kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",uid="abc-0",container="container2",reason="CrashLoopBackOff"} 1 +kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",uid="abc-0",container="container2",reason="CreateContainerConfigError"} 0 +kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",uid="abc-0",container="container2",reason="CreateContainerError"} 0 +kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",uid="abc-0",container="container2",reason="ErrImagePull"} 0 +kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",uid="abc-0",container="container2",reason="ImagePullBackOff"} 0 +kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",uid="abc-0",container="container2",reason="InvalidImageName"} 0 +kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",uid="abc-0",container="container3",reason="ContainerCreating"} 0 +kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",uid="abc-0",container="container3",reason="CrashLoopBackOff"} 0 +kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",uid="abc-0",container="container3",reason="CreateContainerConfigError"} 0 +kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",uid="abc-0",container="container3",reason="CreateContainerError"} 0 +kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",uid="abc-0",container="container3",reason="ErrImagePull"} 0 +kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",uid="abc-0",container="container3",reason="ImagePullBackOff"} 0 +kube_pod_container_status_waiting_reason{namespace="default",pod="pod0",uid="abc-0",container="container3",reason="InvalidImageName"} 0 +kube_pod_container_status_waiting{namespace="default",pod="pod0",uid="abc-0",container="container2"} 1 +kube_pod_container_status_waiting{namespace="default",pod="pod0",uid="abc-0",container="container3"} 0 +kube_pod_created{namespace="default",pod="pod0",uid="abc-0"} 1.5e+09 +kube_pod_info{namespace="default",pod="pod0",uid="abc-0",host_ip="1.1.1.1",pod_ip="1.2.3.4",node="node1",created_by_kind="",created_by_name="",priority_class="",host_network="false"} 1 +kube_pod_labels{namespace="default",pod="pod0",uid="abc-0"} 1 +kube_pod_owner{namespace="default",pod="pod0",uid="abc-0",owner_kind="",owner_name="",owner_is_controller=""} 1 +kube_pod_restart_policy{namespace="default",pod="pod0",uid="abc-0",type="Always"} 1 +kube_pod_status_phase{namespace="default",pod="pod0",uid="abc-0",phase="Failed"} 0 +kube_pod_status_phase{namespace="default",pod="pod0",uid="abc-0",phase="Pending"} 0 +kube_pod_status_phase{namespace="default",pod="pod0",uid="abc-0",phase="Running"} 1 +kube_pod_status_phase{namespace="default",pod="pod0",uid="abc-0",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="default",pod="pod0",uid="abc-0",phase="Unknown"} 0 +kube_pod_status_reason{namespace="default",pod="pod0",uid="abc-0",reason="Evicted"} 0 +kube_pod_status_reason{namespace="default",pod="pod0",uid="abc-0",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="default",pod="pod0",uid="abc-0",reason="UnexpectedAdmissionError"} 0 ` expectedSplit := strings.Split(strings.TrimSpace(expected), "\n")