mirror of https://github.com/portainer/portainer
fix(applications): scale resource usage by pod count [r8s-127] (#33)
parent
da4b2e3a56
commit
7b88975bcb
|
@ -133,7 +133,7 @@ func (kcl *KubeClient) GetApplicationsResource(namespace, node string) (models.K
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, pod := range pods.Items {
|
for _, pod := range pods.Items {
|
||||||
podResources := calculateResourceUsage(pod)
|
podResources := calculatePodResourceUsage(pod)
|
||||||
resource.CPURequest += podResources.CPURequest
|
resource.CPURequest += podResources.CPURequest
|
||||||
resource.CPULimit += podResources.CPULimit
|
resource.CPULimit += podResources.CPULimit
|
||||||
resource.MemoryRequest += podResources.MemoryRequest
|
resource.MemoryRequest += podResources.MemoryRequest
|
||||||
|
@ -191,7 +191,12 @@ func (kcl *KubeClient) ConvertPodToApplication(pod corev1.Pod, replicaSets []app
|
||||||
}
|
}
|
||||||
|
|
||||||
if withResource {
|
if withResource {
|
||||||
application.Resource = calculateResourceUsage(pod)
|
podResources := calculatePodResourceUsage(pod)
|
||||||
|
// multiply by the number of requested pods in the application (not the running count)
|
||||||
|
application.Resource.CPURequest = podResources.CPURequest * float64(application.TotalPodsCount)
|
||||||
|
application.Resource.CPULimit = podResources.CPULimit * float64(application.TotalPodsCount)
|
||||||
|
application.Resource.MemoryRequest = podResources.MemoryRequest * int64(application.TotalPodsCount)
|
||||||
|
application.Resource.MemoryLimit = podResources.MemoryLimit * int64(application.TotalPodsCount)
|
||||||
}
|
}
|
||||||
|
|
||||||
return &application, nil
|
return &application, nil
|
||||||
|
@ -340,8 +345,8 @@ func updateApplicationWithService(application models.K8sApplication, services []
|
||||||
return application
|
return application
|
||||||
}
|
}
|
||||||
|
|
||||||
// calculateResourceUsage calculates the resource usage for a pod in CPU cores and Bytes
|
// calculatePodResourceUsage calculates the resource usage for a pod in CPU cores and Bytes
|
||||||
func calculateResourceUsage(pod corev1.Pod) models.K8sApplicationResource {
|
func calculatePodResourceUsage(pod corev1.Pod) models.K8sApplicationResource {
|
||||||
resource := models.K8sApplicationResource{}
|
resource := models.K8sApplicationResource{}
|
||||||
for _, container := range pod.Spec.Containers {
|
for _, container := range pod.Spec.Containers {
|
||||||
// CPU cores as a decimal
|
// CPU cores as a decimal
|
||||||
|
|
Loading…
Reference in New Issue