Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd42a1d5

Browse files
committed
DRAAdminAccess: add metrics
Signed-off-by: Rita Zhang <rita.z.zhang@gmail.com>
1 parent963a9ac commitd42a1d5

File tree

3 files changed

+405
-120
lines changed

3 files changed

+405
-120
lines changed

‎pkg/controller/resourceclaim/controller.go

Lines changed: 68 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828
resourceapi"k8s.io/api/resource/v1beta1"
2929
apierrors"k8s.io/apimachinery/pkg/api/errors"
3030
metav1"k8s.io/apimachinery/pkg/apis/meta/v1"
31+
"k8s.io/apimachinery/pkg/labels"
3132
"k8s.io/apimachinery/pkg/types"
3233
"k8s.io/apimachinery/pkg/util/runtime"
3334
"k8s.io/apimachinery/pkg/util/wait"
@@ -42,10 +43,11 @@ import (
4243
"k8s.io/client-go/tools/cache"
4344
"k8s.io/client-go/tools/record"
4445
"k8s.io/client-go/util/workqueue"
46+
"k8s.io/component-base/metrics"
4547
"k8s.io/dynamic-resource-allocation/resourceclaim"
4648
"k8s.io/klog/v2"
4749
podutil"k8s.io/kubernetes/pkg/api/v1/pod"
48-
"k8s.io/kubernetes/pkg/controller/resourceclaim/metrics"
50+
resourceclaimmetrics"k8s.io/kubernetes/pkg/controller/resourceclaim/metrics"
4951
"k8s.io/utils/ptr"
5052
)
5153

@@ -150,7 +152,7 @@ func NewController(
150152
deletedObjects:newUIDCache(maxUIDCacheEntries),
151153
}
152154

153-
metrics.RegisterMetrics()
155+
resourceclaimmetrics.RegisterMetrics(newCustomCollector(ec.claimLister,getAdminAccessMetricLabel,logger))
154156

155157
if_,err:=podInformer.Informer().AddEventHandlerWithOptions(cache.ResourceEventHandlerFuncs{
156158
AddFunc:func(objinterface{}) {
@@ -351,28 +353,9 @@ func (ec *Controller) enqueueResourceClaim(logger klog.Logger, oldObj, newObj in
351353
return
352354
}
353355

354-
// Maintain metrics based on what was observed.
355-
switch {
356-
caseoldClaim==nil:
357-
// Added.
358-
metrics.NumResourceClaims.Inc()
359-
ifnewClaim.Status.Allocation!=nil {
360-
metrics.NumAllocatedResourceClaims.Inc()
361-
}
362-
casenewClaim==nil:
363-
// Deleted.
364-
metrics.NumResourceClaims.Dec()
365-
ifoldClaim.Status.Allocation!=nil {
366-
metrics.NumAllocatedResourceClaims.Dec()
367-
}
368-
default:
369-
// Updated.
370-
switch {
371-
caseoldClaim.Status.Allocation==nil&&newClaim.Status.Allocation!=nil:
372-
metrics.NumAllocatedResourceClaims.Inc()
373-
caseoldClaim.Status.Allocation!=nil&&newClaim.Status.Allocation==nil:
374-
metrics.NumAllocatedResourceClaims.Dec()
375-
}
356+
// Check if both the old and new claim are nil in case DeletedFinalStateUnknown.Obj can be nil.
357+
ifoldClaim==nil&&newClaim==nil {
358+
return
376359
}
377360

378361
claim:=newClaim
@@ -669,13 +652,14 @@ func (ec *Controller) handleClaim(ctx context.Context, pod *v1.Pod, podClaim v1.
669652
},
670653
Spec:template.Spec.Spec,
671654
}
672-
metrics.ResourceClaimCreateAttempts.Inc()
655+
metricLabel:=getAdminAccessMetricLabel(claim)
673656
claimName:=claim.Name
674657
claim,err=ec.kubeClient.ResourceV1beta1().ResourceClaims(pod.Namespace).Create(ctx,claim, metav1.CreateOptions{})
675658
iferr!=nil {
676-
metrics.ResourceClaimCreateFailures.Inc()
659+
resourceclaimmetrics.ResourceClaimCreate.WithLabelValues("failure",metricLabel).Inc()
677660
returnfmt.Errorf("create ResourceClaim %s: %v",claimName,err)
678661
}
662+
resourceclaimmetrics.ResourceClaimCreate.WithLabelValues("success",metricLabel).Inc()
679663
logger.V(4).Info("Created ResourceClaim","claim",klog.KObj(claim),"pod",klog.KObj(pod))
680664
ec.claimCache.Mutation(claim)
681665
}
@@ -991,3 +975,61 @@ func claimPodOwnerIndexFunc(obj interface{}) ([]string, error) {
991975
}
992976
returnkeys,nil
993977
}
978+
funcgetAdminAccessMetricLabel(claim*resourceapi.ResourceClaim)string {
979+
ifclaim==nil {
980+
return"false"
981+
}
982+
for_,request:=rangeclaim.Spec.Devices.Requests {
983+
ifptr.Deref(request.AdminAccess,false) {
984+
return"true"
985+
}
986+
}
987+
return"false"
988+
}
989+
990+
funcnewCustomCollector(rcLister resourcelisters.ResourceClaimLister,adminAccessFuncfunc(*resourceapi.ResourceClaim)string,logger klog.Logger) metrics.StableCollector {
991+
return&customCollector{
992+
rcLister:rcLister,
993+
adminAccessFunc:adminAccessFunc,
994+
logger:logger,
995+
}
996+
}
997+
998+
typecustomCollectorstruct {
999+
metrics.BaseStableCollector
1000+
rcLister resourcelisters.ResourceClaimLister
1001+
adminAccessFuncfunc(*resourceapi.ResourceClaim)string
1002+
logger klog.Logger
1003+
}
1004+
1005+
var_ metrics.StableCollector=&customCollector{}
1006+
1007+
func (collector*customCollector)DescribeWithStability(chchan<-*metrics.Desc) {
1008+
ch<-resourceclaimmetrics.NumResourceClaimsDesc
1009+
}
1010+
1011+
func (collector*customCollector)CollectWithStability(chchan<- metrics.Metric) {
1012+
allocateMetrics:=make(map[string]map[string]int)
1013+
rcList,err:=collector.rcLister.List(labels.Everything())
1014+
iferr!=nil {
1015+
collector.logger.Error(err,"failed to list resource claims for metrics collection")
1016+
return
1017+
}
1018+
for_,rc:=rangercList {
1019+
// Determine if the ResourceClaim is allocated
1020+
allocated:="false"
1021+
ifrc.Status.Allocation!=nil {
1022+
allocated="true"
1023+
}
1024+
adminAccess:=collector.adminAccessFunc(rc)
1025+
ifallocateMetrics[allocated]==nil {
1026+
allocateMetrics[allocated]=make(map[string]int)
1027+
}
1028+
allocateMetrics[allocated][adminAccess]++
1029+
}
1030+
forallocated,adminAccessMap:=rangeallocateMetrics {
1031+
foradminAccess,count:=rangeadminAccessMap {
1032+
ch<-metrics.NewLazyConstMetric(resourceclaimmetrics.NumResourceClaimsDesc,metrics.GaugeValue,float64(count),allocated,adminAccess)
1033+
}
1034+
}
1035+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp