1
0
Fork 0
mirror of https://github.com/kubernetes-sigs/node-feature-discovery.git synced 2025-03-06 08:47:04 +00:00
Commit graph

163 commits

Author SHA1 Message Date
Markus Lehtonen
a7764bfc82 Remove references to nfd version label from README
Annotations are used for this information, instead.
2018-12-04 15:13:12 +02:00
Markus Lehtonen
a1e60ba92b Remove 'nfd' label prefix from README and demos, too 2018-12-04 15:13:12 +02:00
Markus Lehtonen
4053010dd9 Make the kernel feature source configurable
Adding two config options:
- kernel config file to read
- kconfig options that are detected
2018-12-04 09:34:56 +02:00
Markus Lehtonen
ce129aef88 Implement kernel config detection
This implementation only detects kconfig options ("NO_HZ", "NO_HZ_IDLE",
"NO_HZ_FULL" and "PREEMPT"). The corresponding node labels will be
  node.alpha.kubernetes-incubator.io/nfd-kernel-config.<option name>

Currently, only bool and tristate (i.e. '=y' or '=m') kernel config
options are supported. Other kconfig types (e.g. string or int) are
simply ignored. If the kconfig flag is set to '=y' or '=m', the
corresponding node label will be present and it's value will be 'true'.
2018-12-04 09:34:56 +02:00
Markus Lehtonen
5af04ca3f6 source/local: allow full control of label name
Make it possible for the hooks to fully define the label name to be used
(i.e. without the '<hook name>-' prefix) by prefixing the printed
feature names with a slash ('/'). This makes it possible to e.g.
override labels create by other sources.

For example having the following output from a hook:
/override_source-override_bool
/override_source-override_value=my value

will translate into the following feature labels:
feature.node.kubernetes.io/override_source-override_bool = true
feature.node.kubernetes.io/override_source-override_value = my value
2018-11-30 11:51:41 +02:00
Markus Lehtonen
4b066ed815 source/local: support non-binary labels
Make the feature detector hooks, run by the 'local' feature source,
support non-binary label values. Hooks can advertise non-binary value by
using <name>=<value> format.

For example, /etc/kubernetes/node-feature-discovery/source.d/myhook
having the following stdout:
LABEL_1
LABEL_2=foobar

Would translate into the following labels:
feature.node.kubernetes.io/myhook-LABEL_1 = true
feature.node.kubernetes.io/myhook-LABEL_2 = foobar
2018-11-30 11:51:41 +02:00
Markus Lehtonen
a84b5c9d82 Support feature detector hooks
Implement a new feature source named 'local' whose only purpose is to
run feature source hooks found under
/etc/kubernetes/node-feature-discovery/source.d/ It tries to execute all
files found under the directory, in alphabetical order.

This feature source provides users a mechanism to implement custom
feature sources in a pluggable way, without modifying nfd source code or
Docker images.

The hooks are supposed to print all discovered features in stdout, one
feature per line. The output in stdout is used in the node label as is.
Full node label name will have the following format:
  feature.node.kubernetes.io/<hook name>-<feature name>
Stderr from the hooks is propagated to nfd log.
2018-11-30 11:51:41 +02:00
Markus Lehtonen
2cefd312a8 Change label namespace to feature.node.kubernetes.io 2018-11-30 09:56:31 +02:00
Obed N Munoz
6855953300 Update README.md documentation
This commit fixes demo video broken link (from png to svg image) and updates
link to `node-feature-discovery-job.yaml.template` file.

Signed-off-by: Obed N Munoz <obed.n.munoz@intel.com>
2018-11-16 11:20:21 +02:00
Markus Lehtonen
86947fc16b Implement kernel version detection
Add a new 'kernel' feature source, detecting the kernel version. The
kernel version is split into multiple labels in order to make this more
usable in label selectors. Kernel version in the format X.Y.Z-patch will
be presented as
  node.alpha.kubernetes-incubator.io/nfd-kernel-version.full=X.Y.Z-patch
  node.alpha.kubernetes-incubator.io/nfd-kernel-version.major=X
  node.alpha.kubernetes-incubator.io/nfd-kernel-version.minor=Y
  node.alpha.kubernetes-incubator.io/nfd-kernel-version.revision=Z

The '.full' label will always be avaiable. The other labels if these
components can be parsed from the kernel version number.
2018-10-10 13:21:49 +03:00
Markus Lehtonen
56c2ab3d58 Support for non-binary labels
Make it possible to advertise also other than simple 'true' values for
feature labels.
2018-10-10 13:21:49 +03:00
Markus Lehtonen
b0fedab786 sources/pci: make device label format configurable
Add new config option for specifying the device label, i.e. the
<device-label> part in
    node.alpha.kubernetes-incubator.io/nfd-pci-<device label>.present

The option is a list of field names:
    "class"             PCI device class
    "vendor"            Vendor ID
    "device"            Device ID
    "subsystem_vendor"  Subsystem vendor ID
    "subsystem_device"  Subsystem device ID

E.g. the following command line flag can be used to use all of the
above:
  --options='{"sources": {"pci": {"deviceLabelFields": ["class", "vendor", "device", "subsystem_vendor", "subsystem_device"] } } }'
2018-10-10 12:36:20 +03:00
Markus Lehtonen
b0d0797936 Add config support for the pci feature source
User can now configure the list of device classes to detect, either via
a configuration file or by using the --options command line flag.

An example of a command line flag to detect all network controllers and
("main class 0x02) and VGA display controllers ("main" class 0x03 and
subclass 0x00) would be:
  --options='{"sources": {"pci": {"deviceClassWhitelist": ["02", "0300"] } } }'
2018-10-10 12:36:20 +03:00
Markus Lehtonen
74d6993e9b Implement PCI feature source
This feature source detects the presence of PCI devices. At the moment,
it only advertises GPUs and accelerator cards, i.e. device classes 0x03,
0x0b40 and 0x12.

The label format is:
  node.alpha.kubernetes-incubator.io/nfd-pci-<device label>.present
where <device label> is composed of raw PCI IDs:
  <class id>_<vendor id>
2018-10-10 12:36:20 +03:00
Markus Lehtonen
244e049729 Make it possible to override config options from command line
Implement new '--options' command line flag that can be used to specify
config options from command line. Options specified via this command
line flag will override those read from the config file. The same format
as in the config file must be used, that is, the flag value must be
valid YAML or JSON.
2018-10-10 10:24:34 +03:00
Markus Lehtonen
917151728a Add config file support
Support yaml/json based config file for nfd. This commit does not add
any actual consumers for the config file, yet.

By default, nfd tries to read
/etc/kubernetes/node-feature-discovery/node-feature-discovery.conf.
This can be changed by specifying the --config command line flag.
2018-10-10 10:24:34 +03:00
Markus Lehtonen
4fa7ae38e3 network: rename sriov labels
Introduce a new scheme where features may have logical sub-components.
Rename sriov labels from the network source according to the new
pattern:
  sriov            -> sriov.capable
  sriov-configured -> sriov.configured

Also, document this new labeling scheme in the README.

Signed-off-by: Markus Lehtonen <markus.lehtonen@intel.com>
2018-10-03 15:25:58 +03:00
Markus Lehtonen
41f9a14a24
Convert templates and examples from json to yaml (#108)
Convert resource templates from json to yaml

Yaml is easier and less error prone to modify by hand. It also allows
comments which can be especially useful in the templates.
2018-09-27 14:54:45 +03:00
Markus Lehtonen
f8bea163de Update resource templates to use v0.3.0 2018-09-27 13:55:27 +03:00
Markus Lehtonen
d394cf7ab3 Mention volume mounts in README
Add a note about required volume mounts when running NFD directly with
docker run.
2018-09-20 10:19:44 +03:00
Markus Lehtonen
ed5a259eaa Configurable image build tool
Make it possible to specify an image build tool other than docker - a
limitation is that the build tool must be compatible with docker files,
of course. This makes it possible to build an NFD image without the
Docker daemon, for example.

The image build command is specified in a makefile variable and can be
overridden from command line, for example:
$ make IMAGE_BUILD_CMD="buildah bud"

Thanks: Zvonko Kosic for suggesting this
2018-09-20 09:28:28 +03:00
Markus Lehtonen
175305b1ad Implement detection of IOMMU (#136) (#137)
* Arrange feature sources alphabetically

Just a cosmetic change, but, a small readability improvement.

* Implement detection of IOMMU (#136)

Add a new feature source, i.e. 'iommu', which detects if an IOMMU is
present and enabled in the kernel. The new node label is
  node.alpha.kubernetes-incubator.io/nfd-iommu-present
2018-07-24 08:24:45 -07:00
Olev Kartau
420baf3dce Add, correct some notes in documentation
A "newbie style" deployment attempt was made on a recent
cluster, and some added notes in README and in label-nodes.sh
could help someone who just started with node-feature-discovery.
Correcting also description of label-nodes.sh which does not
deal with unlabeled nodes as was promised in README.
2018-07-09 15:02:42 +03:00
Markus Lehtonen
3de2a31f2e Update the container image tags in the templates to v0.2.0 2018-06-25 11:37:50 +03:00
Sakari Poussa
23a1e19635 Add RBAC policy (#126)
* Add rbac.yaml which contains needed rules for NFD to work on a RBAC
  enabled cluster
* Add lines to templates to use the RBAC policy
* Update README
2018-06-14 09:08:25 -07:00
Olev Kartau
e984154090 Added more Intel RDT capability discovery: CMT,MBM,MBA (#120)
Added Memory Bandwith Allocation (MBA) capability discovery.
Refined RDT monitoring capability detection;
Cache Monitoring Technology (CMT) and
Memory Bandwidth Monitoring (MBM)
capabilities can be detected separately.
2018-05-24 16:49:00 -07:00
Markus Lehtonen
01e2110a5c Make it possible to run nfd as a DaemonSet (#105)
* Re-order imports in main.go alphabetically
* Refactor argument parsing
* Run nfd periodically in a loop by default
* Implement --sleep-interval command line option
* Add template for running nfd as a Kubernetes DaemonSet
2018-04-11 09:33:06 -07:00
Balaji Subramaniam
0150183f60
Merge pull request #117 from lubinsz/pr_readme
Add Arm64 details into the README
2018-04-10 16:42:24 -07:00
Bin Lu
0bb901edb3 Add Arm64 details into the README
Signed-off-by: Bin Lu <bin.lu@arm.com>
2018-04-10 14:05:39 +08:00
Naga Ravi Chaitanya Elluri
60de66fc03 Advertise selinux status by adding labels
This commit:
- enables node-feature-dicovery to advertise selinux status
  on the node by adding a label.

- update the template to mount /sys into the container, this is
  needed to know about the selinux status on the host

- adds selinux source for unit tests
2018-04-09 16:13:45 -04:00
Olev Kartau
00615be083 Add memory source and NUMA detection.
If multiple nodes are marked online in
/sys/devices/system/node/online, it's a sign of NUMA
architecture. Mark it using nfd-memory-numa label.
2018-03-29 09:43:42 +03:00
Olev Kartau
e22ae236cd Added nonrotational storage detection
This change adds feature source "storage".
Add label if any non-rotational block device is present in the node.
The label will be: nfd-storage-nonrotationaldisk=true
2018-03-27 14:30:27 +03:00
swatisehgal
41da99a435 Adding SR-IOV capability discovery to node-feature-discovery (#49)
* Adding SR-IOV capability discovery to node-feature-discovery

* SR-IOV capability discovery in NFD : code update after PR review
- using hostnetwork instead of volume mount in file node-feature-discovery-job.json.template
- iterating through network interfaces that are "up" in sources.go
- inserting logs in sources.go
- change in feature source name from "netid" to "network" in sources.go, README.md and main.go

*  Added code for labels sriov=true (sriov_totalvfs > 0) and sriov-configured=true (sriov_numvfs > 0)

* Code Refactored: Added Network package and network.go
2017-11-28 15:47:11 +01:00
nfd-merge-bot
944ca4b5d5 Merge pull request #68 from asifdxtreme/patch-1
Automatic merge from submit-queue

Add GoReport Card Widget
2017-08-14 11:26:40 -07:00
Mohammad Asif Siddiqui
b6541ae44c Add GoReport Card Widget 2017-08-14 21:11:23 +08:00
Malepati Bala Siva Sai Akhil
aff1747816 Fix Typo in node-feature-discovery README 2017-08-14 00:46:45 +05:30
Connor Doyle
8922cb9c8e Add note about using GitHub milestones. 2016-12-08 14:21:53 -08:00
Balaji Subramaniam
0d31ad8f0e Updated demo.
- Updated pod templates with new label prefix.
- Minor changes to job scripts and readme.
2016-11-17 11:15:32 -08:00
nfd-merge-bot
307348468a Merge pull request #31 from ConnorDoyle/update-namespace
Automatic merge from submit-queue

Update published label prefix.

Fixes #27.
- Changed prefix from `node.alpha.intel.com/nfd` to
  `node.alpha.kubernetes-incubator.io/nfd`
2016-11-16 08:52:47 -08:00
Cody Roseborough
88c15c2358 Fixes #25: Deletes non-discovered nfd labels
Adds RemoveLabels() to remove all labels from a node that contains the
supplied search string. Uses this to remove node-feature-discovery
labels prior to re-applying newly discovered labels.

This behavior applies to consecutive runs of node-feature-discovery and
whatever restrictions are placed on it. For example if a whitelist is
specified that changes the labels that are discovered, any labels that
do not match the whitelist will be removed. Adds a small note to the
readme to point out this fact.

Adds tests to main_test.go to test the behavior of AddLabels and
RemoveLabels.
2016-11-02 14:40:17 -07:00
Connor Doyle
9443bc65ab Update published label prefix.
- Changed prefix from `node.alpha.intel.com/nfd` to
  `node.alpha.kubernetes-incubator.io/nfd`
2016-10-26 15:36:12 -07:00
nfd-merge-bot
be5a271e8f Merge pull request #28 from ConnorDoyle/rm-version-from-keys
Automatic merge from submit-queue

Removed version from published label keys.

Fixes #24
2016-10-26 12:22:24 -07:00
Connor Doyle
abb5164508 Removed version from published label keys. 2016-10-26 11:26:51 -07:00
Connor Doyle
906412d961 Updated CLI usage info in README. 2016-10-25 20:05:20 -07:00
Balaji Subramaniam
320845f8dd Added demo.
- Added helper scripts for running the apps.
- Added templates to express affinity and anti-affinity.
- Updated/Added readme appropriately.
- Added asciicast where appropriate.
2016-09-30 13:10:05 -07:00
Balaji Subramaniam
41abde10b3 Integrated with travis-ci. (#15)
- Added .travis.yml.
- Updated readme to show build status.
2016-09-23 14:08:03 -07:00
Connor Doyle
132d9abdd3 Ask users to identify themselves per grad reqs. 2016-09-19 17:12:54 -07:00
Connor Doyle
7ae49a235d Merge pull request #9 from balajismaniam/host-image-in-quay
Hosted docker image in quay.io.
2016-09-06 10:15:56 -07:00
Balaji Subramaniam
9e37744d5c Hosted docker image in quay.io.
- Updated makefile, job template and readme.
2016-09-02 16:04:04 -07:00
Brandon Philips
f76113c2d3 README: add a kubernetes incubator section 2016-08-31 13:19:42 -07:00