1
0
Fork 0
mirror of https://github.com/kubernetes-sigs/node-feature-discovery.git synced 2024-12-14 11:57:51 +00:00
Commit graph

864 commits

Author SHA1 Message Date
Kubernetes Prow Robot
b445c11589
Merge pull request #607 from marquiz/devel/deployment
deployment: align topologyupdater overlays
2021-10-05 03:07:09 -07:00
Kubernetes Prow Robot
7b8e7f0806
Merge pull request #610 from marquiz/documentation/toc-fix
docs: fix TOCs
2021-10-04 06:33:08 -07:00
Kubernetes Prow Robot
a7bda36df5
Merge pull request #615 from marquiz/devel/ci-lint
scripts/test-infra: bump golangci-lint to v1.42.1
2021-10-04 06:13:07 -07:00
Markus Lehtonen
0b386981a6 pkg/nfd-master: fix linter errors in tests 2021-10-04 09:51:38 +03:00
Markus Lehtonen
f1f79575fe scripts/test-infra: bump golangci-lint to v1.42.1 2021-10-04 09:43:21 +03:00
Markus Lehtonen
819f333118 docs: fix TOCs
Make table of contents in the pages cleaner and more readable by
dropping the main heading (H1 level) from TOCs. This was the original
intention with the usage of "no_toc" kramdown magic, which was broken,
however. The kramdown class magic needs to be specified on the line
immediately following the headinds, otherwise it has no effect. We need
to disable MD022 rule of mdlint as it does not understand this magic.
2021-09-30 10:26:25 +03:00
Markus Lehtonen
1e85001a5f deployment: align topologyupdater overlays
Align "topologyupdater" overlay with "topologyupdater-job". Both should
deploy topologyupdater as a standalone application. Previously the
topologyupdater overlay did not deploy nfd-master at all (but deployed
nfd-worker instead) causing the pods to end up in crashloopbackoff as
there was no master to communicate with.
2021-09-30 10:22:24 +03:00
Kubernetes Prow Robot
d76af7dca3
Merge pull request #613 from krishna2603/patch-1
Update developer-guide.md
2021-09-29 13:09:21 -07:00
Kubernetes Prow Robot
c9fe0d77f5
Merge pull request #609 from marquiz/devel/deployment-rename
deployment: fix typo in overlay name
2021-09-29 12:35:20 -07:00
krishna2603
dbb99c6f18
Update developer-guide.md
changed exapmle to example
2021-09-29 23:58:27 +05:30
Kubernetes Prow Robot
f5efca2dbb
Merge pull request #611 from marquiz/documentation/wip-note
docs: remote wip note from worker configuration reference
2021-09-28 06:18:43 -07:00
Markus Lehtonen
89d0f4ff3c docs: remote wip note from worker configuration reference
All configuration options are documented.
2021-09-27 15:37:50 +03:00
Markus Lehtonen
d2751102ef deployment: fix typo in overlay name
Rename topologupdater-job to topologyupdater-job.
2021-09-24 22:04:35 +03:00
Kubernetes Prow Robot
ccf5feecfb
Merge pull request #606 from dagrayvid/parseOSRelease-trim-single-quotes
Trim single quotes in parseOSRelease
2021-09-23 05:09:22 -07:00
David Gray
3d9b18b087 Trim single quotes in parseOSRelease
Signed-off-by: David Gray <dagray@redhat.com>
2021-09-22 15:04:44 -04:00
Kubernetes Prow Robot
9cf732b64e
Merge pull request #602 from marquiz/devel/go-generate
Utilize go generate
2021-09-21 06:16:24 -07:00
Kubernetes Prow Robot
f2b23bdc5c
Merge pull request #603 from ArangoGutierrez/issue/598
Fix broken link on docs/get-started
2021-09-21 06:06:23 -07:00
Carlos Eduardo Arango Gutierrez
6f4fbefacd
Fix broken link on docs/get-started
Signed-off-by: Carlos Eduardo Arango Gutierrez <carangog@redhat.com>
2021-09-21 07:57:55 -05:00
Kubernetes Prow Robot
064391f310
Merge pull request #601 from marquiz/devel/feature-source-interface
source: introduce FeatureSource interface
2021-09-21 05:48:25 -07:00
Markus Lehtonen
51c0d70383 Update auto-generated code
Generated by running "make generate".
2021-09-21 13:37:36 +03:00
Markus Lehtonen
9487fbeb18 Utilize go generate
Use 'go generate' for auto-generating code. Drop the old 'mock' and
'apigen' makefile targets. Those are replaced with a single
  make generate

which (re-)generates everything.
2021-09-21 13:36:37 +03:00
Kubernetes Prow Robot
16139ae1f5
Merge pull request #525 from k8stopologyawareschedwg/topology-updater-implementation
Introducing NFD Topology Updater exposing Resource hardware Topology info through CRs
2021-09-21 03:04:23 -07:00
Swati Sehgal
a2c066dc0d topologyupdater: manifests: topologyupdater deployment files
- create an overlay for deployment of all components
- create an overlay for just topologyupdater deployment (to be deployed in
  conjunction with the default overlay)
- create a separate overlay for deployment of master and topologyupdater-job

Signed-off-by: Swati Sehgal <swsehgal@redhat.com>
2021-09-21 10:48:10 +01:00
Swati Sehgal
a311719d1e topologyupdater: Updates based on latest changes made to CRD API
There have been recent changes made to the noderesourcetopology API
storing the proto file generated using go-to-protobuf tool and
this code inports the proto generated in the API in the topology-updater.proto
The PRs corresponding to the changes are as follows:
https://github.com/k8stopologyawareschedwg/noderesourcetopology-api/pull/9
https://github.com/k8stopologyawareschedwg/noderesourcetopology-api/pull/13

Commands used to generate topology-updater.pb.go file:

go install github.com/golang/protobuf/protoc-gen-go@v1.4.3
go mod vendor
protoc --go_opt=paths=source_relative  --go_out=plugins=grpc:. pkg/topologyupdater/topology-updater.proto -I. -Ivendor

As part of implmentation of this patch, reserved (non-allocatable) CPUs
are evaluated by performing a difference between all the CPUs on a system
(determined by using ghw) and allocatable CPUs (determined by querying
GetAllocatableResources podResource API endpoint).

When aggregator creates the NUMA zones, it will skip the zone creation if
there are no allocatable resources. In this update we creates those missing
zone with zero allocatable/available resources so we won't have holes in the
array of reported zones.

Co-Authored-by: Talor Itzhak <titzhak@redhat.com>
Signed-off-by: Swati Sehgal <swsehgal@redhat.com>
2021-09-21 10:48:10 +01:00
Swati Sehgal
832f82baaa topologyupdater: Handle pods with devices and integral CPU requests
For accounting we should consider all guaranteed pods with
integral CPU requests and all the pods with device requests
This patch ensures that pods are only considered
for accounting disregarding non-guranteed pods without any
device request.

Signed-off-by: Swati Sehgal <swsehgal@redhat.com>
2021-09-21 10:48:10 +01:00
Swati Sehgal
aa7ae9265c topologyupdater: watch/consider only guaranteed pods for accounting
- Files obtained after running make mock
- Run `go get github.com/vektra/mockery` and make sure that
  mockery is in your $PATH
- run `make mock`

Signed-off-by: Swati Sehgal <swsehgal@redhat.com>
2021-09-21 10:48:10 +01:00
Francesco Romani
b4c92e4eed topologyupdater: Bootstrap nfd-topology-updater in NFD
- This patch allows to expose Resource Hardware Topology information
  through CRDs in Node Feature Discovery.
- In order to do this we introduce another software component called
  nfd-topology-updater in addition to the already existing software
  components nfd-master and nfd-worker.
- nfd-master was enhanced to communicate with nfd-topology-updater
  over gRPC followed by creation of CRs corresponding to the nodes
  in the cluster exposing resource hardware topology information
  of that node.
- Pin kubernetes dependency to one that include pod resource implementation
- This code is responsible for obtaining hardware information from the system
  as well as pod resource information from the Pod Resource API in order to
  determine the allocatable resource information for each NUMA zone. This
  information along with Costs for NUMA zones (obtained by reading NUMA distances)
  is gathered by nfd-topology-updater running on all the nodes
  of the cluster and propagate NUMA zone costs to master in order to populate
  that information in the CRs corresponding to the nodes.
- We use GHW facilities for obtaining system information like CPUs, topology,
  NUMA distances etc.
- This also includes updates made to Makefile and Dockerfile and Manifests for
  deploying nfd-topology-updater.
- This patch includes unit tests
- As part of the Topology Aware Scheduling work, this patch captures
  the configured Topology manager scope in addition to the Topology manager policy.
  Based on the value of both attribues a single string will be populated to the CRD.
  The string value will be on of the following {SingleNUMANodeContainerLevel,
  SingleNUMANodePodLevel, BestEffort, Restricted, None}

Co-Authored-by: Artyom Lukianov <alukiano@redhat.com>
Co-Authored-by: Francesco Romani <fromani@redhat.com>
Co-Authored-by: Talor Itzhak <titzhak@redhat.com>
Signed-off-by: Swati Sehgal <swsehgal@redhat.com>
2021-09-21 10:47:39 +01:00
Francesco Romani
00cc07da76 topologyupdater: gRPC API definition
Setup the topologyupdater API for gRPC communication of
nfd-topology-updater with master

We generate pb.go file to reflect latest dependency changes
using github.com/golang/protobuf/protoc-gen-go and generate
grpc files via:
`protoc pkg/topologyupdater/topology-updater.proto --go_out=plugins=grpc:.`

Please refer to: https://github.com/k8stopologyawareschedwg/noderesourcetopology-api/blob/master/pkg/apis/topology/v1alpha1/types.go

Co-Authored-by: Artyom Lukianov <alukiano@redhat.com>
Co-Authored-by: Francesco Romani <fromani@redhat.com>
Signed-off-by: Swati Sehgal <swsehgal@redhat.com>
2021-09-21 10:47:39 +01:00
Markus Lehtonen
852cf4b61d source: introduce FeatureSource interface
Specify a new interface for managing "raw" feature data. This is the
first step to separate raw feature data from node labels. None of the
feature sources implement this interface, yet.

This patch unifies the data format of "raw" features by dividing them
into three different basic types.
- keys, a set of names without any associated values, e.g. CPUID flags
  or loaded kernel modules
- values, a map of key-value pairs, for features with a single value,
  e.g. kernel config flags or os version
- instances, a list of instances each of which has multiple attributes
  (key-value pairs of their own), e.g. PCI or USB devices

The new feature data types are defined in a new "pkg/api/feature"
package, catering decoupling and re-usability of code e.g. within future
extentions of the NFD gRPC API.

Rename the Discover() method of LabelSource interface to GetLabels().
2021-09-20 09:58:07 +03:00
Kubernetes Prow Robot
102003f8b3
Merge pull request #597 from marquiz/devel/source-register
source: make sources register themselves
2021-09-19 09:10:09 -07:00
Kubernetes Prow Robot
4ee535f1e5
Merge pull request #599 from marquiz/fixes/example-config
deployment: fix formatting of the worker conf sample
2021-09-19 09:02:09 -07:00
Markus Lehtonen
3706de9308 deployment: fix formatting of the worker conf sample 2021-09-17 14:25:48 +03:00
Markus Lehtonen
81378a3235 source: make sources register themselves
Implement new registration infrastructure under the "source" package.
This change loosens the coupling between label sources and the
nfd-worker, making it easier to refactor and move the code around.

Also, create a separate interface (ConfigurableSource) for configurable
feature sources in order to eliminate boilerplate code.

Add safety checks to the sources that they actually implement the
interfaces they should.

In sake of consistency and predictability (of behavior) change all
methods of the sources to use pointer receivers.

Add simple unit tests for the new functionality and include source/...
into make test target.
2021-09-15 18:41:37 +03:00
Kubernetes Prow Robot
5c7706c5bd
Merge pull request #596 from marquiz/devel/label-source
source: rename FeatureSource to LabelSource
2021-09-15 07:44:31 -07:00
Markus Lehtonen
befa7e9796 source: rename FeatureSource to LabelSource
Prepare for separating feature detection from label creation.
2021-09-13 22:48:33 +03:00
Kubernetes Prow Robot
795a7e543e
Merge pull request #592 from marquiz/devel/logging-verbosity
source/network: silence annoying/useless log message
2021-09-13 01:16:09 -07:00
Markus Lehtonen
bd5ee9c616 source/network: silence annoying/useless log message
However, log an error if something unexpected happens, i.e. the file to
read maximum number of vfs exists (sriov_totalvfs) but read fails.
2021-09-13 09:40:06 +03:00
Kubernetes Prow Robot
dc7bda0023
Merge pull request #590 from ArangoGutierrez/fix/docs_borkenlink
Fix broken link for worker-conf example
2021-09-02 10:36:57 -07:00
Carlos Eduardo Arango Gutierrez
f9e09e5fd4
Fix broken link for worker-conf example
Signed-off-by: Carlos Eduardo Arango Gutierrez <carangog@redhat.com>
2021-09-02 11:41:03 -05:00
Kubernetes Prow Robot
92920d48d3
Merge pull request #589 from vaibhav2107/link-deploy
Fix a link in deployment-and-usage.md
2021-09-02 05:46:10 -07:00
Vaibhav
ac720ef57a Fix a link in deployment-and-usage.md 2021-09-01 22:41:04 +05:30
Kubernetes Prow Robot
189f86bec8
Merge pull request #548 from marquiz/devel/profile-ns
nfd-master: allow profile.node.kubernetes.io label ns
2021-08-27 07:24:04 -07:00
Kubernetes Prow Robot
487588bc62
Merge pull request #585 from jonkerj/optional-hostpaths
deployment: make /usr/src hostpath mount optional
2021-08-27 01:18:04 -07:00
Kubernetes Prow Robot
f307870347
Merge pull request #586 from marquiz/devel/verify-kustomize
scripts/test-infra: verify buildability of kustomize overlays
2021-08-26 11:30:21 -07:00
Markus Lehtonen
8132d17f89 scripts/test-infra: verify buildability of kustomize overlays
Not perfect and fool proof evidence but better than nothing.
2021-08-26 19:47:25 +03:00
Kubernetes Prow Robot
a47ef9f48e
Merge pull request #587 from swatisehgal/fix-gitignore
Only add kustomization.yaml in the root to .gitignore
2021-08-26 08:33:23 -07:00
Swati Sehgal
4f65f30b7c Only add kustomization.yaml in the root to .gitignore
The current addition of kustomization.yaml to gitignore file
means that any file in the project tree with the name
kustomization.yaml will be ignored. However, that is not
the desired behaviour. One of the primary examples of this
is when we add deployments corresponding to nfd-topology-updater,
we want to be able to ensure that the kustomization.yamls are not
ignored.

Signed-off-by: Swati Sehgal <swsehgal@redhat.com>
2021-08-26 15:27:03 +01:00
Jorik Jonker
501ff37592 deployment: optional mount of /usr/src
This commit makes the mount of /usr/src optional in the Helm chart, and
removes it from the kustomization. Reason is that some systems do not
have a /usr/src (such as Talos) *and* have a R/O filesystem. Since
/usr/src is optional per FHS 3.0, NFD should not assume its presence.

Signed-off-by: Jorik Jonker <jorik@kippendief.biz>
2021-08-26 10:52:26 +02:00
Vaibhav Goel
87feb9610b
Fix the typo in deployment-and-usage.md (#575)
* Fix the typo in deployment-and-usage.md

* Update in doc/get-started/deployment-and-usage.md
2021-08-25 00:32:39 -07:00
Kubernetes Prow Robot
e16d4c9b20
Merge pull request #543 from marquiz/devel/custom-kconfig-refactor
source/custom: refactor kconfig rule internal representation
2021-08-24 06:45:14 -07:00