From eef9de392317ed8d160a60426e6130c63791c8c6 Mon Sep 17 00:00:00 2001 From: pgarousi <45374076+pgarousi@users.noreply.github.com> Date: Tue, 14 Jul 2026 11:27:54 +0100 Subject: [PATCH 1/6] Added linux os requirement within node selectors --- .../templates/daemonset.yaml | 4 ++++ charts/gpu-process-exporter/values.yaml | 2 ++ charts/kubex-automation-stack/values.yaml | 16 ++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/charts/gpu-process-exporter/templates/daemonset.yaml b/charts/gpu-process-exporter/templates/daemonset.yaml index 4640587..17914dd 100644 --- a/charts/gpu-process-exporter/templates/daemonset.yaml +++ b/charts/gpu-process-exporter/templates/daemonset.yaml @@ -19,7 +19,11 @@ spec: spec: hostPID: true nodeSelector: + kubernetes.io/os: linux nvidia.com/gpu.present: "true" + {{- with .Values.nodeSelector }} + {{- toYaml . | nindent 8 }} + {{- end }} tolerations: - key: nvidia.com/gpu operator: Exists diff --git a/charts/gpu-process-exporter/values.yaml b/charts/gpu-process-exporter/values.yaml index b1177d8..5b353f2 100644 --- a/charts/gpu-process-exporter/values.yaml +++ b/charts/gpu-process-exporter/values.yaml @@ -29,6 +29,8 @@ resources: limits: memory: 256Mi +nodeSelector: {} + hostProcMount: null nvmlSearchPath: null diff --git a/charts/kubex-automation-stack/values.yaml b/charts/kubex-automation-stack/values.yaml index b2d2464..ca52a43 100644 --- a/charts/kubex-automation-stack/values.yaml +++ b/charts/kubex-automation-stack/values.yaml @@ -14,12 +14,18 @@ stack: gpu-process-exporter: enabled: true + nodeSelector: + kubernetes.io/os: linux node-labeler: enabled: false + nodeSelector: + kubernetes.io/os: linux container-optimization-data-forwarder: nameOverride: kubex-stack + nodeSelector: + kubernetes.io/os: linux tolerations: - key: "kubernetes.io/arch" operator: "Exists" @@ -50,6 +56,8 @@ prometheus: enabled: false kube-state-metrics: prometheusScrape: false + nodeSelector: + kubernetes.io/os: linux tolerations: - key: "kubernetes.io/arch" operator: "Exists" @@ -95,12 +103,16 @@ prometheus: - ALL seccompProfile: type: RuntimeDefault + nodeSelector: + kubernetes.io/os: linux tolerations: - key: "kubernetes.io/arch" operator: "Exists" effect: "NoSchedule" server: fullnameOverride: kubex-prometheus-server + nodeSelector: + kubernetes.io/os: linux tolerations: - key: "kubernetes.io/arch" operator: "Exists" @@ -218,6 +230,8 @@ beyla: privileged: true contextPropagation: enabled: false # Survey only - no context propagation needed + nodeSelector: + kubernetes.io/os: linux tolerations: - key: "kubernetes.io/arch" operator: "Exists" @@ -260,6 +274,8 @@ beyla: k8s-ephemeral-storage-metrics: enabled: true nameOverride: kubex-ephemeral-storage-collector + nodeSelector: + kubernetes.io/os: linux tolerations: - key: "kubernetes.io/arch" operator: "Exists" From 81c00a6d3d8ff269b9ddea993f9345470b3b60d5 Mon Sep 17 00:00:00 2001 From: pgarousi <45374076+pgarousi@users.noreply.github.com> Date: Tue, 14 Jul 2026 11:36:13 +0100 Subject: [PATCH 2/6] Increased release version --- charts/gpu-process-exporter/Chart.yaml | 2 +- charts/kubex-automation-stack/Chart.lock | 8 ++++---- charts/kubex-automation-stack/Chart.yaml | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/charts/gpu-process-exporter/Chart.yaml b/charts/gpu-process-exporter/Chart.yaml index 2073310..b424f8b 100644 --- a/charts/gpu-process-exporter/Chart.yaml +++ b/charts/gpu-process-exporter/Chart.yaml @@ -3,7 +3,7 @@ name: gpu-process-exporter description: A Helm chart for gpu-process-exporter type: application icon: https://kubex.ai/wp-content/uploads/kubex-logo-landscape.svg -version: 1.0.0 +version: 1.0.1 keywords: - kubex - gpu diff --git a/charts/kubex-automation-stack/Chart.lock b/charts/kubex-automation-stack/Chart.lock index 29464f8..c499a92 100644 --- a/charts/kubex-automation-stack/Chart.lock +++ b/charts/kubex-automation-stack/Chart.lock @@ -4,10 +4,10 @@ dependencies: version: 4.0.17 - name: prometheus repository: https://prometheus-community.github.io/helm-charts - version: 29.14.0 + version: 29.17.0 - name: beyla repository: https://grafana.github.io/helm-charts - version: 1.16.8 + version: 1.16.10 - name: k8s-ephemeral-storage-metrics repository: https://densify-dev.github.io/helm-charts version: 1.21.0 @@ -17,5 +17,5 @@ dependencies: - name: node-labeler repository: https://densify-dev.github.io/helm-charts version: 0.1.2 -digest: sha256:d4b36dc243779019f4a3277b17c487f1be80c39d5a6ce5a3b40979a42dbc5955 -generated: "2026-07-03T17:48:40.199770372Z" +digest: sha256:9f8ea4af17af3e7387dd4e191d60931f0715110eefa69f06d07872a3c94c9f7a +generated: "2026-07-14T11:34:52.714796435+01:00" diff --git a/charts/kubex-automation-stack/Chart.yaml b/charts/kubex-automation-stack/Chart.yaml index d7b3454..f682be0 100644 --- a/charts/kubex-automation-stack/Chart.yaml +++ b/charts/kubex-automation-stack/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v2 description: Kubex Collection Stack name: kubex-automation-stack -version: 1.0.18 +version: 1.0.19 type: application icon: https://kubex.ai/wp-content/uploads/kubex-logo-landscape.svg dependencies: From 2baaae8f6798f443f35ec6c21aa1d867d95f8876 Mon Sep 17 00:00:00 2001 From: pgarousi <45374076+pgarousi@users.noreply.github.com> Date: Tue, 14 Jul 2026 11:38:25 +0100 Subject: [PATCH 3/6] Updated changelog --- charts/kubex-automation-stack/CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/charts/kubex-automation-stack/CHANGELOG.md b/charts/kubex-automation-stack/CHANGELOG.md index 1f2c349..3f61f42 100644 --- a/charts/kubex-automation-stack/CHANGELOG.md +++ b/charts/kubex-automation-stack/CHANGELOG.md @@ -3,6 +3,15 @@ All notable changes to the kubex-automation-stack chart will be documented in this file. +## [1.0.19] - 2026-07-14 + +### Added +- Added Linux OS requirement to nodeSelector for all stack components to ensure proper scheduling on Linux nodes +- Added configurable nodeSelector to gpu-process-exporter chart + +### Changed +- Updated gpu-process-exporter dependency to v1.0.1 + ## [1.0.18] - 2026-07-03 ### Security From 8a60f05f0c7670cce2a7199c5ca45e7b49133c98 Mon Sep 17 00:00:00 2001 From: pgarousi <45374076+pgarousi@users.noreply.github.com> Date: Tue, 14 Jul 2026 11:58:29 +0100 Subject: [PATCH 4/6] Add ephemeral storage metrics scaling configurations for cluster size overlays --- charts/kubex-automation-stack/CHANGELOG.md | 9 +++++++- .../kubex-automation-stack/values-large.yaml | 21 +++++++++++++++++++ .../kubex-automation-stack/values-medium.yaml | 21 +++++++++++++++++++ .../kubex-automation-stack/values-small.yaml | 13 ++++++++++++ .../kubex-automation-stack/values-xsmall.yaml | 13 ++++++++++++ 5 files changed, 76 insertions(+), 1 deletion(-) diff --git a/charts/kubex-automation-stack/CHANGELOG.md b/charts/kubex-automation-stack/CHANGELOG.md index 3f61f42..0ac8fbc 100644 --- a/charts/kubex-automation-stack/CHANGELOG.md +++ b/charts/kubex-automation-stack/CHANGELOG.md @@ -8,9 +8,16 @@ All notable changes to the kubex-automation-stack chart will be documented in th ### Added - Added Linux OS requirement to nodeSelector for all stack components to ensure proper scheduling on Linux nodes - Added configurable nodeSelector to gpu-process-exporter chart +- Added ephemeral storage metrics scaling configurations for all cluster size overlays (xsmall/small/medium/large) + - Configured polling intervals, API rate limits, and concurrency settings scaled by cluster size + - Added resource requests and limits for ephemeral storage metrics collector + - Enabled garbage collection for medium and large clusters to handle pod churn + - Extended probe timeouts for medium and large clusters to prevent false restarts during long polling cycles ### Changed - Updated gpu-process-exporter dependency to v1.0.1 +- Updated Prometheus chart dependency to v29.17.0 +- Updated Beyla chart dependency to v1.16.10 ## [1.0.18] - 2026-07-03 @@ -23,7 +30,7 @@ All notable changes to the kubex-automation-stack chart will be documented in th ## [1.0.17] - 2026-06-23 ### Changed -- Upgraded Prometheus chart dependency to v29.13.0 to overcome KSM sharding issues with v2.19.0 +- Upgraded Prometheus chart dependency to v29.14.0 to overcome KSM sharding issues with v2.19.0 ## [1.0.16] - 2026-06-11 diff --git a/charts/kubex-automation-stack/values-large.yaml b/charts/kubex-automation-stack/values-large.yaml index ee4fc2b..0f68a0a 100644 --- a/charts/kubex-automation-stack/values-large.yaml +++ b/charts/kubex-automation-stack/values-large.yaml @@ -21,3 +21,24 @@ beyla: cpu: "50m" limits: memory: "1Gi" + +k8s-ephemeral-storage-metrics: + interval: 45 + max_node_concurrency: 30 + client_go_qps: 15 + client_go_burst: 30 + metrics: + gc_enabled: true + gc_interval: 3 + gc_batch_size: 1000 + resources: + requests: + memory: "512Mi" + cpu: "500m" + limits: + memory: "1Gi" + cpu: "2000m" + livenessProbe: + timeoutSeconds: 60 + readinessProbe: + timeoutSeconds: 60 diff --git a/charts/kubex-automation-stack/values-medium.yaml b/charts/kubex-automation-stack/values-medium.yaml index abdd4ff..b827053 100644 --- a/charts/kubex-automation-stack/values-medium.yaml +++ b/charts/kubex-automation-stack/values-medium.yaml @@ -21,3 +21,24 @@ beyla: cpu: "50m" limits: memory: "512Mi" + +k8s-ephemeral-storage-metrics: + interval: 30 + max_node_concurrency: 20 + client_go_qps: 10 + client_go_burst: 20 + metrics: + gc_enabled: true + gc_interval: 5 + gc_batch_size: 500 + resources: + requests: + memory: "256Mi" + cpu: "200m" + limits: + memory: "512Mi" + cpu: "1000m" + livenessProbe: + timeoutSeconds: 45 + readinessProbe: + timeoutSeconds: 45 diff --git a/charts/kubex-automation-stack/values-small.yaml b/charts/kubex-automation-stack/values-small.yaml index 98140de..af98ade 100644 --- a/charts/kubex-automation-stack/values-small.yaml +++ b/charts/kubex-automation-stack/values-small.yaml @@ -21,3 +21,16 @@ beyla: cpu: "50m" limits: memory: "512Mi" + +k8s-ephemeral-storage-metrics: + interval: 25 + max_node_concurrency: 15 + client_go_qps: 8 + client_go_burst: 15 + resources: + requests: + memory: "128Mi" + cpu: "100m" + limits: + memory: "256Mi" + cpu: "500m" diff --git a/charts/kubex-automation-stack/values-xsmall.yaml b/charts/kubex-automation-stack/values-xsmall.yaml index f172508..a2f42c3 100644 --- a/charts/kubex-automation-stack/values-xsmall.yaml +++ b/charts/kubex-automation-stack/values-xsmall.yaml @@ -21,3 +21,16 @@ beyla: cpu: "50m" limits: memory: "512Mi" + +k8s-ephemeral-storage-metrics: + interval: 15 + max_node_concurrency: 10 + client_go_qps: 5 + client_go_burst: 10 + resources: + requests: + memory: "64Mi" + cpu: "50m" + limits: + memory: "128Mi" + cpu: "200m" From 839deaf19d8bd22b7e18d82d0e0881567e737e22 Mon Sep 17 00:00:00 2001 From: pgarousi <45374076+pgarousi@users.noreply.github.com> Date: Tue, 14 Jul 2026 14:55:17 +0100 Subject: [PATCH 5/6] Add configurable scheduling options to gpu-process-exporter chart Added support for custom tolerations, affinity, and topologySpreadConstraints to allow the GPU exporter to work with cluster-specific taints and scheduling requirements. The hard-coded nodeSelector and tolerations have been moved to configurable defaults in values.yaml, maintaining backward compatibility while providing flexibility for custom cluster configurations. Changes: - Bump chart version from 1.0.1 to 1.1.0 - Move hard-coded nodeSelector to values.yaml with backward-compatible defaults - Move hard-coded tolerations to values.yaml with backward-compatible defaults - Add affinity configuration support - Add topologySpreadConstraints configuration support - Update daemonset template to use configurable scheduling values Co-Authored-By: Claude Sonnet 4.5 --- charts/gpu-process-exporter/Chart.yaml | 2 +- .../templates/daemonset.yaml | 20 ++++++++++++------- charts/gpu-process-exporter/values.yaml | 13 +++++++++++- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/charts/gpu-process-exporter/Chart.yaml b/charts/gpu-process-exporter/Chart.yaml index b424f8b..0b6ad14 100644 --- a/charts/gpu-process-exporter/Chart.yaml +++ b/charts/gpu-process-exporter/Chart.yaml @@ -3,7 +3,7 @@ name: gpu-process-exporter description: A Helm chart for gpu-process-exporter type: application icon: https://kubex.ai/wp-content/uploads/kubex-logo-landscape.svg -version: 1.0.1 +version: 1.1.0 keywords: - kubex - gpu diff --git a/charts/gpu-process-exporter/templates/daemonset.yaml b/charts/gpu-process-exporter/templates/daemonset.yaml index 17914dd..bdcb52d 100644 --- a/charts/gpu-process-exporter/templates/daemonset.yaml +++ b/charts/gpu-process-exporter/templates/daemonset.yaml @@ -18,16 +18,22 @@ spec: app.kubernetes.io/instance: {{ .Release.Name }} spec: hostPID: true + {{- with .Values.nodeSelector }} nodeSelector: - kubernetes.io/os: linux - nvidia.com/gpu.present: "true" - {{- with .Values.nodeSelector }} {{- toYaml . | nindent 8 }} - {{- end }} + {{- end }} + {{- with .Values.tolerations }} tolerations: - - key: nvidia.com/gpu - operator: Exists - effect: NoSchedule + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.topologySpreadConstraints }} + topologySpreadConstraints: + {{- toYaml . | nindent 8 }} + {{- end }} serviceAccountName: {{ include "gpu-process-exporter.serviceAccountName" . }} containers: - name: exporter diff --git a/charts/gpu-process-exporter/values.yaml b/charts/gpu-process-exporter/values.yaml index 5b353f2..0b1069a 100644 --- a/charts/gpu-process-exporter/values.yaml +++ b/charts/gpu-process-exporter/values.yaml @@ -29,7 +29,18 @@ resources: limits: memory: 256Mi -nodeSelector: {} +nodeSelector: + kubernetes.io/os: linux + nvidia.com/gpu.present: "true" + +tolerations: + - key: nvidia.com/gpu + operator: Exists + effect: NoSchedule + +affinity: {} + +topologySpreadConstraints: [] hostProcMount: null From dddfa0e434428c2ad93e901bdcd35a0158f4316b Mon Sep 17 00:00:00 2001 From: pgarousi <45374076+pgarousi@users.noreply.github.com> Date: Wed, 15 Jul 2026 12:04:54 +0100 Subject: [PATCH 6/6] Revert gpu-process-exporter changes - moved to different branch Restoring Chart.yaml, values.yaml, and templates/daemonset.yaml to master branch state as these changes have been moved to a different branch. Co-Authored-By: Claude Sonnet 4.5 --- charts/gpu-process-exporter/Chart.yaml | 2 +- .../templates/daemonset.yaml | 18 ++++-------------- charts/gpu-process-exporter/values.yaml | 13 ------------- 3 files changed, 5 insertions(+), 28 deletions(-) diff --git a/charts/gpu-process-exporter/Chart.yaml b/charts/gpu-process-exporter/Chart.yaml index 0b6ad14..2073310 100644 --- a/charts/gpu-process-exporter/Chart.yaml +++ b/charts/gpu-process-exporter/Chart.yaml @@ -3,7 +3,7 @@ name: gpu-process-exporter description: A Helm chart for gpu-process-exporter type: application icon: https://kubex.ai/wp-content/uploads/kubex-logo-landscape.svg -version: 1.1.0 +version: 1.0.0 keywords: - kubex - gpu diff --git a/charts/gpu-process-exporter/templates/daemonset.yaml b/charts/gpu-process-exporter/templates/daemonset.yaml index bdcb52d..4640587 100644 --- a/charts/gpu-process-exporter/templates/daemonset.yaml +++ b/charts/gpu-process-exporter/templates/daemonset.yaml @@ -18,22 +18,12 @@ spec: app.kubernetes.io/instance: {{ .Release.Name }} spec: hostPID: true - {{- with .Values.nodeSelector }} nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.tolerations }} + nvidia.com/gpu.present: "true" tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.topologySpreadConstraints }} - topologySpreadConstraints: - {{- toYaml . | nindent 8 }} - {{- end }} + - key: nvidia.com/gpu + operator: Exists + effect: NoSchedule serviceAccountName: {{ include "gpu-process-exporter.serviceAccountName" . }} containers: - name: exporter diff --git a/charts/gpu-process-exporter/values.yaml b/charts/gpu-process-exporter/values.yaml index 0b1069a..b1177d8 100644 --- a/charts/gpu-process-exporter/values.yaml +++ b/charts/gpu-process-exporter/values.yaml @@ -29,19 +29,6 @@ resources: limits: memory: 256Mi -nodeSelector: - kubernetes.io/os: linux - nvidia.com/gpu.present: "true" - -tolerations: - - key: nvidia.com/gpu - operator: Exists - effect: NoSchedule - -affinity: {} - -topologySpreadConstraints: [] - hostProcMount: null nvmlSearchPath: null