Skip to content

Commit 46490b8

Browse files
authored
Merge pull request #2168 from marquiz/devel/gc-port
nfd-gc: rename -metrics to -port
2 parents f4c592f + 7fccf23 commit 46490b8

File tree

8 files changed

+47
-73
lines changed

8 files changed

+47
-73
lines changed

cmd/nfd-gc/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ func initFlags(flagset *flag.FlagSet) *nfdgarbagecollector.Args {
8383
"interval between cleanup of obsolete api objects")
8484
flagset.StringVar(&args.Kubeconfig, "kubeconfig", "",
8585
"Kubeconfig to use")
86-
flagset.IntVar(&args.MetricsPort, "metrics", 8081,
86+
flagset.IntVar(&args.Port, "port", 8080,
8787
"Port on which to expose metrics.")
8888

8989
klog.InitFlags(flagset)

deployment/base/gc/gc.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,5 @@ spec:
2929
command:
3030
- "nfd-gc"
3131
ports:
32-
- name: metrics
33-
containerPort: 8081
32+
- name: http
33+
containerPort: 8080

deployment/helm/node-feature-discovery/templates/nfd-gc.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ spec:
7070
readOnlyRootFilesystem: true
7171
runAsNonRoot: true
7272
ports:
73-
- name: metrics
74-
containerPort: {{ .Values.gc.metricsPort | default "8081"}}
73+
- name: http
74+
containerPort: {{ .Values.gc.port | default "8080"}}
7575

7676
{{- with .Values.gc.nodeSelector }}
7777
nodeSelector:

deployment/helm/node-feature-discovery/values.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -572,7 +572,7 @@ gc:
572572
cpu: 10m
573573
memory: 128Mi
574574

575-
metricsPort: 8081
575+
port: 8080
576576

577577
nodeSelector: {}
578578
tolerations: []

docs/deployment/helm.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ API's you need to install the prometheus operator in your cluster.
330330
| `gc.podDisruptionBudget.minAvailable` | integer | 1 | Specifies minAvailable for the podDisruptionBudget configuration for nfd-gc |
331331
| `gc.podDisruptionBudget.maxUnavailable` | integer | NULL | Specifies maxUnavailable for the podDisruptionBudget configuration for nfd-gc |
332332
| `gc.podDisruptionBudget.unhealthyPodEvictionPolicy` | string | AlwaysAllow | Specifies unhealthyPodEvictionPolicy for the podDisruptionBudget configuration for nfd-gc |
333-
| `gc.metricsPort` | integer | 8081 | Port on which to serve Prometheus metrics. **DEPRECATED**: will be replaced by `gc.port` in NFD v0.18. |
333+
| `gc.port` | integer | 8080 | Port on which to serve Prometheus metrics. |
334334
| `gc.nodeSelector` | dict | {} | Garbage collector pod [node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) |
335335
| `gc.tolerations` | dict | {} | Garbage collector pod [node tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) |
336336
| `gc.annotations` | dict | {} | Garbage collector pod [annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/) |

docs/reference/gc-commandline-reference.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,15 @@ Example:
4242
```bash
4343
nfd-gc -gc-interval=1h
4444
```
45+
46+
### -port
47+
48+
The `-port` flag specifies the port on which metrics are served on.
49+
50+
Default: 8080
51+
52+
Example:
53+
54+
```bash
55+
nfd-gc -port=12345
56+
```

pkg/nfd-gc/nfd-gc.go

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,12 @@ package nfdgarbagecollector
1919
import (
2020
"context"
2121
"fmt"
22+
"net/http"
2223
"time"
2324

2425
topologyv1alpha2 "github.com/k8stopologyawareschedwg/noderesourcetopology-api/pkg/apis/topology/v1alpha2"
26+
"github.com/prometheus/client_golang/prometheus"
27+
"github.com/prometheus/client_golang/prometheus/promhttp"
2528
corev1 "k8s.io/api/core/v1"
2629
"k8s.io/apimachinery/pkg/api/errors"
2730
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -46,9 +49,9 @@ var (
4649

4750
// Args are the command line arguments
4851
type Args struct {
49-
GCPeriod time.Duration
50-
Kubeconfig string
51-
MetricsPort int
52+
GCPeriod time.Duration
53+
Kubeconfig string
54+
Port int
5255
}
5356

5457
type NfdGarbageCollector interface {
@@ -240,15 +243,28 @@ func (n *nfdGarbageCollector) startNodeInformer() error {
240243

241244
// Run is a blocking function that removes stale NRT objects when Node is deleted and runs periodic GC to make sure any obsolete objects are removed
242245
func (n *nfdGarbageCollector) Run() error {
243-
if n.args.MetricsPort > 0 {
244-
m := utils.CreateMetricsServer(n.args.MetricsPort,
245-
buildInfo,
246-
objectsDeleted,
247-
objectDeleteErrors)
248-
go m.Run()
249-
registerVersion(version.Get())
250-
defer m.Stop()
251-
}
246+
httpMux := http.NewServeMux()
247+
promRegistry := prometheus.NewRegistry()
248+
promRegistry.MustRegister(
249+
buildInfo,
250+
objectsDeleted,
251+
objectDeleteErrors)
252+
httpMux.Handle("/metrics", promhttp.HandlerFor(promRegistry, promhttp.HandlerOpts{}))
253+
registerVersion(version.Get())
254+
255+
// TODO: health probe endpoint could be added here
256+
257+
// Start HTTP server
258+
httpServer := http.Server{Addr: fmt.Sprintf(":%d", n.args.Port), Handler: httpMux}
259+
go func() {
260+
klog.InfoS("starting HTTP server", "port", n.args.Port)
261+
if err := httpServer.ListenAndServe(); err != nil && err != http.ErrServerClosed {
262+
klog.ErrorS(err, "failed to start HTTP server")
263+
} else {
264+
klog.InfoS("HTTP server stopped")
265+
}
266+
}()
267+
defer httpServer.Close()
252268

253269
if err := n.startNodeInformer(); err != nil {
254270
return err

pkg/utils/metrics.go

Lines changed: 0 additions & 54 deletions
This file was deleted.

0 commit comments

Comments
 (0)