diff --git a/master/404.html b/master/404.html index d71424202..1d2c73c96 100644 --- a/master/404.html +++ b/master/404.html @@ -1 +1 @@ - 404 · Node Feature Discovery

404

Not Found


Node Feature Discovery
master
Versions
GitHub
Homepage
Issues
Download

The software is under the terms of Apache License 2.0.
\ No newline at end of file + 404 · Node Feature Discovery

404

Not Found


Node Feature Discovery
master
Versions
GitHub
Homepage
Issues
Download

The software is under the terms of Apache License 2.0.
\ No newline at end of file diff --git a/master/advanced/developer-guide.html b/master/advanced/developer-guide.html index 24816f71b..87c24bb5e 100644 --- a/master/advanced/developer-guide.html +++ b/master/advanced/developer-guide.html @@ -1,4 +1,4 @@ - Developer guide · Node Feature Discovery

Developer guide

Table of contents

  1. Building from source
    1. Download the source code
    2. Docker build
    3. Deployment
    4. Building locally
    5. Customizing the build
    6. Testing
  2. Running locally
    1. NFD-Master
    2. NFD-Worker
  3. Documentation

Building from source

Download the source code

git clone https://github.com/kubernetes-sigs/node-feature-discovery
+                      Developer guide · Node Feature Discovery              

Developer guide

Table of contents

  1. Building from source
    1. Download the source code
    2. Docker build
    3. Deployment
    4. Building locally
    5. Customizing the build
    6. Testing
  2. Running locally
    1. NFD-Master
    2. NFD-Worker
  3. Documentation

Building from source

Download the source code

git clone https://github.com/kubernetes-sigs/node-feature-discovery
 cd node-feature-discovery
 

Docker build

Build the container image

See customizing the build below for altering the container image registry, for example.

make
 

Push the container image

Optional, this example with Docker.

docker push <IMAGE_TAG>
@@ -75,4 +75,4 @@ Usage of nfd-worker:
         Print version and exit.
 

NOTE Some feature sources need certain directories and/or files from the host mounted inside the NFD container. Thus, you need to provide Docker with the correct --volume options in order for them to work correctly when run stand-alone directly with docker run. See the default deployment for up-to-date information about the required volume mounts.

Documentation

All documentation resides under the docs directory in the source tree. It is designed to be served as a html site by GitHub Pages.

Building the documentation is containerized in order to fix the build environment. The recommended way for developing documentation is to run:

make site-serve
 

This will build the documentation in a container and serve it under localhost:4000/ making it easy to verify the results. Any changes made to the docs/ will automatically re-trigger a rebuild and are reflected in the served content and can be inspected with a simple browser refresh.

In order to just build the html documentation run:

make site-build
-

This will generate html documentation under docs/_site/.


Node Feature Discovery
master
Versions
GitHub
Homepage
Issues
Download

The software is under the terms of Apache License 2.0.
\ No newline at end of file +

This will generate html documentation under docs/_site/.


Node Feature Discovery
master
Versions
GitHub
Homepage
Issues
Download

The software is under the terms of Apache License 2.0.
\ No newline at end of file diff --git a/master/advanced/index.html b/master/advanced/index.html index 34c8713e4..bea54e716 100644 --- a/master/advanced/index.html +++ b/master/advanced/index.html @@ -1 +1 @@ - Advanced · Node Feature Discovery

Advanced

Advanced topics and reference.


Node Feature Discovery
master
Versions
GitHub
Homepage
Issues
Download

The software is under the terms of Apache License 2.0.
\ No newline at end of file + Advanced · Node Feature Discovery

Advanced

Advanced topics and reference.


Node Feature Discovery
master
Versions
GitHub
Homepage
Issues
Download

The software is under the terms of Apache License 2.0.
\ No newline at end of file diff --git a/master/advanced/master-commandline-reference.html b/master/advanced/master-commandline-reference.html index d4fdc6576..a050d7a0c 100644 --- a/master/advanced/master-commandline-reference.html +++ b/master/advanced/master-commandline-reference.html @@ -1,4 +1,4 @@ - Master cmdline reference · Node Feature Discovery

Commandline flags of nfd-master

Table of contents

  1. -h, -help
  2. -version
  3. -prune
  4. -port
  5. -instance
  6. -ca-file
  7. -cert-file
  8. -key-file
  9. -verify-node-name
  10. -no-publish
  11. -label-whitelist
  12. -extra-label-ns
  13. -resource-labels
  14. Logging

To quickly view available command line flags execute nfd-master -help. In a docker container:

docker run gcr.io/k8s-staging-nfd/node-feature-discovery:master nfd-master -help
+                      Master cmdline reference · Node Feature Discovery              

Commandline flags of nfd-master

Table of contents

  1. -h, -help
  2. -version
  3. -prune
  4. -port
  5. -instance
  6. -ca-file
  7. -cert-file
  8. -key-file
  9. -verify-node-name
  10. -no-publish
  11. -label-whitelist
  12. -extra-label-ns
  13. -resource-labels
  14. Logging

To quickly view available command line flags execute nfd-master -help. In a docker container:

docker run gcr.io/k8s-staging-nfd/node-feature-discovery:master nfd-master -help
 

-h, -help

Print usage and exit.

-version

Print version and exit.

-prune

The -prune flag is a sub-command like option for cleaning up the cluster. It causes nfd-master to remove all NFD related labels, annotations and extended resources from all Node objects of the cluster and exit.

-port

The -port flag specifies the TCP port that nfd-master listens for incoming requests.

Default: 8080

Example:

nfd-master -port=443
 

-instance

The -instance flag makes it possible to run multiple NFD deployments in parallel. In practice, it separates the node annotations between deployments so that each of them can store metadata independently. The instance name must start and end with an alphanumeric character and may only contain alphanumeric characters, -, _ or ..

Default: empty

Example:

nfd-master -instance=network
 

-ca-file

The -ca-file is one of the three flags (together with -cert-file and -key-file) controlling master-worker mutual TLS authentication on the nfd-master side. This flag specifies the TLS root certificate that is used for authenticating incoming connections. NFD-Worker side needs to have matching key and cert files configured in order for the incoming requests to be accepted.

Default: empty

Note: Must be specified together with -cert-file and -key-file

Example:

nfd-master -ca-file=/opt/nfd/ca.crt -cert-file=/opt/nfd/master.crt -key-file=/opt/nfd/master.key
@@ -10,4 +10,4 @@
 

-label-whitelist

The -label-whitelist specifies a regular expression for filtering feature labels based on their name. Each label must match against the given reqular expression in order to be published.

Note: The regular expression is only matches against the "basename" part of the label, i.e. to the part of the name after ‘/'. The label namespace is omitted.

Default: empty

Example:

nfd-master -label-whitelist='.*cpuid\.'
 

-extra-label-ns

The -extra-label-ns flag specifies a comma-separated list of allowed feature label namespaces. By default, nfd-master only allows creating labels in the default feature.node.kubernetes.io and profile.node.kubernetes.io label namespaces and their sub-namespaces (e.g. vendor.feature.node.kubernetes.io and sub.ns.profile.node.kubernetes.io). This option can be used to allow other vendor or application specific namespaces for custom labels from the local and custom feature sources.

The same namespace control and this flag applies Extended Resources (created with -resource-labels), too.

Default: empty

Example:

nfd-master -extra-label-ns=vendor-1.com,vendor-2.io
 

-resource-labels

The -resource-labels flag specifies a comma-separated list of features to be advertised as extended resources instead of labels. Features that have integer values can be published as Extended Resources by listing them in this flag.

Default: empty

Example:

nfd-master -resource-labels=vendor-1.com/feature-1,vendor-2.io/feature-2
-

Logging

The following logging-related flags are inherited from the klog package.

-add_dir_header

If true, adds the file directory to the header of the log messages.

Default: false

-alsologtostderr

Log to standard error as well as files.

Default: false

-log_backtrace_at

When logging hits line file:N, emit a stack trace.

Default: empty

-log_dir

If non-empty, write log files in this directory.

Default: empty

-log_file

If non-empty, use this log file.

Default: empty

-log_file_max_size

Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited.

Default: 1800

-logtostderr

Log to standard error instead of files

Default: true

-skip_headers

If true, avoid header prefixes in the log messages.

Default: false

-skip_log_headers

If true, avoid headers when opening log files.

Default: false

-stderrthreshold

Logs at or above this threshold go to stderr.

Default: 2

-v

Number for the log level verbosity.

Default: 0

-vmodule

Comma-separated list of pattern=N settings for file-filtered logging.

Default: empty


Node Feature Discovery
master
Versions
GitHub
Homepage
Issues
Download

The software is under the terms of Apache License 2.0.
\ No newline at end of file +

Logging

The following logging-related flags are inherited from the klog package.

-add_dir_header

If true, adds the file directory to the header of the log messages.

Default: false

-alsologtostderr

Log to standard error as well as files.

Default: false

-log_backtrace_at

When logging hits line file:N, emit a stack trace.

Default: empty

-log_dir

If non-empty, write log files in this directory.

Default: empty

-log_file

If non-empty, use this log file.

Default: empty

-log_file_max_size

Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited.

Default: 1800

-logtostderr

Log to standard error instead of files

Default: true

-skip_headers

If true, avoid header prefixes in the log messages.

Default: false

-skip_log_headers

If true, avoid headers when opening log files.

Default: false

-stderrthreshold

Logs at or above this threshold go to stderr.

Default: 2

-v

Number for the log level verbosity.

Default: 0

-vmodule

Comma-separated list of pattern=N settings for file-filtered logging.

Default: empty


Node Feature Discovery
master
Versions
GitHub
Homepage
Issues
Download

The software is under the terms of Apache License 2.0.
\ No newline at end of file diff --git a/master/advanced/worker-commandline-reference.html b/master/advanced/worker-commandline-reference.html index 4b53b5dcf..20732cc0a 100644 --- a/master/advanced/worker-commandline-reference.html +++ b/master/advanced/worker-commandline-reference.html @@ -1,4 +1,4 @@ - Worker cmdline reference · Node Feature Discovery

Commandline flags of nfd-worker

Table of contents

  1. -h, -help
  2. -version
  3. -config
  4. -options
  5. -server
  6. -ca-file
  7. -cert-file
  8. -key-file
  9. -server-name-override
  10. -sources
  11. -no-publish
  12. -label-whitelist
  13. -oneshot
  14. -sleep-interval
  15. Logging

To quickly view available command line flags execute nfd-worker -help. In a docker container:

docker run gcr.io/k8s-staging-nfd/node-feature-discovery:master nfd-worker -help
+                      Worker cmdline reference · Node Feature Discovery              

Commandline flags of nfd-worker

Table of contents

  1. -h, -help
  2. -version
  3. -config
  4. -options
  5. -server
  6. -ca-file
  7. -cert-file
  8. -key-file
  9. -server-name-override
  10. -sources
  11. -no-publish
  12. -label-whitelist
  13. -oneshot
  14. -sleep-interval
  15. Logging

To quickly view available command line flags execute nfd-worker -help. In a docker container:

docker run gcr.io/k8s-staging-nfd/node-feature-discovery:master nfd-worker -help
 

-h, -help

Print usage and exit.

-version

Print version and exit.

-config

The -config flag specifies the path of the nfd-worker configuration file to use.

Default: /etc/kubernetes/node-feature-discovery/nfd-worker.conf

Example:

nfd-worker -config=/opt/nfd/worker.conf
 

-options

The -options flag may be used to specify and override configuration file options directly from the command line. The required format is the same as in the config file i.e. JSON or YAML. Configuration options specified via this flag will override those from the configuration file:

Default: empty

Example:

nfd-worker -options='{"sources":{"cpu":{"cpuid":{"attributeWhitelist":["AVX","AVX2"]}}}}'
 

-server

The -server flag specifies the address of the nfd-master endpoint where to connect to.

Default: localhost:8080

Example:

nfd-worker -server=nfd-master.nfd.svc.cluster.local:443
@@ -11,4 +11,4 @@
 

-label-whitelist

The -label-whitelist specifies a regular expression for filtering feature labels based on their name. Each label must match against the given reqular expression in order to be published.

Note: The regular expression is only matches against the "basename" part of the label, i.e. to the part of the name after ‘/'. The label namespace is omitted.

Note: This flag takes precedence over the core.labelWhiteList configuration file option.

Default: empty

Example:

nfd-worker -label-whitelist='.*cpuid\.'
 

DEPRECATED: you should use the core.labelWhiteList option in the configuration file, instead.

-oneshot

The -oneshot flag causes nfd-worker to exit after one pass of feature detection.

Default: false

Example:

nfd-worker -oneshot -no-publish
 

-sleep-interval

The -sleep-interval specifies the interval between feature re-detection (and node re-labeling). A non-positive value implies infinite sleep interval, i.e. no re-detection or re-labeling is done.

Note: This flag takes precedence over the core.sleepInterval configuration file option.

Default: 60s

Example:

nfd-worker -sleep-interval=1h
-

DEPRECATED: you should use the core.sleepInterval option in the configuration file, instead.

Logging

The following logging-related flags are inherited from the klog package.

Note: The logger setup can also be specified via the core.klog configuration file options. However, the command line flags take precedence over any corresponding config file options specified.

-add_dir_header

If true, adds the file directory to the header of the log messages.

Default: false

-alsologtostderr

Log to standard error as well as files.

Default: false

-log_backtrace_at

When logging hits line file:N, emit a stack trace.

Default: empty

-log_dir

If non-empty, write log files in this directory.

Default: empty

-log_file

If non-empty, use this log file.

Default: empty

-log_file_max_size

Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited.

Default: 1800

-logtostderr

Log to standard error instead of files

Default: true

-skip_headers

If true, avoid header prefixes in the log messages.

Default: false

-skip_log_headers

If true, avoid headers when opening log files.

Default: false

-stderrthreshold

Logs at or above this threshold go to stderr.

Default: 2

-v

Number for the log level verbosity.

Default: 0

-vmodule

Comma-separated list of pattern=N settings for file-filtered logging.

Default: empty


Node Feature Discovery
master
Versions
GitHub
Homepage
Issues
Download

The software is under the terms of Apache License 2.0.
\ No newline at end of file +

DEPRECATED: you should use the core.sleepInterval option in the configuration file, instead.

Logging

The following logging-related flags are inherited from the klog package.

Note: The logger setup can also be specified via the core.klog configuration file options. However, the command line flags take precedence over any corresponding config file options specified.

-add_dir_header

If true, adds the file directory to the header of the log messages.

Default: false

-alsologtostderr

Log to standard error as well as files.

Default: false

-log_backtrace_at

When logging hits line file:N, emit a stack trace.

Default: empty

-log_dir

If non-empty, write log files in this directory.

Default: empty

-log_file

If non-empty, use this log file.

Default: empty

-log_file_max_size

Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited.

Default: 1800

-logtostderr

Log to standard error instead of files

Default: true

-skip_headers

If true, avoid header prefixes in the log messages.

Default: false

-skip_log_headers

If true, avoid headers when opening log files.

Default: false

-stderrthreshold

Logs at or above this threshold go to stderr.

Default: 2

-v

Number for the log level verbosity.

Default: 0

-vmodule

Comma-separated list of pattern=N settings for file-filtered logging.

Default: empty


Node Feature Discovery
master
Versions
GitHub
Homepage
Issues
Download

The software is under the terms of Apache License 2.0.
\ No newline at end of file diff --git a/master/advanced/worker-configuration-reference.html b/master/advanced/worker-configuration-reference.html index 972da1ca7..4fc1843ea 100644 --- a/master/advanced/worker-configuration-reference.html +++ b/master/advanced/worker-configuration-reference.html @@ -1,4 +1,4 @@ - Worker config reference · Node Feature Discovery

Configuration file reference of nfd-worker

Table of contents

  1. core
    1. core.sleepInterval
    2. core.sources
    3. core.labelWhiteList
    4. core.noPublish
    5. core.klog
  2. sources
    1. sources.cpu
    2. sources.kernel
    3. soures.pci
    4. sources.usb
    5. sources.custom

See the sample configuration file for a full example configuration.

core

The core section contains common configuration settings that are not specific to any particular feature source.

core.sleepInterval

core.sleepInterval specifies the interval between consecutive passes of feature (re-)detection, and thus also the interval between node re-labeling. A non-positive value implies infinite sleep interval, i.e. no re-detection or re-labeling is done.

Note: Overridden by the deprecated --sleep-interval command line flag (if specified).

Default: 60s

Example:

core:
+                      Worker config reference · Node Feature Discovery              

Configuration file reference of nfd-worker

Table of contents

  1. core
    1. core.sleepInterval
    2. core.sources
    3. core.labelWhiteList
    4. core.noPublish
    5. core.klog
  2. sources
    1. sources.cpu
    2. sources.kernel
    3. soures.pci
    4. sources.usb
    5. sources.custom

See the sample configuration file for a full example configuration.

core

The core section contains common configuration settings that are not specific to any particular feature source.

core.sleepInterval

core.sleepInterval specifies the interval between consecutive passes of feature (re-)detection, and thus also the interval between node re-labeling. A non-positive value implies infinite sleep interval, i.e. no re-detection or re-labeling is done.

Note: Overridden by the deprecated --sleep-interval command line flag (if specified).

Default: 60s

Example:

core:
   sleepInterval: 60s
 

core.sources

core.sources specifies the list of enabled feature sources. A special value all enables all feature sources.

Note: Overridden by the deprecated --sources command line flag (if specified).

Default: [all]

Example:

core:
   sources:
@@ -42,4 +42,4 @@
     - pciId:
         class: ["0200"]
         vendor: ["8086"]
-

Node Feature Discovery
master
Versions
GitHub
Homepage
Issues
Download

The software is under the terms of Apache License 2.0.
\ No newline at end of file +

Node Feature Discovery
master
Versions
GitHub
Homepage
Issues
Download

The software is under the terms of Apache License 2.0.
\ No newline at end of file diff --git a/master/contributing/index.html b/master/contributing/index.html index a0a702d09..5b35f6691 100644 --- a/master/contributing/index.html +++ b/master/contributing/index.html @@ -1 +1 @@ - Contributing · Node Feature Discovery

Contributing


Community

You can reach us via the following channels:

Governance

This is a SIG-node subproject, hosted under the Kubernetes SIGs organization in Github. The project was established in 2016 and was migrated to Kubernetes SIGs in 2018.

License

This is open source software released under the Apache 2.0 License.


Node Feature Discovery
master
Versions
GitHub
Homepage
Issues
Download

The software is under the terms of Apache License 2.0.
\ No newline at end of file + Contributing · Node Feature Discovery

Contributing


Community

You can reach us via the following channels:

Governance

This is a SIG-node subproject, hosted under the Kubernetes SIGs organization in Github. The project was established in 2016 and was migrated to Kubernetes SIGs in 2018.

License

This is open source software released under the Apache 2.0 License.


Node Feature Discovery
master
Versions
GitHub
Homepage
Issues
Download

The software is under the terms of Apache License 2.0.
\ No newline at end of file diff --git a/master/get-started/deployment-and-usage.html b/master/get-started/deployment-and-usage.html index abb1e1f27..81dfc9b15 100644 --- a/master/get-started/deployment-and-usage.html +++ b/master/get-started/deployment-and-usage.html @@ -1,4 +1,4 @@ - Deployment and usage · Node Feature Discovery

Deployment and usage

Table of contents

  1. Requirements
  2. Image variants
    1. Full
    2. Minimal
  3. Deployment options
    1. Operator
    2. Deployment with kustomize
    3. Deployment with Helm
    4. Build your own
  4. Usage
    1. NFD-Master
    2. NFD-Worker
    3. Communication security with TLS
  5. Worker configuration
  6. Using node labels
  7. Uninstallation
    1. Operator was used for deployment
    2. Manual
    3. Removing feature labels

Requirements

  1. Linux (x86_64/Arm64/Arm)
  2. kubectl (properly set up and configured to work with your Kubernetes cluster)

Image variants

NFD currently offers two variants of the container image. The "full" variant is currently deployed by default.

Full

This image is based on debian:buster-slim and contains a full Linux system for running shell-based nfd-worker hooks and doing live debugging and diagnosis of the NFD images.

Minimal

This is a minimal image based on gcr.io/distroless/base and only supports running statically linked binaries.

The container image tag has suffix -minimal (e.g. gcr.io/k8s-staging-nfd/node-feature-discovery:master-minimal)

Deployment options

Operator

Deployment using the Node Feature Discovery Operator is recommended to be done via operatorhub.io.

  1. You need to have OLM installed. If you don't, take a look at the latest release for detailed instructions.
  2. Install the operator:

     kubectl create -f https://operatorhub.io/install/nfd-operator.yaml
    +                      Deployment and usage · Node Feature Discovery              

    Deployment and usage

    Table of contents

    1. Requirements
    2. Image variants
      1. Full
      2. Minimal
    3. Deployment options
      1. Operator
      2. Deployment with kustomize
      3. Deployment with Helm
      4. Build your own
    4. Usage
      1. NFD-Master
      2. NFD-Worker
      3. Communication security with TLS
    5. Worker configuration
    6. Using node labels
    7. Uninstallation
      1. Operator was used for deployment
      2. Manual
      3. Removing feature labels

    Requirements

    1. Linux (x86_64/Arm64/Arm)
    2. kubectl (properly set up and configured to work with your Kubernetes cluster)

    Image variants

    NFD currently offers two variants of the container image. The "full" variant is currently deployed by default.

    Full

    This image is based on debian:buster-slim and contains a full Linux system for running shell-based nfd-worker hooks and doing live debugging and diagnosis of the NFD images.

    Minimal

    This is a minimal image based on gcr.io/distroless/base and only supports running statically linked binaries.

    The container image tag has suffix -minimal (e.g. gcr.io/k8s-staging-nfd/node-feature-discovery:master-minimal)

    Deployment options

    Operator

    Deployment using the Node Feature Discovery Operator is recommended to be done via operatorhub.io.

    1. You need to have OLM installed. If you don't, take a look at the latest release for detailed instructions.
    2. Install the operator:

       kubectl create -f https://operatorhub.io/install/nfd-operator.yaml
       
    3. Create NodeFeatureDiscovery resource (in nfd namespace here):

       cat << EOF | kubectl apply -f -
        apiVersion: v1
        kind: Namespace
      @@ -67,4 +67,4 @@ kubectl delete clusterrolebinding nfd-master
       

      Removing feature labels

      NFD-Master has a special -prune command line flag for removing all nfd-related node labels, annotations and extended resources from the cluster.

      kubectl apply -k https://github.com/kubernetes-sigs/node-feature-discovery/deployment/overlays/prune?ref=master
       kubectl -n node-feature-discovery wait job.batch/nfd-prune --for=condition=complete && \
           kubectl delete -k https://github.com/kubernetes-sigs/node-feature-discovery/deployment/overlays/prune?ref=master
      -

      NOTE: You must run prune before removing the RBAC rules (serviceaccount, clusterrole and clusterrolebinding).


    Node Feature Discovery
    master
    Versions
    GitHub
    Homepage
    Issues
    Download

    The software is under the terms of Apache License 2.0.
    \ No newline at end of file +

    NOTE: You must run prune before removing the RBAC rules (serviceaccount, clusterrole and clusterrolebinding).


Node Feature Discovery
master
Versions
GitHub
Homepage
Issues
Download

The software is under the terms of Apache License 2.0.
\ No newline at end of file diff --git a/master/get-started/examples-and-demos.html b/master/get-started/examples-and-demos.html index 93a02f144..5239827e5 100644 --- a/master/get-started/examples-and-demos.html +++ b/master/get-started/examples-and-demos.html @@ -1 +1 @@ - Examples and demos · Node Feature Discovery

Examples and demos

Table of contents

  1. Demos
    1. Usage demo
    2. Demo use case

This page contains usage examples and demos.

Demos

Usage demo

asciicast

Demo use case

A demo on the benefits of using node feature discovery can be found in the source code repository under demo/.


Node Feature Discovery
master
Versions
GitHub
Homepage
Issues
Download

The software is under the terms of Apache License 2.0.
\ No newline at end of file + Examples and demos · Node Feature Discovery

Examples and demos

Table of contents

  1. Demos
    1. Usage demo
    2. Demo use case

This page contains usage examples and demos.

Demos

Usage demo

asciicast

Demo use case

A demo on the benefits of using node feature discovery can be found in the source code repository under demo/.


Node Feature Discovery
master
Versions
GitHub
Homepage
Issues
Download

The software is under the terms of Apache License 2.0.
\ No newline at end of file diff --git a/master/get-started/features.html b/master/get-started/features.html index bdb7ebde4..bf5194799 100644 --- a/master/get-started/features.html +++ b/master/get-started/features.html @@ -1,4 +1,4 @@ - Feature discovery · Node Feature Discovery

Feature discovery

Table of contents

  1. Feature labels
  2. Feature sources
    1. CPU
    2. Custom
    3. IOMMU
    4. Kernel
    5. Memory
    6. Network
    7. PCI
    8. USB
    9. Storage
    10. System
    11. Local – user-specific features
  3. Extended resources

Feature discovery in nfd-worker is performed by a set of separate modules called feature sources. Most of them are specifically responsible for certain domain of features (e.g. cpu). In addition there are two highly customizable feature sources that work accross the system.

Feature labels

Each discovered feature is advertised a label in the Kubernetes Node object. The published node labels encode a few pieces of information:

  • Namespace
    • all built-in labels use feature.node.kubernetes.io
    • user-specified custom labels (custom and local feature sources)
      • feature.node.kubernetes.io and profile.node.kubernetes.io plus their sub-namespaces (e.g. vendor.profile.node.kubernetes.io and sub.ns.profile.node.kubernetes.io) are allowed by default
      • additional namespaces may be enabled with the --extra-label-ns command line flag of nfd-master
  • The source for each label (e.g. cpu).
  • The name of the discovered feature as it appears in the underlying source, (e.g. cpuid.AESNI from cpu).
  • The value of the discovered feature.

Feature label names adhere to the following pattern:

<namespace>/<source name>-<feature name>[.<attribute name>]
+                      Feature discovery · Node Feature Discovery              

Feature discovery

Table of contents

  1. Feature labels
  2. Feature sources
    1. CPU
    2. Custom
    3. IOMMU
    4. Kernel
    5. Memory
    6. Network
    7. PCI
    8. USB
    9. Storage
    10. System
    11. Local – user-specific features
  3. Extended resources

Feature discovery in nfd-worker is performed by a set of separate modules called feature sources. Most of them are specifically responsible for certain domain of features (e.g. cpu). In addition there are two highly customizable feature sources that work accross the system.

Feature labels

Each discovered feature is advertised a label in the Kubernetes Node object. The published node labels encode a few pieces of information:

  • Namespace
    • all built-in labels use feature.node.kubernetes.io
    • user-specified custom labels (custom and local feature sources)
      • feature.node.kubernetes.io and profile.node.kubernetes.io plus their sub-namespaces (e.g. vendor.profile.node.kubernetes.io and sub.ns.profile.node.kubernetes.io) are allowed by default
      • additional namespaces may be enabled with the --extra-label-ns command line flag of nfd-master
  • The source for each label (e.g. cpu).
  • The name of the discovered feature as it appears in the underlying source, (e.g. cpuid.AESNI from cpu).
  • The value of the discovered feature.

Feature label names adhere to the following pattern:

<namespace>/<source name>-<feature name>[.<attribute name>]
 

The last component (i.e. attribute-name) is optional, and only used if a feature logically has sub-hierarchy, e.g. sriov.capable and sriov.configure from the network source.

The -sources flag controls which sources to use for discovery.

Note: Consecutive runs of nfd-worker will update the labels on a given node. If features are not discovered on a consecutive run, the corresponding label will be removed. This includes any restrictions placed on the consecutive run, such as restricting discovered features with the -label-whitelist option.

Feature sources

CPU

The cpu feature source supports the following labels:

Feature name Attribute Description
cpuid <cpuid flag> CPU capability is supported
hardware_multithreading   Hardware multithreading, such as Intel HTT, enabled (number of logical CPUs is greater than physical CPUs)
power sst_bf.enabled Intel SST-BF (Intel Speed Select Technology - Base frequency) enabled
pstate status The status of the Intel pstate driver when in use and enabled, either ‘active' or ‘passive'.
  turbo Set to ‘true' if turbo frequencies are enabled in Intel pstate driver, set to ‘false' if they have been disabled.
  scaling_governor The value of the Intel pstate scaling_governor when in use, either ‘powersave' or ‘performance'.
cstate enabled Set to ‘true' if cstates are set in the intel_idle driver, otherwise set to ‘false'. Unset if intel_idle cpuidle driver is not active.
rdt RDTMON Intel RDT Monitoring Technology
  RDTCMT Intel Cache Monitoring (CMT)
  RDTMBM Intel Memory Bandwidth Monitoring (MBM)
  RDTL3CA Intel L3 Cache Allocation Technology
  RDTL2CA Intel L2 Cache Allocation Technology
  RDTMBA Intel Memory Bandwidth Allocation (MBA) Technology

The (sub-)set of CPUID attributes to publish is configurable via the attributeBlacklist and attributeWhitelist cpuid options of the cpu source. If whitelist is specified, only whitelisted attributes will be published. With blacklist, only blacklisted attributes are filtered out. attributeWhitelist has priority over attributeBlacklist. For examples and more information about configurability, see configuration. By default, the following CPUID flags have been blacklisted: BMI1, BMI2, CLMUL, CMOV, CX16, ERMS, F16C, HTT, LZCNT, MMX, MMXEXT, NX, POPCNT, RDRAND, RDSEED, RDTSCP, SGX, SSE, SSE2, SSE3, SSE4, SSE42 and SSSE3.

NOTE The cpuid features advertise supported CPU capabilities, that is, a capability might be supported but not enabled.

X86 CPUID attributes (partial list)

Attribute Description
ADX Multi-Precision Add-Carry Instruction Extensions (ADX)
AESNI Advanced Encryption Standard (AES) New Instructions (AES-NI)
AVX Advanced Vector Extensions (AVX)
AVX2 Advanced Vector Extensions 2 (AVX2)

See the full list in github.com/klauspost/cpuid.

Arm CPUID attribute (partial list)

Attribute Description
IDIVA Integer divide instructions available in ARM mode
IDIVT Integer divide instructions available in Thumb mode
THUMB Thumb instructions
FASTMUL Fast multiplication
VFP Vector floating point instruction extension (VFP)
VFPv3 Vector floating point extension v3
VFPv4 Vector floating point extension v4
VFPD32 VFP with 32 D-registers
HALF Half-word loads and stores
EDSP DSP extensions
NEON NEON SIMD instructions
LPAE Large Physical Address Extensions

Arm64 CPUID attribute (partial list)

Attribute Description
AES Announcing the Advanced Encryption Standard
EVSTRM Event Stream Frequency Features
FPHP Half Precision(16bit) Floating Point Data Processing Instructions
ASIMDHP Half Precision(16bit) Asimd Data Processing Instructions
ATOMICS Atomic Instructions to the A64
ASIMRDM Support for Rounding Double Multiply Add/Subtract
PMULL Optional Cryptographic and CRC32 Instructions
JSCVT Perform Conversion to Match Javascript
DCPOP Persistent Memory Support

Custom

The Custom feature source allows the user to define features based on a mix of predefined rules. A rule is provided input witch affects its process of matching for a defined feature. The rules are specified in the nfd-worker configuration file. See configuration for instructions and examples how to set-up and manage the worker configuration.

To aid in making Custom Features clearer, we define a general and a per rule nomenclature, keeping things as consistent as possible.

Additional configuration directory

Additionally to the rules defined in the nfd-worker configuration file, the Custom feature can read more configuration files located in the /etc/kubernetes/node-feature-discovery/custom.d/ directory. This makes more dynamic and flexible configuration easier. This directory must be available inside the NFD worker container, so Volumes and VolumeMounts must be used for mounting e.g. ConfigMap(s). The example deployment manifests provide an example (commented out) for providing Custom configuration with an additional ConfigMap, mounted into the custom.d directory.

General nomenclature & definitions

Rule        :Represents a matching logic that is used to match on a feature.
 Rule Input  :The input a Rule is provided. This determines how a Rule performs the match operation.
 Matcher     :A composition of Rules, each Matcher may be composed of at most one instance of each Rule.
@@ -101,4 +101,4 @@ feature.node.kubernetes.io/override_source-OVERRIDE_VALUE=123
 override.namespace/value=456
 

NFD tries to run any regular files found from the hooks directory. Any additional data files your hook might need (e.g. a configuration file) should be placed in a separate directory in order to avoid NFD unnecessarily trying to execute these. You can use a subdirectory under the hooks directory, for example /etc/kubernetes/node-feature-discovery/source.d/conf/.

NOTE! NFD will blindly run any executables placed/mounted in the hooks directory. It is the user's responsibility to review the hooks for e.g. possible security implications.

NOTE! Be careful when creating and/or updating hook or feature files while NFD is running. In order to avoid race conditions you should write into a temporary file (outside the source.d and features.d directories), and, atomically create/update the original file by doing a filesystem move operation.

Extended resources

This feature is experimental and by no means a replacement for the usage of device plugins.

Labels which have integer values, can be promoted to Kubernetes extended resources by listing them to the master -resource-labels command line flag. These labels won't then show in the node label section, they will appear only as extended resources.

An example use-case for the extended resources could be based on a hook which creates a label for the node SGX EPC memory section size. By giving the name of that label in the -resource-labels flag, that value will then turn into an extended resource of the node, allowing PODs to request that resource and the Kubernetes scheduler to schedule such PODs to only those nodes which have a sufficient capacity of said resource left.

Similar to labels, the default namespace feature.node.kubernetes.io is automatically prefixed to the extended resource, if the promoted label doesn't have a namespace.

Example usage of the command line arguments, using a new namespace: nfd-master -resource-labels=my_source-my.feature,sgx.some.ns/epc -extra-label-ns=sgx.some.ns

The above would result in following extended resources provided that related labels exist:

  sgx.some.ns/epc: <label value>
   feature.node.kubernetes.io/my_source-my.feature: <label value>
-

Node Feature Discovery
master
Versions
GitHub
Homepage
Issues
Download

The software is under the terms of Apache License 2.0.
\ No newline at end of file +

Node Feature Discovery
master
Versions
GitHub
Homepage
Issues
Download

The software is under the terms of Apache License 2.0.
\ No newline at end of file diff --git a/master/get-started/index.html b/master/get-started/index.html index b5151f361..ef567a837 100644 --- a/master/get-started/index.html +++ b/master/get-started/index.html @@ -1,4 +1,4 @@ - Get started · Node Feature Discovery

Node Feature Discovery

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

Continue to:

  • Introduction for more details on the project.

  • Quick start for quick step-by-step instructions on how to get NFD running on your cluster.

Quick-start – the short-short version

$ kubectl apply -k https://github.com/kubernetes-sigs/node-feature-discovery/deployment/overlays/default?ref=master
+                      Get started · Node Feature Discovery              

Node Feature Discovery

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

Continue to:

  • Introduction for more details on the project.

  • Quick start for quick step-by-step instructions on how to get NFD running on your cluster.

Quick-start – the short-short version

$ kubectl apply -k https://github.com/kubernetes-sigs/node-feature-discovery/deployment/overlays/default?ref=master
   namespace/node-feature-discovery created
   serviceaccount/nfd-master created
   clusterrole.rbac.authorization.k8s.io/nfd-master created
@@ -22,4 +22,4 @@
     "feature.node.kubernetes.io/cpu-cpuid.AESNI": "true",
 ...
 
-

Node Feature Discovery
master
Versions
GitHub
Homepage
Issues
Download

The software is under the terms of Apache License 2.0.
\ No newline at end of file +

Node Feature Discovery
master
Versions
GitHub
Homepage
Issues
Download

The software is under the terms of Apache License 2.0.
\ No newline at end of file diff --git a/master/get-started/introduction.html b/master/get-started/introduction.html index 4bd159f81..5caa38ab4 100644 --- a/master/get-started/introduction.html +++ b/master/get-started/introduction.html @@ -1,4 +1,4 @@ - Introduction · Node Feature Discovery

Introduction

Table of contents

  1. NFD-Master
  2. NFD-Worker
  3. Feature discovery
  4. Node annotations

This software enables node feature discovery for Kubernetes. It detects hardware features available on each node in a Kubernetes cluster, and advertises those features using node labels.

NFD consists of two software components:

  1. nfd-master
  2. nfd-worker

NFD-Master

NFD-Master is the daemon responsible for communication towards the Kubernetes API. That is, it receives labeling requests from the worker and modifies node objects accordingly.

NFD-Worker

NFD-Worker is a daemon responsible for feature detection. It then communicates the information to nfd-master which does the actual node labeling. One instance of nfd-worker is supposed to be running on each node of the cluster,

Feature discovery

Feature discovery is divided into domain-specific feature sources:

  • CPU
  • IOMMU
  • Kernel
  • Memory
  • Network
  • PCI
  • Storage
  • System
  • USB
  • Custom (rule-based custom features)
  • Local (hooks for user-specific features)

Each feature source is responsible for detecting a set of features which. in turn, are turned into node feature labels. Feature labels are prefixed with feature.node.kubernetes.io/ and also contain the name of the feature source. Non-standard user-specific feature labels can be created with the local and custom feature sources.

An overview of the default feature labels:

{
+                      Introduction · Node Feature Discovery              

Introduction

Table of contents

  1. NFD-Master
  2. NFD-Worker
  3. Feature discovery
  4. Node annotations

This software enables node feature discovery for Kubernetes. It detects hardware features available on each node in a Kubernetes cluster, and advertises those features using node labels.

NFD consists of two software components:

  1. nfd-master
  2. nfd-worker

NFD-Master

NFD-Master is the daemon responsible for communication towards the Kubernetes API. That is, it receives labeling requests from the worker and modifies node objects accordingly.

NFD-Worker

NFD-Worker is a daemon responsible for feature detection. It then communicates the information to nfd-master which does the actual node labeling. One instance of nfd-worker is supposed to be running on each node of the cluster,

Feature discovery

Feature discovery is divided into domain-specific feature sources:

  • CPU
  • IOMMU
  • Kernel
  • Memory
  • Network
  • PCI
  • Storage
  • System
  • USB
  • Custom (rule-based custom features)
  • Local (hooks for user-specific features)

Each feature source is responsible for detecting a set of features which. in turn, are turned into node feature labels. Feature labels are prefixed with feature.node.kubernetes.io/ and also contain the name of the feature source. Non-standard user-specific feature labels can be created with the local and custom feature sources.

An overview of the default feature labels:

{
   "feature.node.kubernetes.io/cpu-<feature-name>": "true",
   "feature.node.kubernetes.io/custom-<feature-name>": "true",
   "feature.node.kubernetes.io/iommu-<feature-name>": "true",
@@ -11,4 +11,4 @@
   "feature.node.kubernetes.io/usb-<device label>.present": "<feature value>",
   "feature.node.kubernetes.io/<file name>-<feature name>": "<feature value>"
 }
-

Node annotations

NFD also annotates nodes it is running on:

Annotation Description
[<instance>.]nfd.node.kubernetes.io/master.version Version of the nfd-master instance running on the node. Informative use only.
[<instance>.]nfd.node.kubernetes.io/worker.version Version of the nfd-worker instance running on the node. Informative use only.
[<instance>.]nfd.node.kubernetes.io/feature-labels Comma-separated list of node labels managed by NFD. NFD uses this internally so must not be edited by users.
[<instance>.]nfd.node.kubernetes.io/extended-resources Comma-separated list of node extended resources managed by NFD. NFD uses this internally so must not be edited by users.

NOTE: the --instance command line flag affects the annotation names

Unapplicable annotations are not created, i.e. for example master.version is only created on nodes running nfd-master.


Node Feature Discovery
master
Versions
GitHub
Homepage
Issues
Download

The software is under the terms of Apache License 2.0.
\ No newline at end of file +

Node annotations

NFD also annotates nodes it is running on:

Annotation Description
[<instance>.]nfd.node.kubernetes.io/master.version Version of the nfd-master instance running on the node. Informative use only.
[<instance>.]nfd.node.kubernetes.io/worker.version Version of the nfd-worker instance running on the node. Informative use only.
[<instance>.]nfd.node.kubernetes.io/feature-labels Comma-separated list of node labels managed by NFD. NFD uses this internally so must not be edited by users.
[<instance>.]nfd.node.kubernetes.io/extended-resources Comma-separated list of node extended resources managed by NFD. NFD uses this internally so must not be edited by users.

NOTE: the --instance command line flag affects the annotation names

Unapplicable annotations are not created, i.e. for example master.version is only created on nodes running nfd-master.


Node Feature Discovery
master
Versions
GitHub
Homepage
Issues
Download

The software is under the terms of Apache License 2.0.
\ No newline at end of file diff --git a/master/get-started/quick-start.html b/master/get-started/quick-start.html index cd848137a..24d2227aa 100644 --- a/master/get-started/quick-start.html +++ b/master/get-started/quick-start.html @@ -1,4 +1,4 @@ - Quick start · Node Feature Discovery

Quick start

Minimal steps to deploy latest released version of NFD in your cluster.

Installation

Deploy with kustomize – creates a new namespace, service and required RBAC rules and deploys nfd-master and nfd-worker daemons.

kubectl apply -k https://github.com/kubernetes-sigs/node-feature-discovery/deployment/overlays/default?ref=master
+                      Quick start · Node Feature Discovery              

Quick start

Minimal steps to deploy latest released version of NFD in your cluster.

Installation

Deploy with kustomize – creates a new namespace, service and required RBAC rules and deploys nfd-master and nfd-worker daemons.

kubectl apply -k https://github.com/kubernetes-sigs/node-feature-discovery/deployment/overlays/default?ref=master
 

Verify

Wait until NFD master and worker are running.

$ kubectl -n node-feature-discovery get ds,deploy
 NAME                        DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
 daemonset.apps/nfd-worker   3         3         3       3            3           <none>          5s
@@ -29,4 +29,4 @@ spec:
 

See that the pod is running on a desired node

$ kubectl get po feature-dependent-pod -o wide
 NAME                    READY   STATUS    RESTARTS   AGE   IP          NODE     NOMINATED NODE   READINESS GATES
 feature-dependent-pod   1/1     Running   0          23s   10.36.0.4   node-2   <none>           <none>
-

Node Feature Discovery
master
Versions
GitHub
Homepage
Issues
Download

The software is under the terms of Apache License 2.0.
\ No newline at end of file +

Node Feature Discovery
master
Versions
GitHub
Homepage
Issues
Download

The software is under the terms of Apache License 2.0.
\ No newline at end of file diff --git a/master/search.html b/master/search.html index 7e48d0a1a..7d0fe7bf7 100644 --- a/master/search.html +++ b/master/search.html @@ -1 +1 @@ - Search · Node Feature Discovery

Searching


    Node Feature Discovery
    master
    Versions
    GitHub
    Homepage
    Issues
    Download

    The software is under the terms of Apache License 2.0.
    \ No newline at end of file + Search · Node Feature Discovery

    Searching


      Node Feature Discovery
      master
      Versions
      GitHub
      Homepage
      Issues
      Download

      The software is under the terms of Apache License 2.0.
      \ No newline at end of file diff --git a/master/sitemap.xml b/master/sitemap.xml index a4a0a372d..ca48f1c8a 100644 --- a/master/sitemap.xml +++ b/master/sitemap.xml @@ -1 +1 @@ - https://kubernetes-sigs.github.com/node-feature-discovery/master/advanced/developer-guide.html 1.0 2021-10-06T08:56:31-05:00 https://kubernetes-sigs.github.com/node-feature-discovery/master/get-started/introduction.html 1.0 2021-10-06T08:56:31-05:00 https://kubernetes-sigs.github.com/node-feature-discovery/master/get-started/ 1.0 2021-10-06T08:56:31-05:00 https://kubernetes-sigs.github.com/node-feature-discovery/master/advanced/ 0.1 2021-10-06T08:56:31-05:00 https://kubernetes-sigs.github.com/node-feature-discovery/master/advanced/master-commandline-reference.html 1.0 2021-10-06T08:56:31-05:00 https://kubernetes-sigs.github.com/node-feature-discovery/master/get-started/quick-start.html 1.0 2021-10-06T08:56:31-05:00 https://kubernetes-sigs.github.com/node-feature-discovery/master/contributing/ 0.5 2021-10-06T08:56:31-05:00 https://kubernetes-sigs.github.com/node-feature-discovery/master/advanced/worker-commandline-reference.html 1.0 2021-10-06T08:56:31-05:00 https://kubernetes-sigs.github.com/node-feature-discovery/master/get-started/deployment-and-usage.html 1.0 2021-10-06T08:56:31-05:00 https://kubernetes-sigs.github.com/node-feature-discovery/master/get-started/features.html 1.0 2021-10-06T08:56:31-05:00 https://kubernetes-sigs.github.com/node-feature-discovery/master/advanced/worker-configuration-reference.html 1.0 2021-10-06T08:56:31-05:00 https://kubernetes-sigs.github.com/node-feature-discovery/master/get-started/examples-and-demos.html 0.5 2021-10-06T08:56:31-05:00 \ No newline at end of file + https://kubernetes-sigs.github.com/node-feature-discovery/master/advanced/developer-guide.html 1.0 2021-10-12T05:22:13-05:00 https://kubernetes-sigs.github.com/node-feature-discovery/master/get-started/introduction.html 1.0 2021-10-12T05:22:13-05:00 https://kubernetes-sigs.github.com/node-feature-discovery/master/get-started/ 1.0 2021-10-12T05:22:13-05:00 https://kubernetes-sigs.github.com/node-feature-discovery/master/advanced/ 0.1 2021-10-12T05:22:13-05:00 https://kubernetes-sigs.github.com/node-feature-discovery/master/advanced/master-commandline-reference.html 1.0 2021-10-12T05:22:13-05:00 https://kubernetes-sigs.github.com/node-feature-discovery/master/get-started/quick-start.html 1.0 2021-10-12T05:22:13-05:00 https://kubernetes-sigs.github.com/node-feature-discovery/master/contributing/ 0.5 2021-10-12T05:22:13-05:00 https://kubernetes-sigs.github.com/node-feature-discovery/master/advanced/worker-commandline-reference.html 1.0 2021-10-12T05:22:13-05:00 https://kubernetes-sigs.github.com/node-feature-discovery/master/get-started/deployment-and-usage.html 1.0 2021-10-12T05:22:13-05:00 https://kubernetes-sigs.github.com/node-feature-discovery/master/get-started/features.html 1.0 2021-10-12T05:22:13-05:00 https://kubernetes-sigs.github.com/node-feature-discovery/master/advanced/worker-configuration-reference.html 1.0 2021-10-12T05:22:13-05:00 https://kubernetes-sigs.github.com/node-feature-discovery/master/get-started/examples-and-demos.html 0.5 2021-10-12T05:22:13-05:00 \ No newline at end of file