mirror of
https://github.com/kubernetes-sigs/node-feature-discovery.git
synced 2024-12-14 11:57:51 +00:00
9a5f8f7e9e
Auto-generated from v0.10.1-18-gdae4a787 by 'update-gh-pages.sh'
52 lines
No EOL
22 KiB
HTML
52 lines
No EOL
22 KiB
HTML
<!DOCTYPE html> <html lang="en" dir="auto"> <head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5, user-scalable=no"> <meta name="description" content="Introduction Table of contents NFD-Master NFD-Worker NFD-Topology-Updater Feature Discovery Node annotations NodeResourceTopology CR This software ..."> <meta name="revised" content=""> <meta name="author" content="Kubernetes SIGs"> <meta name="generator" content="rundocs/jekyll-rtd-theme v2.0.10"><meta name="theme-color" content="#2980b9"> <title>Introduction · Node Feature Discovery</title> <meta name="twitter:title" content="Introduction · Node Feature Discovery"> <meta name="twitter:description" content="Introduction Table of contents NFD-Master NFD-Worker NFD-Topology-Updater Feature Discovery Node annotations NodeResourceTopology CR This software ..."> <meta name="twitter:card" content="summary"> <meta name="twitter:site" content="@Kubernetes SIGs"> <meta name="twitter:url" content="https://kubernetes-sigs.github.com/node-feature-discovery/v0.10/get-started/introduction.html"> <meta name="twitter:creator" content="@rundocs/jekyll-rtd-theme v2.0.10"> <meta property="og:title" content="Introduction · Node Feature Discovery"> <meta property="og:description" content="Introduction Table of contents NFD-Master NFD-Worker NFD-Topology-Updater Feature Discovery Node annotations NodeResourceTopology CR This software ..."> <meta property="og:locale" content="en"> <meta property="og:url" content="https://kubernetes-sigs.github.com/node-feature-discovery/v0.10/get-started/introduction.html"> <meta property="og:type" content="article"> <meta property="article:author" content="Kubernetes SIGs"> <meta property="article:published_time" content="2016-07-23T00:07:52-05:00"> <meta property="article:modified_time" content="2023-07-21T03:38:26-05:00"> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "mainEntityOfPage": { "@type": "WebPage", "@id": "https://kubernetes-sigs.github.com/node-feature-discovery/v0.10/get-started/introduction.html" }, "headline": "Introduction · Node Feature Discovery", "image": [], "author": { "@type": "Person", "name": "Kubernetes SIGs" }, "datePublished": "2016-07-23T00:07:52-05:00", "dateModified": "2023-07-21T03:38:26-05:00", "publisher": { "@type": "Organization", "name": "Kubernetes SIGs", "logo": { "@type": "ImageObject", "url": "https://avatars.githubusercontent.com/u/36015203?v=4" } }, "description": "Introduction Table of contents NFD-Master NFD-Worker NFD-Topology-Updater Feature Discovery Node annotations NodeResourceTopology CR This software ..." } </script> <link rel="dns-prefetch" href="https://cdn.jsdelivr.net"><link rel="next" href="https://kubernetes-sigs.github.com/node-feature-discovery/v0.10/get-started/quick-start.html"><link rel="canonical" href="https://kubernetes-sigs.github.com/node-feature-discovery/v0.10/get-started/introduction.html"><link rel="icon" type="image/svg+xml" href="/node-feature-discovery/v0.10/assets/images/favicon.svg"><link rel="icon" type="image/png" href="/node-feature-discovery/v0.10/assets/images/favicon-16x16.png" sizes="16x16"> <link rel="icon" type="image/png" href="/node-feature-discovery/v0.10/assets/images/favicon-32x32.png" sizes="32x32"> <link rel="icon" type="image/png" href="/node-feature-discovery/v0.10/assets/images/favicon-96x96.png" sizes="96x96"><link rel="mask-icon" href="/node-feature-discovery/v0.10/assets/images/favicon.svg" color="#2980b9"><link rel="apple-touch-icon" href="/node-feature-discovery/v0.10/assets/images/apple-touch-icon-300x300.jpg"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/rundocs/jekyll-rtd-theme@2.0.10/assets/css/theme.min.css"><style>@media (min-width: 1280px){.content-wrap{max-width:1200px}}</style><script> window.ui = { title: "Node Feature Discovery", baseurl: "/node-feature-discovery/v0.10", i18n: { search_results: "Search Results", search_results_found: "Search finished, found # page(s) matching the search query.", search_results_not_found: "Your search did not match any documents, please make sure that all characters are spelled correctly!" } }; </script> </head> <body class="container"><div class="sidebar-wrap overflow-hidden"> <div class="sidebar height-full overflow-y-scroll overflow-x-hidden"> <div class="header d-flex flex-column p-3 text-center"> <div class="title pb-1"> <a class="h4 no-underline py-1 px-2 rounded-1" href="/node-feature-discovery/v0.10/" title="Documentation of Node Feature Discovery - a Kubernetes add-on for discovering and advertising hardware features and system configuration in the cluster."> <i class="fa fa-home"></i> Node Feature Discovery </a> </div> <span class="version">v0.10.1</span> <form class="search pt-2" action="/node-feature-discovery/v0.10/search.html" method="get" autocomplete="off"> <input class="form-control input-block input-sm" type="text" name="q" placeholder="Search docs..."> </form> </div> <div class="toctree py-2" data-spy="affix" role="navigation" aria-label="main navigation"> <ul> </ul> <a class="caption d-block text-uppercase no-wrap px-2 py-0" href="/node-feature-discovery/v0.10/get-started/"> Get started </a><ul> <li class="toc level-1 current" data-sort="1" data-level="1"> <a class="d-flex flex-items-baseline current" href="/node-feature-discovery/v0.10/get-started/introduction.html">1. Introduction</a> </li> <li class="toc level-1 " data-sort="2" data-level="1"> <a class="d-flex flex-items-baseline " href="/node-feature-discovery/v0.10/get-started/quick-start.html">2. Quick start</a> </li> <li class="toc level-1 " data-sort="3" data-level="1"> <a class="d-flex flex-items-baseline " href="/node-feature-discovery/v0.10/get-started/deployment-and-usage.html">3. Deployment and usage</a> </li> <li class="toc level-1 " data-sort="4" data-level="1"> <a class="d-flex flex-items-baseline " href="/node-feature-discovery/v0.10/get-started/features.html">4. Feature labels</a> </li> <li class="toc level-1 " data-sort="5" data-level="1"> <a class="d-flex flex-items-baseline " href="/node-feature-discovery/v0.10/get-started/examples-and-demos.html">5. Examples and demos</a> </li></ul> <a class="caption d-block text-uppercase no-wrap px-2 py-0" href="/node-feature-discovery/v0.10/advanced/"> Advanced </a><ul> <li class="toc level-1 " data-sort="1" data-level="1"> <a class="d-flex flex-items-baseline " href="/node-feature-discovery/v0.10/advanced/developer-guide.html">1. Developer guide</a> </li> <li class="toc level-1 " data-sort="2" data-level="1"> <a class="d-flex flex-items-baseline " href="/node-feature-discovery/v0.10/advanced/master-commandline-reference.html">2. Master cmdline reference</a> </li> <li class="toc level-1 " data-sort="3" data-level="1"> <a class="d-flex flex-items-baseline " href="/node-feature-discovery/v0.10/advanced/worker-commandline-reference.html">3. Worker cmdline reference</a> </li> <li class="toc level-1 " data-sort="4" data-level="1"> <a class="d-flex flex-items-baseline " href="/node-feature-discovery/v0.10/advanced/worker-configuration-reference.html">4. Worker config reference</a> </li> <li class="toc level-1 " data-sort="5" data-level="1"> <a class="d-flex flex-items-baseline " href="/node-feature-discovery/v0.10/advanced/topology-updater-commandline-reference.html">5. Topology Updater Cmdline Reference</a> </li> <li class="toc level-1 " data-sort="5" data-level="1"> <a class="d-flex flex-items-baseline " href="/node-feature-discovery/v0.10/advanced/customization-guide.html">5. Customization guide</a> </li></ul> <a class="caption d-block text-uppercase no-wrap px-2 py-0" href="/node-feature-discovery/v0.10/contributing/"> Contributing </a><ul> </ul> </div> </div> </div> <div class="content-wrap"> <div class="header d-flex flex-justify-between p-2 hide-lg hide-xl" aria-label="top navigation"> <button id="toggle" aria-label="Toggle menu" class="btn-octicon p-2 m-0 text-white" type="button"> <i class="fa fa-bars"></i> </button> <div class="title flex-1 d-flex flex-justify-center"> <a class="h4 no-underline py-1 px-2 rounded-1" href="/node-feature-discovery/v0.10/">Node Feature Discovery</a> </div> </div> <div class="bg-red-2"> <div class="content p-3 px-sm-5"> This documentation is for Node Feature Discovery version that is no longer supported. Please upgrade and visit the <a class="no-underline" href="/node-feature-discovery/stable">documentation of the latest stable release</a>. </div> </div> <div class="content p-3 p-sm-5"> <div class="navigation-top d-flex flex-justify-between"> <ul class="breadcrumb" role="navigation" aria-label="breadcrumbs navigation"> <li class="breadcrumb-item"> <a class="no-underline" href="/node-feature-discovery/v0.10/" title="/"> <i class="fa fa-home"></i> </a> </li><li class="breadcrumb-item" ><a href="/node-feature-discovery/v0.10/get-started/">get-started</a></li><li class="breadcrumb-item" aria-current="page">introduction.md</li></ul> <a class="edit" href="https://github.com/kubernetes-sigs/node-feature-discovery/edit/gh-pages/get-started/introduction.md" title="Edit on GitHub" rel="noreferrer" target="_blank"> <i class="fa fa-edit"></i> </a> </div> <hr> <div role="main" itemscope="itemscope" itemtype="https://schema.org/Article"> <div class="markdown-body" itemprop="articleBody"> <h1 class="no_toc" id="introduction">Introduction</h1> <h2 class="no_toc text-delta" id="table-of-contents">Table of contents</h2> <ol id="markdown-toc"> <li><a href="#nfd-master" id="markdown-toc-nfd-master">NFD-Master</a></li> <li><a href="#nfd-worker" id="markdown-toc-nfd-worker">NFD-Worker</a></li> <li><a href="#nfd-topology-updater" id="markdown-toc-nfd-topology-updater">NFD-Topology-Updater</a></li> <li><a href="#feature-discovery" id="markdown-toc-feature-discovery">Feature Discovery</a></li> <li><a href="#node-annotations" id="markdown-toc-node-annotations">Node annotations</a></li> <li><a href="#noderesourcetopology-cr" id="markdown-toc-noderesourcetopology-cr">NodeResourceTopology CR</a></li> </ol> <hr /> <p>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.</p> <p>NFD consists of three software components:</p> <ol> <li>nfd-master</li> <li>nfd-worker</li> <li>nfd-topology-updater</li> </ol> <h2 id="nfd-master">NFD-Master</h2> <p>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.</p> <h2 id="nfd-worker">NFD-Worker</h2> <p>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,</p> <h2 id="nfd-topology-updater">NFD-Topology-Updater</h2> <p>NFD-Topology-Updater is a daemon responsible for examining allocated resources on a worker node to account for resources available to be allocated to new pod on a per-zone basis (where a zone can be a NUMA node). It then communicates the information to nfd-master which does the <a href="#noderesourcetopology-cr">NodeResourceTopology CR</a> creation corresponding to all the nodes in the cluster. One instance of nfd-topology-updater is supposed to be running on each node of the cluster.</p> <h2 id="feature-discovery">Feature Discovery</h2> <p>Feature discovery is divided into domain-specific feature sources:</p> <ul> <li>CPU</li> <li>Kernel</li> <li>Memory</li> <li>Network</li> <li>PCI</li> <li>Storage</li> <li>System</li> <li>USB</li> <li>Custom (rule-based custom features)</li> <li>Local (hooks for user-specific features)</li> <li>IOMMU (<em>deprecated</em>)</li> </ul> <p>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 <code class="language-plaintext highlighter-rouge notranslate">feature.node.kubernetes.io/</code> 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.</p> <p>An overview of the default feature labels:</p> <div class="language-json highlighter-rouge notranslate"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
|
|
</span><span class="nl">"feature.node.kubernetes.io/cpu-<feature-name>"</span><span class="p">:</span><span class="w"> </span><span class="s2">"true"</span><span class="p">,</span><span class="w">
|
|
</span><span class="nl">"feature.node.kubernetes.io/custom-<feature-name>"</span><span class="p">:</span><span class="w"> </span><span class="s2">"true"</span><span class="p">,</span><span class="w">
|
|
</span><span class="nl">"feature.node.kubernetes.io/kernel-<feature name>"</span><span class="p">:</span><span class="w"> </span><span class="s2">"<feature value>"</span><span class="p">,</span><span class="w">
|
|
</span><span class="nl">"feature.node.kubernetes.io/memory-<feature-name>"</span><span class="p">:</span><span class="w"> </span><span class="s2">"true"</span><span class="p">,</span><span class="w">
|
|
</span><span class="nl">"feature.node.kubernetes.io/network-<feature-name>"</span><span class="p">:</span><span class="w"> </span><span class="s2">"true"</span><span class="p">,</span><span class="w">
|
|
</span><span class="nl">"feature.node.kubernetes.io/pci-<device label>.present"</span><span class="p">:</span><span class="w"> </span><span class="s2">"true"</span><span class="p">,</span><span class="w">
|
|
</span><span class="nl">"feature.node.kubernetes.io/storage-<feature-name>"</span><span class="p">:</span><span class="w"> </span><span class="s2">"true"</span><span class="p">,</span><span class="w">
|
|
</span><span class="nl">"feature.node.kubernetes.io/system-<feature name>"</span><span class="p">:</span><span class="w"> </span><span class="s2">"<feature value>"</span><span class="p">,</span><span class="w">
|
|
</span><span class="nl">"feature.node.kubernetes.io/usb-<device label>.present"</span><span class="p">:</span><span class="w"> </span><span class="s2">"<feature value>"</span><span class="p">,</span><span class="w">
|
|
</span><span class="nl">"feature.node.kubernetes.io/<file name>-<feature name>"</span><span class="p">:</span><span class="w"> </span><span class="s2">"<feature value>"</span><span class="w">
|
|
</span><span class="p">}</span><span class="w">
|
|
</span></code></pre> </div></div> <h2 id="node-annotations">Node annotations</h2> <p>NFD also annotates nodes it is running on:</p> <table> <thead> <tr> <th>Annotation</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>[<instance>.]nfd.node.kubernetes.io/master.version</td> <td>Version of the nfd-master instance running on the node. Informative use only.</td> </tr> <tr> <td>[<instance>.]nfd.node.kubernetes.io/worker.version</td> <td>Version of the nfd-worker instance running on the node. Informative use only.</td> </tr> <tr> <td>[<instance>.]nfd.node.kubernetes.io/feature-labels</td> <td>Comma-separated list of node labels managed by NFD. NFD uses this internally so must not be edited by users.</td> </tr> <tr> <td>[<instance>.]nfd.node.kubernetes.io/extended-resources</td> <td>Comma-separated list of node extended resources managed by NFD. NFD uses this internally so must not be edited by users.</td> </tr> </tbody> </table> <p>NOTE: the <a href="/node-feature-discovery/v0.10/advanced/master-commandline-reference.html#instance"><code class="language-plaintext highlighter-rouge notranslate">-instance</code></a> command line flag affects the annotation names</p> <p>Unapplicable annotations are not created, i.e. for example master.version is only created on nodes running nfd-master.</p> <h2 id="noderesourcetopology-cr">NodeResourceTopology CR</h2> <p>When run with NFD-Topology-Updater, NFD creates CR instances corresponding to node resource hardware topology such as:</p> <div class="language-yaml highlighter-rouge notranslate"><div class="highlight"><pre class="highlight"><code><span class="na">apiVersion</span><span class="pi">:</span> <span class="s">topology.node.k8s.io/v1alpha1</span>
|
|
<span class="na">kind</span><span class="pi">:</span> <span class="s">NodeResourceTopology</span>
|
|
<span class="na">metadata</span><span class="pi">:</span>
|
|
<span class="na">name</span><span class="pi">:</span> <span class="s">node1</span>
|
|
<span class="na">topologyPolicies</span><span class="pi">:</span> <span class="pi">[</span><span class="s2">"</span><span class="s">SingleNUMANodeContainerLevel"</span><span class="pi">]</span>
|
|
<span class="na">zones</span><span class="pi">:</span>
|
|
<span class="pi">-</span> <span class="na">name</span><span class="pi">:</span> <span class="s">node-0</span>
|
|
<span class="na">type</span><span class="pi">:</span> <span class="s">Node</span>
|
|
<span class="na">resources</span><span class="pi">:</span>
|
|
<span class="pi">-</span> <span class="na">name</span><span class="pi">:</span> <span class="s">cpu</span>
|
|
<span class="na">capacity</span><span class="pi">:</span> <span class="m">20</span>
|
|
<span class="na">allocatable</span><span class="pi">:</span> <span class="m">16</span>
|
|
<span class="na">available</span><span class="pi">:</span> <span class="m">10</span>
|
|
<span class="pi">-</span> <span class="na">name</span><span class="pi">:</span> <span class="s">vendor/nic1</span>
|
|
<span class="na">capacity</span><span class="pi">:</span> <span class="m">3</span>
|
|
<span class="na">allocatable</span><span class="pi">:</span> <span class="m">3</span>
|
|
<span class="na">available</span><span class="pi">:</span> <span class="m">3</span>
|
|
<span class="pi">-</span> <span class="na">name</span><span class="pi">:</span> <span class="s">node-1</span>
|
|
<span class="na">type</span><span class="pi">:</span> <span class="s">Node</span>
|
|
<span class="na">resources</span><span class="pi">:</span>
|
|
<span class="pi">-</span> <span class="na">name</span><span class="pi">:</span> <span class="s">cpu</span>
|
|
<span class="na">capacity</span><span class="pi">:</span> <span class="m">30</span>
|
|
<span class="na">allocatable</span><span class="pi">:</span> <span class="m">30</span>
|
|
<span class="na">available</span><span class="pi">:</span> <span class="m">15</span>
|
|
<span class="pi">-</span> <span class="na">name</span><span class="pi">:</span> <span class="s">vendor/nic2</span>
|
|
<span class="na">capacity</span><span class="pi">:</span> <span class="m">6</span>
|
|
<span class="na">allocatable</span><span class="pi">:</span> <span class="m">6</span>
|
|
<span class="na">available</span><span class="pi">:</span> <span class="m">6</span>
|
|
<span class="pi">-</span> <span class="na">name</span><span class="pi">:</span> <span class="s">node-2</span>
|
|
<span class="na">type</span><span class="pi">:</span> <span class="s">Node</span>
|
|
<span class="na">resources</span><span class="pi">:</span>
|
|
<span class="pi">-</span> <span class="na">name</span><span class="pi">:</span> <span class="s">cpu</span>
|
|
<span class="na">capacity</span><span class="pi">:</span> <span class="m">30</span>
|
|
<span class="na">allocatable</span><span class="pi">:</span> <span class="m">30</span>
|
|
<span class="na">available</span><span class="pi">:</span> <span class="m">15</span>
|
|
<span class="pi">-</span> <span class="na">name</span><span class="pi">:</span> <span class="s">vendor/nic1</span>
|
|
<span class="na">capacity</span><span class="pi">:</span> <span class="m">3</span>
|
|
<span class="na">allocatable</span><span class="pi">:</span> <span class="m">3</span>
|
|
<span class="na">available</span><span class="pi">:</span> <span class="m">3</span>
|
|
</code></pre> </div></div> </div> </div> <div class="navigation-bottom d-flex flex-justify-between py-3" role="navigation" aria-label="footer navigation"> <div class="prev"></div> <div class="next"><a href="/node-feature-discovery/v0.10/get-started/quick-start.html" class="btn" title="Quick start" accesskey="n" rel="next"> Next <i class="fa fa-arrow-circle-right"></i> </a></div> </div><hr> <div class="copyright text-center text-gray" role="contentinfo"> <i class="fa fa-copyright"></i> <span class="time">2016-2023,</span> <a class="text-gray" href="https://github.com/kubernetes-sigs" rel="noreferrer" target="_blank">Kubernetes SIGs</a> Revision <a class="text-gray" href="https://github.com/kubernetes-sigs/node-feature-discovery/commit/" title="" rel="noreferrer" target="_blank"></a> <br> <div class="generator"> Built with <a href="https://pages.github.com" rel="noreferrer" target="_blank" title="github-pages v209">GitHub Pages</a> using a <a href="https://github.com/rundocs/jekyll-rtd-theme" rel="noreferrer" target="_blank" title="rundocs/jekyll-rtd-theme v2.0.10">theme</a> provided by <a href="https://rundocs.io" rel="noreferrer" target="_blank">RunDocs</a>. </div> </div> </div> </div> <div class="addons-wrap d-flex flex-column overflow-y-auto"> <div class="status d-flex flex-justify-between p-2"> <div class="title p-1"> <i class="fa fa-book"></i> Node Feature Discovery </div> <div class="branch p-1"> <span class="name"> v0.10 </span> <i class="fa fa-caret-down"></i> </div> </div> <div class="addons d-flex flex-column height-full p-2 d-none"> <dl id="versions"> <dt>Versions</dt> <script src="/node-feature-discovery/versions.js"></script> <script> var dt = document.getElementById('versions'); var items = getVersionListItems(); for (var i=0; i < items.length; i++) { var dd = document.createElement('dd'); var a = dd.appendChild(document.createElement('a')); a.appendChild(document.createTextNode(items[i].name)); a.href = items[i].url; dt.appendChild(dd); } </script> </dl> <dl> <dt>GitHub</dt> <dd> <a href="https://github.com/kubernetes-sigs/node-feature-discovery" title="Stars: 587"> <i class="fa fa-github"></i> Homepage </a> </dd> <dd> <a href="https://github.com/kubernetes-sigs/node-feature-discovery/issues" title="Open issues: 29"> <i class="fa fa-question-circle-o"></i> Issues </a> </dd> <dd> <a href="https://github.com/kubernetes-sigs/node-feature-discovery/zipball/gh-pages" title="Size: 91075 Kb"> <i class="fa fa-download"></i> Download </a> </dd> </dl> <hr> <div class="license f6 pb-2"> This <a href="/node-feature-discovery/v0.10/" title="Node Feature Discovery">Software</a> is under the terms of <a href="https://github.com/kubernetes-sigs/node-feature-discovery">Apache License 2.0</a>. </div> </div> </div> <script src="https://cdn.jsdelivr.net/gh/rundocs/jekyll-rtd-theme@2.0.10/assets/js/jquery.min.js"></script><script src="https://cdn.jsdelivr.net/gh/rundocs/jekyll-rtd-theme@2.0.10/assets/js/theme.min.js"></script> </body> </html> |