mirror of
https://github.com/kubernetes-sigs/node-feature-discovery.git
synced 2024-12-14 11:57:51 +00:00
39be798472
Refactor NFD into a simple server-client system. Labeling is now done by a separate 'nfd-master' server. It is a simple service with small codebase, designed for easy isolation. The feature discovery part is implemented in a 'nfd-worker' client which sends labeling requests to nfd-server, thus, requiring no access/permissions to the Kubernetes API itself. Client-server communication is implemented by using gRPC. The protocol currently consists of only one request, i.e. the labeling request. The spec templates are converted to the new scheme. The nfd-master server can be deployed using the nfd-master.yaml.template which now also contains the necessary RBAC configuration. NFD workers can be deployed by using the nfd-worker-daemonset.yaml.template or nfd-worker-job.yaml.template (most easily used with the label-nodes.sh script). Only nfd-worker currently support config file or options. The (default) NFD config file is renamed to nfd-worker.conf.
10 lines
641 B
Bash
Executable file
10 lines
641 B
Bash
Executable file
#!/usr/bin/env bash
|
|
# Get the number of nodes in Ready state in the Kubernetes cluster
|
|
NumNodes=$(kubectl get nodes | grep -i ' ready ' | wc -l)
|
|
|
|
# We set the .spec.completions and .spec.parallelism to the node count
|
|
# We request a specific hostPort in the job spec to limit the number of pods
|
|
# that run on a node to one. As a result, one pod runs on each node in parallel
|
|
# We set the NODE_NAME environemnt variable to get the Kubernetes node object.
|
|
sed -e "s/COMPLETION_COUNT/$NumNodes/" -e "s/PARALLELISM_COUNT/$NumNodes/" nfd-worker-job.yaml.template > node-feature-discovery-job.yaml
|
|
kubectl create -f node-feature-discovery-job.yaml
|