Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix Topology Manager policy and scope not being updated after NRT creation #1256

Conversation

PiotrProkop
Copy link
Contributor

fixes #1254

@netlify
Copy link

netlify bot commented Jul 4, 2023

Deploy Preview for kubernetes-sigs-nfd ready!

Name Link
🔨 Latest commit 6d98b61
🔍 Latest deploy log https://app.netlify.com/sites/kubernetes-sigs-nfd/deploys/64b945789a83210008a33c92
😎 Deploy Preview https://deploy-preview-1256--kubernetes-sigs-nfd.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@k8s-ci-robot k8s-ci-robot requested review from fmuyassarov and kad July 4, 2023 09:19
@k8s-ci-robot k8s-ci-robot added cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels Jul 4, 2023
@PiotrProkop
Copy link
Contributor Author

/cc @marquiz @ffromani

@k8s-ci-robot k8s-ci-robot requested review from ffromani and marquiz July 4, 2023 09:20
@ArangoGutierrez
Copy link
Contributor

/test pull-node-feature-discovery-build-image-cross-generic

@@ -290,3 +305,38 @@ func updateAttributes(lhs *v1alpha2.AttributeList, rhs v1alpha2.AttributeList) {
updateAttribute(lhs, attr)
}
}

func getKubeletConfigFunc(uri, apiAuthTokenFile string) (func() (*kubeletconfigv1beta1.KubeletConfiguration, error), error) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ideally, I'd prefer having a goroutine waiting for changes in the kubeletconfig and re-reading it if needed and only if needed, avoding constant and costly polling. IIRC we use already fsnotify in NFD so this would mean no new deps. Have you explored this option? how hard would it be to implement?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was thinking about it but NFD supports reading kubelet either from file or from http endpoint and I don't know if /configz endpoint is watchable. Should I implement this in seperate goroutine only when reading kubelet config and make it poll based when using http endpoint to obtain kubelet config?

Copy link
Contributor Author

@PiotrProkop PiotrProkop Jul 5, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like if we want to support both endpoints and not to overcomplicate the code. We can spin up another goroutine that will check kubelet config on startup and every 5mins(or make it configurable) to reduce costly poling and patch only TopologyPolices or attributes field?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fair point. I'm hesitant to add kubelet config read in this path, this is why I mentioned a different goroutine.
Let me review the code again and think a bit more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like spinning up another goroutine which will be updating NRT object can lead to conflicts when updating same resource it would be best to have one func that's responsible for managing NRT. We can also consider such implementation:

-       policy, scope, err := w.detectTopologyPolicyAndScope()
-       if err != nil {
-               return fmt.Errorf("failed to detect TopologyManager's policy and scope: %w", err)
-       }
-
-       tmAttributes := createTopologyAttributes(policy, scope)
-       deprecatedTopologyPolicies := []string{string(topologypolicy.DetectTopologyPolicy(policy, scope))}
-
        nrt, err := cli.TopologyV1alpha2().NodeResourceTopologies().Get(context.TODO(), w.nodeName, metav1.GetOptions{})
        if errors.IsNotFound(err) {
+               policy, scope, err := w.detectTopologyPolicyAndScope()
+               if err != nil {
+                       return fmt.Errorf("failed to detect TopologyManager's policy and scope: %w", err)
+               }
+
+               tmAttributes := createTopologyAttributes(policy, scope)
+               deprecatedTopologyPolicies := []string{string(topologypolicy.DetectTopologyPolicy(policy, scope))}
+
                nrtNew := v1alpha2.NodeResourceTopology{
                        ObjectMeta: metav1.ObjectMeta{
                                Name: w.nodeName,
@@ -237,15 +239,28 @@ func (w *nfdTopologyUpdater) updateNodeResourceTopology(zoneInfo v1alpha2.ZoneLi
        nrtMutated := nrt.DeepCopy()
        nrtMutated.Zones = zoneInfo

-       attributes := append(scanResponse.Attributes, tmAttributes...)
-       updateAttributes(&nrtMutated.Attributes, attributes)
+       if w.lastUpdateTimestamp.IsZero() || time.Since(w.lastUpdateTimestamp).Minutes() > float64(5) {
+               policy, scope, err := w.detectTopologyPolicyAndScope()
+               if err != nil {
+                       return fmt.Errorf("failed to detect TopologyManager's policy and scope: %w", err)
+               }

-       nrtMutated.TopologyPolicies = deprecatedTopologyPolicies
+               tmAttributes := createTopologyAttributes(policy, scope)
+               deprecatedTopologyPolicies := []string{string(topologypolicy.DetectTopologyPolicy(policy, scope))}
+
+               attributes := append(scanResponse.Attributes, tmAttributes...)
+               updateAttributes(&nrtMutated.Attributes, attributes)
+
+               nrtMutated.TopologyPolicies = deprecatedTopologyPolicies
+       }

        nrtUpdated, err := cli.TopologyV1alpha2().NodeResourceTopologies().Update(context.TODO(), nrtMutated, metav1.UpdateOptions{})
        if err != nil {
                return fmt.Errorf("failed to update NodeResourceTopology: %w", err)
        }
+
+       w.lastUpdateTimestamp = time.Now()
+

or move reading scope and policy into seperate goroutine and keep them in shared state somewhere?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ffromani to reduce number of times we need to read Kubelet config file and minimize complexity. I have modified the code only to reread Kubelet config when Interval based event is triggered, which default to 1 min(somewhat low). Should we introduce another ticker?
I feel like we should implement a better solution to this error but I am unsure if we need to do it in this PR.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks @PiotrProkop my main issue was finding time to review, I'll have another pass ASAP. I tend to agree without a some redesign (which is better served on a separate PR) we can't do much better than the current approach.

@ArangoGutierrez
Copy link
Contributor

/milestone v0.14

@k8s-ci-robot k8s-ci-robot added this to the v0.14 milestone Jul 4, 2023
@PiotrProkop PiotrProkop force-pushed the fix-topo-updater-policy-and-scope-advertisment branch 2 times, most recently from f9b77db to 5635bbf Compare July 20, 2023 09:57
Copy link
Contributor

@marquiz marquiz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @PiotrProkop for the enhancement. I have just a few notes after a quick read-through, relying mostly on @ffromani here :)

One ask: you have nice description in the related github issue, could you take some of that to the commit message?

pkg/nfd-topology-updater/nfd-topology-updater.go Outdated Show resolved Hide resolved
@@ -169,8 +173,13 @@ func (w *nfdTopologyUpdater) Run() error {
}
zones = resAggr.Aggregate(scanResponse.PodResources)
klog.V(1).InfoS("aggregated resources identified", "resourceZones", utils.DelayedDumper(zones))
shouldReReadKubeletConfig := false
if info.Event == kubeletnotifier.IntervalBased {
shouldReReadKubeletConfig = true
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we get this on the very first run when starting up?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checking now.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If I understand correctly current behavior there is no first run during startup. The first update happens either after sleepInterval or when nfd detects changes to checkpoint files.

pkg/nfd-topology-updater/nfd-topology-updater.go Outdated Show resolved Hide resolved
NFD is only detecting policy and scope of Topology Manager when NRT object doesn't exist.
This means that topologyManagerScope and topologyManagerPolicy attributes won't be updated
even if kubelet config was changed to use other TopologyManager policy and scope.

Signed-off-by: pprokop <[email protected]>
@PiotrProkop PiotrProkop force-pushed the fix-topo-updater-policy-and-scope-advertisment branch from 5635bbf to 6d98b61 Compare July 20, 2023 14:32
@PiotrProkop
Copy link
Contributor Author

Thanks @PiotrProkop for the enhancement. I have just a few notes after a quick read-through, relying mostly on @ffromani here :)

One ask: you have nice description in the related github issue, could you take some of that to the commit message?

Thanks for the review! Commit message changed.

@marquiz
Copy link
Contributor

marquiz commented Jul 21, 2023

Thx for the updates @PiotrProkop. I don't think I have much to add. I'll leave this to @ffromani now and will approve when he's happy

@marquiz
Copy link
Contributor

marquiz commented Jul 27, 2023

ping @ffromani

@ffromani
Copy link
Contributor

ping @ffromani

Hi! sorry for the delay I'll review by the end of this week (July 28)

@marquiz
Copy link
Contributor

marquiz commented Jul 27, 2023

Hi! sorry for the delay I'll review by the end of this week (July 28)

Thanks @ffromani, so take your time. No panic with this (yet), just wanted to remind so that this wouldn't be the last one pending

Copy link
Contributor

@ffromani ffromani left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/lgtm

Designwise I think this is good enough to fix the issue at hand. I don't see any blocking issue. I'm under the impression that we hit the tipping point (or we're very close to it) and that the environment changed enough to warrant a rethink of the flow and a redesign in a more cohesive way,

But it would be unfair to account his work on this PR, so let's go with this approach. I can't see obvious issue, so LGTM.

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Jul 27, 2023
@k8s-ci-robot
Copy link
Contributor

LGTM label has been added.

Git tree hash: d92efb0eb0bdcd13ab84ddf4f2b39e39af9f0cbe

Copy link
Contributor

@marquiz marquiz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @ffromani. I agree that going forward some re-architecting would be beneficial, e.g. detecting kubelet restarts or smth

@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: marquiz, PiotrProkop

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jul 28, 2023
@marquiz
Copy link
Contributor

marquiz commented Jul 28, 2023

/retest

@PiotrProkop
Copy link
Contributor Author

 /home/prow/go/src/github.com/kubernetes-sigs/node-feature-discovery/pkg/utils/memory_resources.go:54:17: n.Name undefined (type fs.DirEntry has no field or method Name) 

should I rebase my branch to fix it? @marquiz

@marquiz
Copy link
Contributor

marquiz commented Jul 28, 2023

should I rebase my branch to fix it? @marquiz

Hmm, no, the logcheck seems to be flaky 🧐
/retest

@codecov
Copy link

codecov bot commented Jul 28, 2023

Codecov Report

Merging #1256 (6d98b61) into master (fd0ba3f) will increase coverage by 2.77%.
Report is 20 commits behind head on master.
The diff coverage is 0.00%.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##           master    #1256      +/-   ##
==========================================
+ Coverage   29.19%   31.97%   +2.77%     
==========================================
  Files          52       54       +2     
  Lines        7234     7638     +404     
==========================================
+ Hits         2112     2442     +330     
- Misses       4896     4959      +63     
- Partials      226      237      +11     
Files Changed Coverage Δ
cmd/nfd-topology-updater/main.go 45.83% <0.00%> (+12.83%) ⬆️
pkg/nfd-topology-updater/nfd-topology-updater.go 3.25% <0.00%> (-1.07%) ⬇️

... and 5 files with indirect coverage changes

@k8s-ci-robot k8s-ci-robot merged commit e0f10a8 into kubernetes-sigs:master Jul 28, 2023
@marquiz marquiz mentioned this pull request Sep 6, 2023
25 tasks
nrdufour added a commit to nrdufour/home-ops that referenced this pull request Sep 8, 2023
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [node-feature-discovery](https://github.com/kubernetes-sigs/node-feature-discovery) | minor | `0.13.4` -> `0.14.0` |

---

### Release Notes

<details>
<summary>kubernetes-sigs/node-feature-discovery (node-feature-discovery)</summary>

### [`v0.14.0`](https://github.com/kubernetes-sigs/node-feature-discovery/releases/tag/v0.14.0)

[Compare Source](kubernetes-sigs/node-feature-discovery@v0.13.4...v0.14.0)

#### What's new

##### NodeFeature API

The [NodeFeature](https://kubernetes-sigs.github.io/node-feature-discovery/v0.14/usage/custom-resources.html#nodefeature) API is now enabled by default. The new CRD-based API replaces the previous gRPC-based communication between nfd-master and nfd-worker and, reducing network traffic and allows changes in NodeFeatureRules to take effect immediately (independent of the sleep-interval of nfd-worker). NodeFeature API can also be used to implement 3rd party extensions, see [customization guide](https://kubernetes-sigs.github.io/node-feature-discovery/v0.14/usage/customization-guide#nodefeature-custom-resource) for more details.

Garbage collection of stale NodeFeature objects was added in the form of nfd-gc daemon.

The gRPC API is now deprecated and will be removed in a future release. The related command-line flags are also deprecated (and don't have any effect when NodeFeature API is in use):

-   nfd-master: `-ca-file`, `-cert-file`, `-key-file`, `-port`, `-verify-node-name`
-   nfd-worker: `-ca-file`, `-cert-file`, `-key-file`, `-server`, `-server-name-override`

##### Metrics

NFD now provides Prometheus metrics for better observability. Also, the Helm and kustomize deployments support enabling metrics collection with the [Prometheus operator](https://github.com/prometheus-operator/prometheus-operator). See the [documentation](https://kubernetes-sigs.github.io/node-feature-discovery/v0.14/deployment/metrics.html) for more information about the available metrics and deployment instructions.

##### Hooks disabled by default

The deprecation of nfd-worker [hooks](https://kubernetes-sigs.github.io/node-feature-discovery/v0.14/usage/customization-guide.html#hooks) continues, disabling them by default in v0.14. Potential users of hooks are encouraged to switch to use the NFD CRDs ([NodeFeature](https://kubernetes-sigs.github.io/node-feature-discovery/v0.14/usage/customization-guide.html#nodefeature-custom-resource) and
[NodeFeatureRule](https://kubernetes-sigs.github.io/node-feature-discovery/v0.14/usage/customization-guide.html#nodefeaturerule-custom-resource)) or [feature files](https://kubernetes-sigs.github.io/node-feature-discovery/master/usage/customization-guide.html#feature-files). Hooks can still be enabled with the [`sources.local.hooksEnabled`](https://kubernetes-sigs.github.io/node-feature-discovery/master/reference/worker-configuration-reference.html#sourceslocalhooksenabled)
configuration option.

##### Feature files

**Expiry time:** NFD now supports specifying an expiry time for the features specified in a feature file, providing better lifecycle management for the feature labels. See the [documentation](https://kubernetes-sigs.github.io/node-feature-discovery/master/usage/customization-guide.html#input-format) for more details.

**Size limit:** There is now a 64kB size limit for feature files.

##### Miscellaneous

##### NodeFeatureRule API

Dynamic values for labels is now supported by using the `@` notation, see [documentation](https://kubernetes-sigs.github.io/node-feature-discovery/v0.14/usage/customization-guide.html#labels) for more details.

##### NFD-Master

-   support for leader election was added, enabling high-availability deployments with multiple-replicas of nfd-master (with the NodeFeature API enabled)
-   dynamically configurable logging parameters via the config file
-   configurable resync period for the CRD controller
-   parallelized node updates, speeding up simultaneous updates of large number of nodes (e.g. update in NodeFeatureRules in a big cluster), can be controlled with the [`-nfd-api-parallelism`](https://kubernetes-sigs.github.io/node-feature-discovery/v0.14/reference/master-commandline-reference.html#-nfd-api-parallelism) flag

##### CPU features

Detection of Intel TDX guests is now supported.

##### Logging

The project was migrated structured logging, making log messages more consistent, better machine parseable and enables future improvements in logging.

##### Support policy

The project now officially documented it's supported versions and deprecation policy, see the [documentation](https://kubernetes-sigs.github.io/node-feature-discovery/v0.14/reference/versions.html) for details.

#### List of PRs

-   test/e2e: use proper context ([#&#8203;1154](kubernetes-sigs/node-feature-discovery#1154))
-   deps: Update kubernetes to v1.27.1 ([#&#8203;1155](kubernetes-sigs/node-feature-discovery#1155))
-   generate: update k8s code-generator to v0.27.1 ([#&#8203;1156](kubernetes-sigs/node-feature-discovery#1156))
-   generate: update protoc to v22.3 ([#&#8203;1157](kubernetes-sigs/node-feature-discovery#1157))
-   generate: update controller-gen to v0.11.3 ([#&#8203;1158](kubernetes-sigs/node-feature-discovery#1158))
-   generate: update mockery to v2.25.1 ([#&#8203;1159](kubernetes-sigs/node-feature-discovery#1159))
-   nfd-master: support noPublish with -prune ([#&#8203;1161](kubernetes-sigs/node-feature-discovery#1161))
-   nfd-master: fix -prune ([#&#8203;1160](kubernetes-sigs/node-feature-discovery#1160))
-   nfd-master: don't create emtpy annotations ([#&#8203;1166](kubernetes-sigs/node-feature-discovery#1166))
-   nfd-master: fix a crash when processing NodeFeatureRules ([#&#8203;1173](kubernetes-sigs/node-feature-discovery#1173))
-   pkg/nfd-master/nfd-master.go: Fix typo ([#&#8203;1171](kubernetes-sigs/node-feature-discovery#1171))
-   nfd-master: reject malformed extended resource dynamic capacity assignment ([#&#8203;1169](kubernetes-sigs/node-feature-discovery#1169))
-   go.mod: update deps ([#&#8203;1178](kubernetes-sigs/node-feature-discovery#1178))
-   OWNERS: add ArangoGutierrez as an approver ([#&#8203;1180](kubernetes-sigs/node-feature-discovery#1180))
-   feat: add master resync period configurability ([#&#8203;1139](kubernetes-sigs/node-feature-discovery#1139))
-   nfd-topology-updater: fix wrong kubelet_internal_checkpoint path and compare basename to full path ([#&#8203;1167](kubernetes-sigs/node-feature-discovery#1167))
-   docs: add missing .md suffix to internal references ([#&#8203;1189](kubernetes-sigs/node-feature-discovery#1189))
-   nfd-master: log node name when processing NodeFeatureRules ([#&#8203;1191](kubernetes-sigs/node-feature-discovery#1191))
-   scripts/test-infra: provide PR info to codecov ([#&#8203;1194](kubernetes-sigs/node-feature-discovery#1194))
-   Match usage and example for prepare-release.sh ([#&#8203;1196](kubernetes-sigs/node-feature-discovery#1196))
-   apis/nfd: add unit tests for Feature type ([#&#8203;1190](kubernetes-sigs/node-feature-discovery#1190))
-   Update README to v0.13.1 ([#&#8203;1197](kubernetes-sigs/node-feature-discovery#1197))
-   scripts/test-infra: provide PR base SHA to codecov ([#&#8203;1199](kubernetes-sigs/node-feature-discovery#1199))
-   codecov: drop required minimum coverage ratio of a commit to 0% ([#&#8203;1200](kubernetes-sigs/node-feature-discovery#1200))
-   codecov: drop required minimum coverage ratio at patch level ([#&#8203;1201](kubernetes-sigs/node-feature-discovery#1201))
-   nfd-master: refactor api-controller object handling ([#&#8203;1198](kubernetes-sigs/node-feature-discovery#1198))
-   nfd-master: refactor filtering of labels, taints and ERs ([#&#8203;1202](kubernetes-sigs/node-feature-discovery#1202))
-   helm: fix mount for nfd-master config ([#&#8203;1204](kubernetes-sigs/node-feature-discovery#1204))
-   nfd-master: fix resync period config option ([#&#8203;1185](kubernetes-sigs/node-feature-discovery#1185))
-   deployment/helm: fix default for kubeletStateDir parameter ([#&#8203;1207](kubernetes-sigs/node-feature-discovery#1207))
-   deployment/kustomize: drop pod-resources mount for topology-updater ([#&#8203;1208](kubernetes-sigs/node-feature-discovery#1208))
-   test/e2e: refactor matching of node properties ([#&#8203;1184](kubernetes-sigs/node-feature-discovery#1184))
-   deployment/helm: avoid overlapping mount paths on topology-updater ([#&#8203;1212](kubernetes-sigs/node-feature-discovery#1212))
-   deployment/helm: user dedicated serviceaccount for topology-updater ([#&#8203;1213](kubernetes-sigs/node-feature-discovery#1213))
-   deployment/helm: improve handling of topologyUpdater.kubeletStateFiles ([#&#8203;1211](kubernetes-sigs/node-feature-discovery#1211))
-   topology-updater: use node IP in the default configz URI ([#&#8203;1218](kubernetes-sigs/node-feature-discovery#1218))
-   e2e: delete CRs only if found ([#&#8203;1221](kubernetes-sigs/node-feature-discovery#1221))
-   Add leader election for nfd-master ([#&#8203;1219](kubernetes-sigs/node-feature-discovery#1219))
-   Fixed typo in Header under deployment/kustomize.md ([#&#8203;1222](kubernetes-sigs/node-feature-discovery#1222))
-   nfd-master: use close for stop channel ([#&#8203;1227](kubernetes-sigs/node-feature-discovery#1227))
-   scripts/test-infra: bump golangci-lint to v1.52.2 ([#&#8203;1230](kubernetes-sigs/node-feature-discovery#1230))
-   nfd-master: add validation of label names and values ([#&#8203;1228](kubernetes-sigs/node-feature-discovery#1228))
-   Migrate to structured logging ([#&#8203;1223](kubernetes-sigs/node-feature-discovery#1223))
-   scripts/test-infra: add logcheck to verify script ([#&#8203;1235](kubernetes-sigs/node-feature-discovery#1235))
-   Update README to v0.13.2 ([#&#8203;1238](kubernetes-sigs/node-feature-discovery#1238))
-   github: update new-release issue template ([#&#8203;1239](kubernetes-sigs/node-feature-discovery#1239))
-   feat: support dynamic values for labels in the NodeFeatureRule ([#&#8203;1226](kubernetes-sigs/node-feature-discovery#1226))
-   feat: parallelize nodes update ([#&#8203;1133](kubernetes-sigs/node-feature-discovery#1133))
-   cpu: Discover TDX guests based on cpuid information ([#&#8203;1240](kubernetes-sigs/node-feature-discovery#1240))
-   deployment/kustomize: use a named port for nfd gRPC service ([#&#8203;1243](kubernetes-sigs/node-feature-discovery#1243))
-   Fix missing apostrophe for jq ([#&#8203;1245](kubernetes-sigs/node-feature-discovery#1245))
-   Fix a typo on nfd-master cmd ([#&#8203;1244](kubernetes-sigs/node-feature-discovery#1244))
-   Removal of the bases field as it is deprecated by kustomize ([#&#8203;1246](kubernetes-sigs/node-feature-discovery#1246))
-   Docs: Fix typo on customization-guide ([#&#8203;1247](kubernetes-sigs/node-feature-discovery#1247))
-   hooks: disable hooks by default from v0.14 ([#&#8203;1182](kubernetes-sigs/node-feature-discovery#1182))
-   Remove pkg's imported twice ([#&#8203;1248](kubernetes-sigs/node-feature-discovery#1248))
-   fix typo in helm chart ([#&#8203;1253](kubernetes-sigs/node-feature-discovery#1253))
-   Stop ticker in time to avoid memory leak ([#&#8203;1255](kubernetes-sigs/node-feature-discovery#1255))
-   nfd-master: check for nil references in nfdAPIUpdateAllNodes ([#&#8203;1258](kubernetes-sigs/node-feature-discovery#1258))
-   cpu: Take cgroupsv1 into account when reading misc.capacity ([#&#8203;1265](kubernetes-sigs/node-feature-discovery#1265))
-   go.mod: update kubernetes to v1.27.4 ([#&#8203;1268](kubernetes-sigs/node-feature-discovery#1268))
-   github: update assignees in new-release issue template ([#&#8203;1274](kubernetes-sigs/node-feature-discovery#1274))
-   Enable metrics via prometheus operator ([#&#8203;1242](kubernetes-sigs/node-feature-discovery#1242))
-   README: update to v0.13.3 ([#&#8203;1276](kubernetes-sigs/node-feature-discovery#1276))
-   docs: document version and deprecation policy ([#&#8203;1279](kubernetes-sigs/node-feature-discovery#1279))
-   docs: fix toc of topology-updater and topology-gc reference ([#&#8203;1278](kubernetes-sigs/node-feature-discovery#1278))
-   docs: remove useless TOCs ([#&#8203;1280](kubernetes-sigs/node-feature-discovery#1280))
-   Add optional labels to the podmonitor ([#&#8203;1282](kubernetes-sigs/node-feature-discovery#1282))
-   docs: describe supported Kubernetes versions ([#&#8203;1277](kubernetes-sigs/node-feature-discovery#1277))
-   docs: deprecation policy for Helm chart params ([#&#8203;1283](kubernetes-sigs/node-feature-discovery#1283))
-   Fix Topology Manager policy and scope not being updated after NRT creation ([#&#8203;1256](kubernetes-sigs/node-feature-discovery#1256))
-   generate: bump tools to their latest versions ([#&#8203;1284](kubernetes-sigs/node-feature-discovery#1284))
-   Improve metrics ([#&#8203;1288](kubernetes-sigs/node-feature-discovery#1288))
-   docs: align metrics documentation with latest changes on naming ([#&#8203;1289](kubernetes-sigs/node-feature-discovery#1289))
-   docs: unify formatting of NOTEs ([#&#8203;1292](kubernetes-sigs/node-feature-discovery#1292))
-   source/local: trim whitespace from input ([#&#8203;1293](kubernetes-sigs/node-feature-discovery#1293))
-   source/local: support comments in input ([#&#8203;1294](kubernetes-sigs/node-feature-discovery#1294))
-   nfd-master: use term node update instead of labeling ([#&#8203;1291](kubernetes-sigs/node-feature-discovery#1291))
-   docs: document -metrics flag in command line reference ([#&#8203;1296](kubernetes-sigs/node-feature-discovery#1296))
-   fix empty hugepages in some numa nodes caused no such file or directory errors ([#&#8203;1287](kubernetes-sigs/node-feature-discovery#1287))
-   scripts/test-infra: update logcheck tool to v0.6.0 ([#&#8203;1299](kubernetes-sigs/node-feature-discovery#1299))
-   scripts/test-infra: bump golangci-lint to v1.54.0 ([#&#8203;1300](kubernetes-sigs/node-feature-discovery#1300))
-   Update kubernetes to v1.28.0 ([#&#8203;1302](kubernetes-sigs/node-feature-discovery#1302))
-   docs: update github-pages gem to v228 ([#&#8203;1303](kubernetes-sigs/node-feature-discovery#1303))
-   topology-gc: fix Stop ([#&#8203;1306](kubernetes-sigs/node-feature-discovery#1306))
-   topology-gc: rename run() ([#&#8203;1309](kubernetes-sigs/node-feature-discovery#1309))
-   topology-gc: rename runGC to garbageCollect() ([#&#8203;1310](kubernetes-sigs/node-feature-discovery#1310))
-   nfd-topology-updater: add metrics support ([#&#8203;1295](kubernetes-sigs/node-feature-discovery#1295))
-   topology-gc: refactor unit tests ([#&#8203;1307](kubernetes-sigs/node-feature-discovery#1307))
-   topology-gc: move initial GC out of startNodeInformer() ([#&#8203;1308](kubernetes-sigs/node-feature-discovery#1308))
-   topology-gc: simplify listing of node objects ([#&#8203;1311](kubernetes-sigs/node-feature-discovery#1311))
-   metrics: additional metrics for nfd-master ([#&#8203;1290](kubernetes-sigs/node-feature-discovery#1290))
-   Garbage collection of NodeFeature objects ([#&#8203;1305](kubernetes-sigs/node-feature-discovery#1305))
-   topology-updater: make -version always runnable ([#&#8203;1297](kubernetes-sigs/node-feature-discovery#1297))
-   go.mod: update kubernetes to v1.28.1 ([#&#8203;1315](kubernetes-sigs/node-feature-discovery#1315))
-   Makefile: increase golangci-lint timeout to 10min ([#&#8203;1320](kubernetes-sigs/node-feature-discovery#1320))
-   docs: use ruby docker image for building docs ([#&#8203;1319](kubernetes-sigs/node-feature-discovery#1319))
-   README: update to v0.13.4 ([#&#8203;1324](kubernetes-sigs/node-feature-discovery#1324))
-   test: add node updater pool unit tests ([#&#8203;1252](kubernetes-sigs/node-feature-discovery#1252))
-   docs: nfd-updater: clarify accounting ([#&#8203;1321](kubernetes-sigs/node-feature-discovery#1321))
-   nfd-updater: events: enable timer-only flow ([#&#8203;1325](kubernetes-sigs/node-feature-discovery#1325))
-   docs: demote hooks in the customization guide ([#&#8203;1326](kubernetes-sigs/node-feature-discovery#1326))
-   Feat: add expiry date for feature files ([#&#8203;1285](kubernetes-sigs/node-feature-discovery#1285))
-   Dockerfile: bump grpc-health-probe to v0.4.19 ([#&#8203;1327](kubernetes-sigs/node-feature-discovery#1327))
-   e2e/test: make the nfd-gc test pass on one-node cluster ([#&#8203;1328](kubernetes-sigs/node-feature-discovery#1328))
-   Enable NodeFeature API by default ([#&#8203;1329](kubernetes-sigs/node-feature-discovery#1329))
-   tls.md: Add note ([#&#8203;1332](kubernetes-sigs/node-feature-discovery#1332))
-   nfd_gc_test.go: fix multiple import of same pkg ([#&#8203;1333](kubernetes-sigs/node-feature-discovery#1333))
-   feat: add feature file size limit ([#&#8203;1335](kubernetes-sigs/node-feature-discovery#1335))
-   sources/custom: convert static rules to new format ([#&#8203;1336](kubernetes-sigs/node-feature-discovery#1336))
-   nfd-master: add config file options for logging ([#&#8203;1338](kubernetes-sigs/node-feature-discovery#1338))
-   Deprecate gRPC API ([#&#8203;1334](kubernetes-sigs/node-feature-discovery#1334))
-   Helm: conditionally add annotations if defined ([#&#8203;1331](kubernetes-sigs/node-feature-discovery#1331))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4yMy4yIiwidXBkYXRlZEluVmVyIjoiMzYuMjMuMiIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Reviewed-on: https://git.home/nrdufour/home-ops/pulls/78
Co-authored-by: Renovate <[email protected]>
Co-committed-by: Renovate <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. lgtm "Looks good to me", indicates that a PR is ready to be merged. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Can't update topologyManagerPolicy and topologyManagerScope attributes of NodeResourceTopology
5 participants