1
0
Fork 0
mirror of https://github.com/kubernetes-sigs/node-feature-discovery.git synced 2025-03-28 02:37:11 +00:00
Node feature discovery for Kubernetes
Find a file
Talor Itzhak 0f65b87329 kubeletnotifier: introduce kubeletnotifier package
Enabling reactive update for nfd-topology-updater
by detecting changes in Kubelet state/checkpoint files,
and signaling to the main loop to update the NodeResourceTopology
objects.

This has high value when scaling is an issue.
Having multiple pods deployed in between single update instance
might reflect incorrect resource accounting in the NRT CRs.
Example:
Time Interval = 5s
t0 - New update sent to NRT CRs
t1 - Schedule guaranteed podA
t2 - Schedule guaranteed podB
time elapsed between t0-t2 < 5 seconds,
IOW the update on t0 is the recent update.

In t2 the resource accounting reflected by NRT
is not aligned with the actual accounting because
NRT CRs doesn't reflect the change happened in t1.

With this reactive update feature we expect an update to be trigger
between t1 and t2 so the NRT objects will reflect more accurate
picture.

There still might be a scenario when the updates
aren't fast enough, but this is an additional
future planned optimization.

The notifier has two event types:
1. Time based - keeping the old behavior, trigger
an update per interval.
2. FS event - trigger an update when Kubelet state/checkpoint files modified.

Signed-off-by: Talor Itzhak <titzhak@redhat.com>
2023-03-12 12:37:24 +02:00
.github OWNERS: Update Ethyling username to jjacobelli 2023-02-13 09:43:40 +01:00
cmd topology-updater:compute pod set fingerprint 2023-02-22 10:22:50 +01:00
demo demo: make demo runnable again 2020-09-10 17:09:53 +03:00
deployment Merge pull request #1080 from marquiz/devel/deploy-topology-updater 2023-03-09 09:50:02 -08:00
docs Update worker-configuration-reference.md 2023-03-08 21:33:44 +05:30
examples docs: add customization guide 2022-01-08 09:56:05 +02:00
hack apis/nfd: add CRD for communicating node features 2022-12-14 07:31:28 +02:00
pkg kubeletnotifier: introduce kubeletnotifier package 2023-03-12 12:37:24 +02:00
scripts scripts/test-infra: bump golangci-lint to v1.51.2 2023-03-10 12:12:09 +02:00
source source/cpu: fix build flags of cpuid detection 2023-02-17 21:46:05 +02:00
test test: implement e2e test of the deny-label-ns flag 2023-03-10 11:11:36 +01:00
.dockerignore dockerignore: tidy up and update 2020-05-19 10:13:54 +03:00
.gitignore Only add kustomization.yaml in the root to .gitignore 2021-08-26 15:27:03 +01:00
cloudbuild.yaml Increase allowed image build timeout 2022-10-27 01:03:25 +03:00
code-of-conduct.md Update code-of-conduct.md 2017-12-20 14:12:51 -05:00
CONTRIBUTING.md Template project files 2016-07-22 22:13:48 -07:00
Dockerfile test: move out unit testing from Dockerfile 2023-02-02 01:00:32 +02:00
Dockerfile_generator generate: use common builder base image 2022-09-08 12:43:15 +03:00
go.mod go.mod: update kubernetes to v1.26.2 2023-03-10 15:31:16 +02:00
go.sum go.mod: update kubernetes to v1.26.2 2023-03-10 15:31:16 +02:00
LICENSE Template project files 2016-07-22 22:13:48 -07:00
Makefile test: add code coverage reporting 2023-03-01 14:34:30 +02:00
netlify.toml Add netlify configuration file 2022-09-16 00:47:49 +03:00
OWNERS OWNERS: Update Ethyling username to jjacobelli 2023-02-13 09:43:40 +01:00
README.md README: update to release v0.12.1 2023-01-18 17:16:30 +02:00
SECURITY_CONTACTS Update SECURITY_CONTACTS 2020-11-19 15:10:27 -05:00
Tiltfile Update base image to Debian bullseye 2022-10-14 10:04:04 +03:00

Node Feature Discovery

Go Report Card Prow Build Prow E2E-Test

Welcome to Node Feature Discovery a Kubernetes add-on for detecting hardware features and system configuration!

See our Documentation for detailed instructions and reference

Quick-start the short-short version

$ kubectl apply -k https://github.com/kubernetes-sigs/node-feature-discovery/deployment/overlays/default?ref=v0.12.1
  namespace/node-feature-discovery created
  customresourcedefinition.apiextensions.k8s.io/nodefeaturerules.nfd.k8s-sigs.io created
  serviceaccount/nfd-master created
  clusterrole.rbac.authorization.k8s.io/nfd-master created
  clusterrolebinding.rbac.authorization.k8s.io/nfd-master created
  configmap/nfd-worker-conf created
  service/nfd-master created
  deployment.apps/nfd-master created
  daemonset.apps/nfd-worker created

$ kubectl -n node-feature-discovery get all
  NAME                              READY   STATUS    RESTARTS   AGE
  pod/nfd-master-555458dbbc-sxg6w   1/1     Running   0          56s
  pod/nfd-worker-mjg9f              1/1     Running   0          17s
...

$ kubectl get no -o json | jq .items[].metadata.labels
  {
    "kubernetes.io/arch": "amd64",
    "kubernetes.io/os": "linux",
    "feature.node.kubernetes.io/cpu-cpuid.ADX": "true",
    "feature.node.kubernetes.io/cpu-cpuid.AESNI": "true",
...