Run the Node Feature Discovery Helm Chart

Node feature discovery detects hardware features available on each node in a Kubernetes cluster, and advertises those features using Kubernetes node labels.

An stx-platform helm repository containing platform related charts, including the node-feature-discovery helm chart, is created automatically once the system has been installed.

Procedure

  1. Confirm that the stx-platform is available.

    ~(keystone_admin)$ helm repo list
    NAME            URL
    stable          https://kubernetes-charts.storage.googleapis.com
    local           http://127.0.0.1:8879/charts
    starlingx       http://127.0.0.1:8080/helm_charts/starlingx
    stx-platform    http://127.0.0.1:8080/helm_charts/stx-platform
    

    The repository is created automatically after system installation has completed. There may be a delay of a few minutes after a new install before it is available.

  2. Create a helm override file to specify custom values for any of the following:

    Override Name

    Description

    Default

    image: repository:

    The docker image to use for the pods.

    k8s.gcr.io/nfd/node-feature-discovery

    worker: nodeSelector: {}

    The Kubernetes nodeSelector to use for the worker pods. This is a key/value pair to match against node labels and select which nodes should run the node feature discovery.

    All nodes. Changing the {} to {foo: bar} will result in the worker pods only running on Kubernetes nodes labelled with foo:bar.

    fullnameOverride:

    The base name to use for the Kubernetes resources (pods, daemonsets, etc.).

    A blank entry here will result in the base name being “node-feature-discovery”.

    For example, to set the base name to “nfd” and to run the worker pod only on nodes with the “foo: bar” label:

    ~(keystone_admin)$ cat <<EOF > /home/sysadmin/my-discovery-overrides.yaml
    fullnameOverride: nfd
    worker:
    nodeSelector:
    foo: bar
    EOF
    
  3. Run the node feature discover helm chart. It is recommended to run it in the “kube-system” namespace so the pods run on the platform CPUs.

    • To accept the default values, run helm without specifying an overrides file:

      ~(keystone_admin)$ helm -n kube-system upgrade -i node-feature-discovery stx-platform/node-feature-discovery
      
    • If you have defined default overrides in a yaml file, specify the file when running helm.

      For example:

      ~(keystone_admin)$ helm -n kube-system upgrade -i node-feature-discovery stx-platform/node-feature-discovery --values=/home/sysadmin/my-discovery-overrides.yaml
      

    One worker pod is created per node, which runs once per minute to update the node features.  One master pod gathers up all the data and reports it to Kubernetes.