mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-01-04 23:17:50 +00:00
Add metric for terminated pods with tracking finalizer
Change-Id: I26f3169588c30ed82250cb7baff8e277f8d13bb7
This commit is contained in:
@@ -20,9 +20,12 @@ import (
|
||||
"fmt"
|
||||
"sync"
|
||||
|
||||
batch "k8s.io/api/batch/v1"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/util/sets"
|
||||
"k8s.io/client-go/tools/cache"
|
||||
"k8s.io/klog/v2"
|
||||
"k8s.io/kubernetes/pkg/controller/job/metrics"
|
||||
)
|
||||
|
||||
// uidSetKeyFunc to parse out the key from a uidSet.
|
||||
@@ -118,3 +121,32 @@ func (u *uidTrackingExpectations) deleteExpectations(jobKey string) {
|
||||
func newUIDTrackingExpectations() *uidTrackingExpectations {
|
||||
return &uidTrackingExpectations{store: cache.NewStore(uidSetKeyFunc)}
|
||||
}
|
||||
|
||||
func hasJobTrackingFinalizer(pod *v1.Pod) bool {
|
||||
for _, fin := range pod.Finalizers {
|
||||
if fin == batch.JobTrackingFinalizer {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func recordFinishedPodWithTrackingFinalizer(oldPod, newPod *v1.Pod) {
|
||||
was := isFinishedPodWithTrackingFinalizer(oldPod)
|
||||
is := isFinishedPodWithTrackingFinalizer(newPod)
|
||||
if was == is {
|
||||
return
|
||||
}
|
||||
var event = metrics.Delete
|
||||
if is {
|
||||
event = metrics.Add
|
||||
}
|
||||
metrics.TerminatedPodsTrackingFinalizerTotal.WithLabelValues(event).Inc()
|
||||
}
|
||||
|
||||
func isFinishedPodWithTrackingFinalizer(pod *v1.Pod) bool {
|
||||
if pod == nil {
|
||||
return false
|
||||
}
|
||||
return (pod.Status.Phase == v1.PodFailed || pod.Status.Phase == v1.PodSucceeded) && hasJobTrackingFinalizer(pod)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user