mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 03:41:45 +00:00
Merge pull request #46079 from xiangpengzhao/print-allocated-oir
Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Display extended resources in node allocated resources **What this PR does / why we need it**: Displays ~~opaque integer~~ [extended] resources in node allocated resources of command `kubectl describe node`. This will give users more info about node ~~OIR~~ [extended resources] consumption. **Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes # This is a partially fix of #44271. **Special notes for your reviewer**: This PR - only displays allocated ~~OIR~~ [extended resources] details of node, it doesn't display ~~OIR~~ [extended resources] requests/limits for each pod because it's hard to organize format. I tried to print ~~OIR~~ [extended resources] requests/limits of pods, but some strings have been eaten when a line is too long (the output has been separated into two lines by terminal). I think it's because a `\t` blank can't be show in two lines. - ~~uses `OIR-foo` instead of `pod.alpha.kubernetes.io/opaque-int-resource-foo` for short.~~ - doesn't display the percentage of ~~OIR~~ [extended resources] usage because I think the percentage is not so meaningful. - displays each ~~OIR~~ [extended resources] in single rows to be clear. UPDATE: Example with default namespace resource: ``` Non-terminated Pods: (1 in total) Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits --------- ---- ------------ ---------- --------------- ------------- default rc-nginx-single-krp84 1 (33%) 1 (33%) 512Mi (6%) 512Mi (6%) Allocated resources: (Total limits may be over 100 percent, i.e., overcommitted.) Resource Requests Limits -------- -------- ------ cpu 1 (33%) 1 (33%) memory 512Mi (6%) 512Mi (6%) kubernetes.io/widgets 111 0 ``` /cc @ConnorDoyle @soltysh ref #44181 **Release note**: ```release-note Display requests/limits of extended resources in node allocated resources. ```
This commit is contained in:
commit
33482dd441
@ -2979,8 +2979,9 @@ func describeNodeResource(nodeNonTerminatedPodsList *api.PodList, node *api.Node
|
||||
memoryReq.String(), int64(fractionMemoryReq), memoryLimit.String(), int64(fractionMemoryLimit))
|
||||
}
|
||||
|
||||
w.Write(LEVEL_0, "Allocated resources:\n (Total limits may be over 100 percent, i.e., overcommitted.)\n CPU Requests\tCPU Limits\tMemory Requests\tMemory Limits\n")
|
||||
w.Write(LEVEL_1, "------------\t----------\t---------------\t-------------\n")
|
||||
w.Write(LEVEL_0, "Allocated resources:\n (Total limits may be over 100 percent, i.e., overcommitted.)\n")
|
||||
w.Write(LEVEL_1, "Resource\tRequests\tLimits\n")
|
||||
w.Write(LEVEL_1, "--------\t--------\t------\n")
|
||||
reqs, limits := getPodsTotalRequestsAndLimits(nodeNonTerminatedPodsList)
|
||||
cpuReqs, cpuLimits, memoryReqs, memoryLimits := reqs[api.ResourceCPU], limits[api.ResourceCPU], reqs[api.ResourceMemory], limits[api.ResourceMemory]
|
||||
fractionCpuReqs := float64(0)
|
||||
@ -2995,9 +2996,21 @@ func describeNodeResource(nodeNonTerminatedPodsList *api.PodList, node *api.Node
|
||||
fractionMemoryReqs = float64(memoryReqs.Value()) / float64(allocatable.Memory().Value()) * 100
|
||||
fractionMemoryLimits = float64(memoryLimits.Value()) / float64(allocatable.Memory().Value()) * 100
|
||||
}
|
||||
w.Write(LEVEL_1, "%s (%d%%)\t%s (%d%%)\t%s (%d%%)\t%s (%d%%)\n",
|
||||
cpuReqs.String(), int64(fractionCpuReqs), cpuLimits.String(), int64(fractionCpuLimits),
|
||||
memoryReqs.String(), int64(fractionMemoryReqs), memoryLimits.String(), int64(fractionMemoryLimits))
|
||||
w.Write(LEVEL_1, "%s\t%s (%d%%)\t%s (%d%%)\n",
|
||||
api.ResourceCPU, cpuReqs.String(), int64(fractionCpuReqs), cpuLimits.String(), int64(fractionCpuLimits))
|
||||
w.Write(LEVEL_1, "%s\t%s (%d%%)\t%s (%d%%)\n",
|
||||
api.ResourceMemory, memoryReqs.String(), int64(fractionMemoryReqs), memoryLimits.String(), int64(fractionMemoryLimits))
|
||||
extResources := make([]string, 0, len(allocatable))
|
||||
for resource := range allocatable {
|
||||
if !helper.IsStandardContainerResourceName(string(resource)) && resource != api.ResourcePods {
|
||||
extResources = append(extResources, string(resource))
|
||||
}
|
||||
}
|
||||
sort.Strings(extResources)
|
||||
for _, ext := range extResources {
|
||||
extRequests, extLimits := reqs[api.ResourceName(ext)], limits[api.ResourceName(ext)]
|
||||
w.Write(LEVEL_1, "%s\t%s\t%s\n", ext, extRequests.String(), extLimits.String())
|
||||
}
|
||||
}
|
||||
|
||||
func getPodsTotalRequestsAndLimits(podList *api.PodList) (reqs map[api.ResourceName]resource.Quantity, limits map[api.ResourceName]resource.Quantity) {
|
||||
|
Loading…
Reference in New Issue
Block a user