Hi All,
Yesterday (27th October 2020) we had a discussion in SIG Node to gain consensus on the the location of the NodeResourceTopology CRD API, the API that is needed by the following two proposed components:
- Topology exporter daemon which is to be implemented as part of Node feature Discovery (NFD)
- Topology aware scheduler plugin proposed as an in-tree plugin as part of kube-scheduler
The problem statement
Both the Topology aware scheduler plugin and Node Feature Discovery need to import the CRD API definition (clientset, informers, etc). The question is, where to locate this API?
Possible Options:
- In Node feature Discovery: This cannot be done as it leads to circular dependency between NFD and k8s (NFD imports K8s and scheduler plugin in kube-scheduler needs to import NFD to access the CRD API).
- In an external repository ( e.g. kubernetes-sigs): Similar challenge as above as the external repo defining the CRD API will need to import k8s and (topology aware scheduler plugin in) k8s will need the CRD.
- In staging: This is the only viable option currently so we propose having the NodeResourceTopology CRD API definition be under staging at path staging/src/k8s.io/api/node in k/k.
Recommended Solution/Discussion in SIG Node: As per the discussion in SIG node, we would place the API under
staging/src/k8s.io/api/node/noderesourcetopologyapi. If the mechanism of supporting CRDs changes in the future we would adapt and make updates based on that.
In addition this, we will include a code-generation script for maintainability which will be placed in the k/k hack directory.
The following two KEPs have been updated based on the above decision and are ready for a final round of review. We are targeting these for kubernetes 1.21.