1
0
Fork 0
mirror of https://github.com/kubernetes-sigs/node-feature-discovery.git synced 2024-12-14 11:57:51 +00:00
Node feature discovery for Kubernetes
Find a file
Markus Lehtonen 8ad6210d5c nfd-master: use separate k8s api clients for each updater
Sharing the same client between updater threads virtually serializes
access, in practice making the effective parallelism close to 1.

With this patch, in my bench cluster of 300 nodes, the time taken by
updating all nodes drops from ~2 minutes to ~12 seconds (with the
default parallelism of 10 node updater threads). This demonstrates the
10-fold increased parallelism from ~1 to 10.

There might be other solutions that could be explored, e.g. caching
nodes with an indexer/lister but otoh nfd doesn't necessarily need/want
to watch every little change in each node. We only need to get the node
when something in our own CRDs change (we don't react to any changes in
the node object itself). Using multiple clients was the most obvious
choice to solve the problem for now.
2024-04-15 19:00:30 +03:00
.github github: update tagging instructions in release checklists 2023-12-22 10:00:13 +02:00
cmd nfd-master: implement opts for modifying NfdMaster instance 2024-04-05 20:21:19 +03:00
demo demo: make demo runnable again 2020-09-10 17:09:53 +03:00
deployment Merge pull request #1639 from TessaIO/chore-add-prometheus-pod-monitor-interval 2024-04-05 03:03:26 -07:00
docs Merge pull request #1639 from TessaIO/chore-add-prometheus-pod-monitor-interval 2024-04-05 03:03:26 -07:00
enhancements/1186-spiffe-integration docs: add kep of spiffe integration 2024-01-18 15:09:10 +01:00
examples source/system: Add reading vendor information 2024-02-19 15:40:31 +02:00
hack Update generate scripts to use latest code_gen functions 2024-03-12 11:35:47 +01:00
pkg nfd-master: use separate k8s api clients for each updater 2024-04-15 19:00:30 +03:00
scripts Add FeatureGate framework to handle new features 2024-03-15 19:11:32 +01:00
source Merge pull request #1585 from kannon92/add-swap-support 2024-03-18 04:19:48 -07:00
test Merge pull request #1602 from ozhuraki/nrt-owner-ref 2024-03-19 01:12:59 -07:00
.dockerignore dockerignore: cleanup 2023-12-08 14:48:02 +02:00
.gitignore gitignore: ignore codecov coverage report 2023-03-13 12:08:32 +02: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
codecov.yml codecov: drop required minimum coverage ratio of at patch level 2023-04-28 17:00:14 +03:00
CONTRIBUTING.md Template project files 2016-07-22 22:13:48 -07:00
Dockerfile Replace gRPC health probe utility with k8s built-in health probe 2023-09-20 12:25:36 +03:00
Dockerfile_generator Update generate scripts to use latest code_gen functions 2024-03-12 11:35:47 +01:00
go.mod go.mod: bump github.com/golang/protobuf to v1.5.4 2024-03-14 14:58:09 +02:00
go.sum go.mod: bump github.com/golang/protobuf to v1.5.4 2024-03-14 14:58:09 +02:00
LICENSE Template project files 2016-07-22 22:13:48 -07:00
Makefile Update generate scripts to use latest code_gen functions 2024-03-12 11:35:47 +01:00
netlify.toml Add netlify configuration file 2022-09-16 00:47:49 +03:00
OWNERS replace AhmedGrati account with TessaIO as reviewer 2024-03-16 21:37:05 +01:00
README.md Update readme to v0.15.4 release 2024-03-28 11:35:54 +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.15.4
  namespace/node-feature-discovery created
  customresourcedefinition.apiextensions.k8s.io/nodefeaturerules.nfd.k8s-sigs.io created
  customresourcedefinition.apiextensions.k8s.io/nodefeatures.nfd.k8s-sigs.io created
  serviceaccount/nfd-gc created
  serviceaccount/nfd-master created
  serviceaccount/nfd-worker created
  role.rbac.authorization.k8s.io/nfd-worker created
  clusterrole.rbac.authorization.k8s.io/nfd-gc created
  clusterrole.rbac.authorization.k8s.io/nfd-master created
  rolebinding.rbac.authorization.k8s.io/nfd-worker created
  clusterrolebinding.rbac.authorization.k8s.io/nfd-gc created
  clusterrolebinding.rbac.authorization.k8s.io/nfd-master created
  configmap/nfd-master-conf created
  configmap/nfd-worker-conf created
  deployment.apps/nfd-gc 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-gc-565fc85d9b-94jpj       1/1     Running   0          18s
  pod/nfd-master-6796d89d7b-qccrq   1/1     Running   0          18s
  pod/nfd-worker-nwdp6              1/1     Running   0          18s
...

$ 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",
...