<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Klustre on KlustreFS</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/</link><description>Recent content in Klustre on KlustreFS</description><generator>Hugo</generator><language>en</language><atom:link href="https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/index.xml" rel="self" type="application/rss+xml"/><item><title>Overview</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/overview/</guid><description>&lt;p&gt;Klustre CSI Plugin is an open-source &lt;a href="https://kubernetes-csi.github.io/docs/"&gt;Container Storage Interface (CSI)&lt;/a&gt; node driver that lets Kubernetes workloads mount existing Lustre file systems. The project focuses on high-performance computing (HPC), AI/ML training, and media workloads that need shared &lt;code&gt;ReadWriteMany&lt;/code&gt; semantics with the bandwidth of Lustre.&lt;/p&gt;
&lt;h2 id="what-does-it-provide"&gt;What does it provide?&lt;a class="td-heading-self-link" href="#what-does-it-provide" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes-native storage&lt;/strong&gt; – Exposes Lustre exports via CSI objects such as &lt;code&gt;CSIDriver&lt;/code&gt;, &lt;code&gt;PersistentVolume&lt;/code&gt;, and &lt;code&gt;PersistentVolumeClaim&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Node daemonset&lt;/strong&gt; – Runs a privileged pod on every Lustre-capable worker node to perform mounts and unmounts using the host’s Lustre client.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Static provisioning&lt;/strong&gt; – Administrators define PersistentVolumes that point at existing Lustre paths (for example &lt;code&gt;10.0.0.1@tcp0:/lustre-fs&lt;/code&gt;) and bind them to workloads.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Helm and raw manifests&lt;/strong&gt; – Install using the published manifests in &lt;code&gt;manifests/&lt;/code&gt; or the OCI Helm chart &lt;code&gt;oci://ghcr.io/klustrefs/charts/klustre-csi-plugin&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cluster policy alignment&lt;/strong&gt; – Default RBAC, topology labels, and resource requests are tuned so scheduling is constrained to nodes that actually have the Lustre client installed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="why-would-i-use-it"&gt;Why would I use it?&lt;a class="td-heading-self-link" href="#why-would-i-use-it" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Use the Klustre CSI plugin when you:&lt;/p&gt;</description></item><item><title>Requirements</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/requirements/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/requirements/</guid><description>&lt;p&gt;Use this page when you need the full checklist (versions, node prep, and registry access) before installing Klustre CSI. The Quickstart and Introduction pages summarize this information, but this serves as a canonical reference.&lt;/p&gt;
&lt;h2 id="kubernetes-cluster"&gt;Kubernetes cluster&lt;a class="td-heading-self-link" href="#kubernetes-cluster" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Kubernetes v1.20 or newer with CSI v1.5 enabled.&lt;/li&gt;
&lt;li&gt;Control plane and kubelets must allow privileged pods (&lt;code&gt;hostPID&lt;/code&gt;, &lt;code&gt;hostNetwork&lt;/code&gt;, &lt;code&gt;SYS_ADMIN&lt;/code&gt; capability).&lt;/li&gt;
&lt;li&gt;Cluster-admin &lt;code&gt;kubectl&lt;/code&gt; access.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="lustre-capable-worker-nodes"&gt;Lustre-capable worker nodes&lt;a class="td-heading-self-link" href="#lustre-capable-worker-nodes" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Install the Lustre client packages (&lt;code&gt;mount.lustre&lt;/code&gt;, kernel modules, user-space tools) on every node that will host Lustre-backed workloads.&lt;/p&gt;</description></item><item><title>Quickstart</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/quickstart/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/quickstart/</guid><description>&lt;p&gt;Looking for the fastest path from zero to a mounted Lustre volume? Follow this TL;DR workflow, then explore the detailed installation pages if you need customization.&lt;/p&gt;
&lt;h2 id="requirements"&gt;Requirements&lt;a class="td-heading-self-link" href="#requirements" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Before you sprint through the commands below, complete the &lt;a href="https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/requirements/"&gt;requirements checklist&lt;/a&gt;. You’ll need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;kubectl&lt;/code&gt;, &lt;code&gt;git&lt;/code&gt;, and optionally &lt;code&gt;helm&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Worker nodes with the Lustre client installed and reachable MGS/MDS/OSS endpoints.&lt;/li&gt;
&lt;li&gt;Nodes labeled &lt;code&gt;lustre.csi.klustrefs.io/lustre-client=true&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;klustre-system&lt;/code&gt; namespace plus optional GHCR image pull secret (see the requirements page for the canonical commands).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="step-1--install-klustre-csi"&gt;Step 1 — Install Klustre CSI&lt;a class="td-heading-self-link" href="#step-1--install-klustre-csi" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87"&gt;export&lt;/span&gt; &lt;span style="color:#000"&gt;KLUSTREFS_VERSION&lt;/span&gt;&lt;span style="color:#ce5c00;font-weight:bold"&gt;=&lt;/span&gt;main
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl apply -k &lt;span style="color:#4e9a06"&gt;&amp;#34;github.com/klustrefs/klustre-csi-plugin//manifests?ref=&lt;/span&gt;&lt;span style="color:#000"&gt;$KLUSTREFS_VERSION&lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="step-2--verify-the-daemonset"&gt;Step 2 — Verify the daemonset&lt;a class="td-heading-self-link" href="#step-2--verify-the-daemonset" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Wait for the DaemonSet rollout to complete:&lt;/p&gt;</description></item><item><title>Kind Quickstart</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/advanced/kind/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/advanced/kind/</guid><description>&lt;div class="pageinfo pageinfo-primary"&gt;
&lt;p&gt;This walkthrough targets Linux hosts with Docker/Podman because Kind worker nodes run as containers. macOS and Windows hosts cannot load kernel modules required by Lustre, but you can still observe the driver boot sequence. The shim below fakes &lt;code&gt;mount.lustre&lt;/code&gt; with &lt;code&gt;tmpfs&lt;/code&gt; so you can run the end-to-end demo locally.&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id="requirements"&gt;Requirements&lt;a class="td-heading-self-link" href="#requirements" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Docker 20.10+ (or a compatible container runtime supported by Kind).&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kind.sigs.k8s.io/"&gt;Kind&lt;/a&gt; v0.20+.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kubectl&lt;/code&gt; v1.27+ pointed at your Kind context.&lt;/li&gt;
&lt;li&gt;A GitHub personal access token with &lt;code&gt;read:packages&lt;/code&gt; if you plan to pull images from GitHub Container Registry via an image pull secret (optional but recommended).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="1-create-a-kind-cluster"&gt;1. Create a Kind cluster&lt;a class="td-heading-self-link" href="#1-create-a-kind-cluster" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Save the following Kind configuration and create the cluster:&lt;/p&gt;</description></item><item><title>Label Lustre-capable nodes</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/operations/label-nodes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/operations/label-nodes/</guid><description>&lt;p&gt;The default &lt;code&gt;klustre-csi-static&lt;/code&gt; storage class restricts scheduling to nodes labeled &lt;code&gt;lustre.csi.klustrefs.io/lustre-client=true&lt;/code&gt;. Use this runbook whenever you add or remove nodes from the Lustre client pool.&lt;/p&gt;
&lt;h2 id="requirements"&gt;Requirements&lt;a class="td-heading-self-link" href="#requirements" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Cluster-admin access with &lt;code&gt;kubectl&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Nodes already have the Lustre client packages installed and can reach your Lustre servers.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="steps"&gt;Steps&lt;a class="td-heading-self-link" href="#steps" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Identify nodes that can mount Lustre&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get nodes -o wide
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Cross-reference with your infrastructure inventory or automation outputs to find the node names that have Lustre connectivity.&lt;/p&gt;</description></item><item><title>Node maintenance checklist</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/operations/maintenance/node-maintenance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/operations/maintenance/node-maintenance/</guid><description>&lt;h2 id="1-cordon-and-drain"&gt;1. Cordon and drain&lt;a class="td-heading-self-link" href="#1-cordon-and-drain" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl cordon &amp;lt;node&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl drain &amp;lt;node&amp;gt; --ignore-daemonsets --delete-emptydir-data
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Because the Klustre CSI daemonset is a DaemonSet, it is unaffected by &lt;code&gt;--ignore-daemonsets&lt;/code&gt;, but draining ensures your workloads move off the node before reboot.&lt;/p&gt;
&lt;h2 id="2-verify-daemonset-status"&gt;2. Verify daemonset status&lt;a class="td-heading-self-link" href="#2-verify-daemonset-status" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get pods -n klustre-system -o wide &lt;span style="color:#000;font-weight:bold"&gt;|&lt;/span&gt; grep &amp;lt;node&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Expect the daemonset pod to terminate when the node drains and recreate once the node returns.&lt;/p&gt;
&lt;h2 id="3-patch-or-reboot-the-node"&gt;3. Patch or reboot the node&lt;a class="td-heading-self-link" href="#3-patch-or-reboot-the-node" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Apply OS updates, reboot, or swap hardware as needed.&lt;/li&gt;
&lt;li&gt;Ensure the Lustre client packages remain installed (validate with &lt;code&gt;mount.lustre --version&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="4-uncordon-and-relabel-if-necessary"&gt;4. Uncordon and relabel if necessary&lt;a class="td-heading-self-link" href="#4-uncordon-and-relabel-if-necessary" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl uncordon &amp;lt;node&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If the node lost the &lt;code&gt;lustre.csi.klustrefs.io/lustre-client=true&lt;/code&gt; label, reapply it after verifying Lustre connectivity.&lt;/p&gt;</description></item><item><title>Node preparation</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/operations/nodes-and-volumes/nodes/preparation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/operations/nodes-and-volumes/nodes/preparation/</guid><description>&lt;h2 id="install-the-lustre-client-stack"&gt;Install the Lustre client stack&lt;a class="td-heading-self-link" href="#install-the-lustre-client-stack" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Every node that runs Lustre-backed pods must have:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;mount.lustre&lt;/code&gt; and &lt;code&gt;umount.lustre&lt;/code&gt; binaries (via &lt;code&gt;lustre-client&lt;/code&gt; RPM/DEB).&lt;/li&gt;
&lt;li&gt;Kernel modules compatible with your Lustre servers.&lt;/li&gt;
&lt;li&gt;Network reachability to the Lustre MGS/MDS/OSS endpoints.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Verify installation:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mount.lustre --version
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;lsmod &lt;span style="color:#000;font-weight:bold"&gt;|&lt;/span&gt; grep lustre
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="label-nodes"&gt;Label nodes&lt;a class="td-heading-self-link" href="#label-nodes" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The default storage class and daemonset use the label &lt;code&gt;lustre.csi.klustrefs.io/lustre-client=true&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl label nodes &amp;lt;node-name&amp;gt; lustre.csi.klustrefs.io/lustre-client&lt;span style="color:#ce5c00;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#204a87"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Remove the label when a node no longer has Lustre access:&lt;/p&gt;</description></item><item><title>Settings ConfigMap</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/reference/settings-configmap/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/reference/settings-configmap/</guid><description>&lt;p&gt;&lt;code&gt;ConfigMap/klustre-csi-settings&lt;/code&gt; provides runtime configuration to the node daemonset. Each key maps to either an environment variable or a command-line argument.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Key&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;csiEndpoint&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;UNIX socket path used by the node plugin. Must align with kubelet’s plugin directory.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;unix:///var/lib/kubelet/plugins/lustre.csi.klustrefs.io/csi.sock&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;driverRegistrationArg&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Argument passed to the node-driver-registrar sidecar.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;--kubelet-registration-path=/var/lib/kubelet/plugins/lustre.csi.klustrefs.io/csi.sock&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;logLevel&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Verbosity for the Klustre CSI binary (&lt;code&gt;info&lt;/code&gt;, &lt;code&gt;debug&lt;/code&gt;, etc.).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;info&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;nodeImage&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Container image for the Klustre CSI node plugin.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;ghcr.io/klustrefs/klustre-csi-plugin:0.0.1&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;pluginDir&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;HostPath where CSI sockets live.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/var/lib/kubelet/plugins/lustre.csi.klustrefs.io&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;priorityClassName&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Priority class applied to the daemonset pods.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;system-node-critical&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;registrarImage&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Container image for the node-driver-registrar sidecar.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.10.1&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;registrationDir&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;HostPath where kubelet expects CSI driver registration files.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/var/lib/kubelet/plugins_registry&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;To update any field:&lt;/p&gt;</description></item><item><title>Static Lustre volume demo</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/tutorials/examples/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/tutorials/examples/</guid><description>&lt;div class="pageinfo pageinfo-primary"&gt;
&lt;p&gt;Use these snippets as starting points for demos, CI smoke tests, or reproduction cases when you report issues.&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id="static-lustre-volume-demo"&gt;Static Lustre volume demo&lt;a class="td-heading-self-link" href="#static-lustre-volume-demo" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Creates a static PV/PVC pointing at &lt;code&gt;10.0.0.1@tcp0:/lustre-fs&lt;/code&gt; and mounts it in a BusyBox deployment.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;apiVersion&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;v1&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;kind&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;PersistentVolume&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;metadata&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;lustre-static-pv&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;spec&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;capacity&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;storage&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;10Gi&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;accessModes&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#000"&gt;ReadWriteMany&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;storageClassName&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;klustre-csi-static&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;persistentVolumeReclaimPolicy&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;Retain&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;csi&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;driver&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;lustre.csi.klustrefs.io&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;volumeHandle&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;lustre-static-pv&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;volumeAttributes&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;source&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;10.0.0.1&lt;/span&gt;@&lt;span style="color:#000"&gt;tcp0:/lustre-fs&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;mountOptions&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;flock,user_xattr&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#000"&gt;---&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;apiVersion&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;v1&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;kind&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;PersistentVolumeClaim&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;metadata&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;lustre-static-pvc&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;spec&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;accessModes&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#000"&gt;ReadWriteMany&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;storageClassName&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;klustre-csi-static&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;resources&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;requests&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;storage&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;10Gi&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;volumeName&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;lustre-static-pv&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#000"&gt;---&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;apiVersion&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;apps/v1&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;kind&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;Deployment&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;metadata&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;lustre-demo&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;spec&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;replicas&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;1&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;selector&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;matchLabels&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;app&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;lustre-demo&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;template&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;metadata&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;labels&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;app&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;lustre-demo&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;spec&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;containers&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;app&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;image&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;busybox&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;command&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;[&lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;sleep&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;,&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;infinity&amp;#34;&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;]&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;volumeMounts&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;lustre-share&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;mountPath&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;/mnt/lustre&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;volumes&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;lustre-share&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;persistentVolumeClaim&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;claimName&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;lustre-static-pvc&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="validate"&gt;Validate&lt;a class="td-heading-self-link" href="#validate" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl apply -f lustre-demo.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl &lt;span style="color:#204a87"&gt;exec&lt;/span&gt; deploy/lustre-demo -- df -h /mnt/lustre
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl &lt;span style="color:#204a87"&gt;exec&lt;/span&gt; deploy/lustre-demo -- sh -c &lt;span style="color:#4e9a06"&gt;&amp;#39;echo &amp;#34;hello $(date)&amp;#34; &amp;gt; /mnt/lustre/hello.txt&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Delete when finished:&lt;/p&gt;</description></item><item><title>Static PV workflow</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/operations/nodes-and-volumes/volumes/static-pv-workflow/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/operations/nodes-and-volumes/volumes/static-pv-workflow/</guid><description>&lt;h2 id="1-create-the-persistentvolume"&gt;1. Create the PersistentVolume&lt;a class="td-heading-self-link" href="#1-create-the-persistentvolume" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;apiVersion&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;v1&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;kind&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;PersistentVolume&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;metadata&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;lustre-static-pv&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;spec&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;capacity&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;storage&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;10Gi&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;accessModes&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#000"&gt;ReadWriteMany&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;storageClassName&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;klustre-csi-static&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;persistentVolumeReclaimPolicy&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;Retain&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;csi&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;driver&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;lustre.csi.klustrefs.io&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;volumeHandle&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;lustre-static-pv&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;volumeAttributes&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;source&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;10.0.0.1&lt;/span&gt;@&lt;span style="color:#000"&gt;tcp0:/lustre-fs&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;mountOptions&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;flock,user_xattr&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;volumeHandle&lt;/code&gt; just needs to be unique within the cluster; it is not used by the Lustre backend.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;volumeAttributes.source&lt;/code&gt; carries the Lustre management target and filesystem path.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-bind-with-a-persistentvolumeclaim"&gt;2. Bind with a PersistentVolumeClaim&lt;a class="td-heading-self-link" href="#2-bind-with-a-persistentvolumeclaim" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;apiVersion&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;v1&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;kind&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;PersistentVolumeClaim&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;metadata&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;lustre-static-pvc&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;spec&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;accessModes&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#000"&gt;ReadWriteMany&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;storageClassName&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;klustre-csi-static&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;volumeName&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;lustre-static-pv&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;resources&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;requests&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;storage&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;10Gi&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Even though Lustre capacity is managed outside Kubernetes, the &lt;code&gt;storage&lt;/code&gt; field should match the PV so the binder succeeds.&lt;/p&gt;</description></item><item><title>Amazon EKS Notes</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/advanced/aws/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/advanced/aws/</guid><description>&lt;p&gt;The AWS-oriented quickstart is under construction. It will cover:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Preparing EKS worker nodes with the Lustre client (either Amazon Linux extras or the FSx-provided packages).&lt;/li&gt;
&lt;li&gt;Handling IAM roles for service accounts (IRSA) and pulling container images from GitHub Container Registry.&lt;/li&gt;
&lt;li&gt;Connecting to FSx for Lustre file systems (imported or linked to S3 buckets) and exposing them via static PersistentVolumes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Until the full write-up lands, adapt the &lt;a href="https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/"&gt;Introduction&lt;/a&gt; flow by:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Installing the Lustre client on your managed node groups (e.g., with &lt;code&gt;yum install lustre-client&lt;/code&gt; in your AMI or through user data).&lt;/li&gt;
&lt;li&gt;Labeling the nodes that have Lustre access with &lt;code&gt;lustre.csi.klustrefs.io/lustre-client=true&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Applying the Klustre CSI manifests or Helm chart in the &lt;code&gt;klustre-system&lt;/code&gt; namespace.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Feedback on which AWS-specific topics matter most (FSx throughput tiers, PrivateLink, IAM policies, etc.) is welcome in the &lt;a href="https://github.com/klustrefs/klustre-csi-plugin/discussions"&gt;community discussions&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Bare Metal Notes</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/advanced/baremetal/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/advanced/baremetal/</guid><description>&lt;p&gt;This guide will describe how to prepare on-prem or colocation clusters where you manage the operating systems directly (kernel modules, Lustre packages, kubelet paths, etc.). While the detailed walkthrough is in progress, you can already follow the general &lt;a href="https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/"&gt;Introduction&lt;/a&gt; page and keep the following considerations in mind:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ensure every node that should host Lustre-backed pods has the Lustre client packages installed via your distribution’s package manager (for example, &lt;code&gt;lustre-client&lt;/code&gt; RPM/DEB).&lt;/li&gt;
&lt;li&gt;Label those nodes with &lt;code&gt;lustre.csi.klustrefs.io/lustre-client=true&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Grant the &lt;code&gt;klustre-system&lt;/code&gt; namespace Pod Security admission exemptions (e.g., &lt;code&gt;pod-security.kubernetes.io/enforce=privileged&lt;/code&gt;) because the daemonset requires &lt;code&gt;hostPID&lt;/code&gt;, &lt;code&gt;hostNetwork&lt;/code&gt;, and &lt;code&gt;SYS_ADMIN&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are interested in helping us document more advanced configurations (multiple interfaces, bonded networks, RDMA, etc.), please open an issue or discussion in the &lt;a href="https://github.com/klustrefs/klustre-csi-plugin"&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Node integration flow</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/operations/nodes-and-volumes/nodes/integration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/operations/nodes-and-volumes/nodes/integration/</guid><description>&lt;h2 id="daemonset-host-mounts"&gt;Daemonset host mounts&lt;a class="td-heading-self-link" href="#daemonset-host-mounts" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;DaemonSet/klustre-csi-node&lt;/code&gt; mounts the following host paths:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/var/lib/kubelet/plugins&lt;/code&gt; and &lt;code&gt;/var/lib/kubelet/pods&lt;/code&gt; – required for CSI socket registration and mount propagation.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/dev&lt;/code&gt; – ensures device files (if any) are accessible when mounting Lustre.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/sbin&lt;/code&gt;, &lt;code&gt;/usr/sbin&lt;/code&gt;, &lt;code&gt;/lib&lt;/code&gt;, &lt;code&gt;/lib64&lt;/code&gt; – expose the host’s Lustre client binaries and libraries to the container.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your kubelet uses custom directories, update &lt;code&gt;pluginDir&lt;/code&gt; and &lt;code&gt;registrationDir&lt;/code&gt; in the &lt;a href="https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/reference/settings-configmap/"&gt;settings ConfigMap&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="csi-socket-lifecycle"&gt;CSI socket lifecycle&lt;a class="td-heading-self-link" href="#csi-socket-lifecycle" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;The node plugin listens on &lt;code&gt;csiEndpoint&lt;/code&gt; (defaults to &lt;code&gt;/var/lib/kubelet/plugins/lustre.csi.klustrefs.io/csi.sock&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;The node-driver-registrar sidecar registers that socket with kubelet via &lt;code&gt;registrationDir&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Kubelet uses the UNIX socket to call &lt;code&gt;NodePublishVolume&lt;/code&gt; and &lt;code&gt;NodeUnpublishVolume&lt;/code&gt; when pods mount or unmount PVCs.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If the daemonset does not come up or kubelet cannot reach the socket, run:&lt;/p&gt;</description></item><item><title>Share a dataset between prep and training jobs</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/tutorials/shared-dataset-pipeline/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/tutorials/shared-dataset-pipeline/</guid><description>&lt;p&gt;This tutorial wires a simple data pipeline together:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a static Lustre &lt;code&gt;PersistentVolume&lt;/code&gt; and bind it to a &lt;code&gt;PersistentVolumeClaim&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Run a data-prep job that writes artifacts into the Lustre mount.&lt;/li&gt;
&lt;li&gt;Start a training deployment that reads the prepared data.&lt;/li&gt;
&lt;li&gt;Validate shared access and clean up.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="requirements"&gt;Requirements&lt;a class="td-heading-self-link" href="#requirements" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Klustre CSI Plugin installed and verified (see the &lt;a href="https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/"&gt;Introduction&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;An existing Lustre export, e.g., &lt;code&gt;10.0.0.1@tcp0:/lustre-fs&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kubectl&lt;/code&gt; access with cluster-admin privileges.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="1-define-the-storage-objects"&gt;1. Define the storage objects&lt;a class="td-heading-self-link" href="#1-define-the-storage-objects" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Save the following manifest as &lt;code&gt;lustre-pipeline.yaml&lt;/code&gt;. Update &lt;code&gt;volumeAttributes.source&lt;/code&gt; to match your Lustre target and tweak &lt;code&gt;mountOptions&lt;/code&gt; if required.&lt;/p&gt;</description></item><item><title>Storage class parameters</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/reference/storage-class/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/reference/storage-class/</guid><description>&lt;p&gt;The manifests bundle a &lt;code&gt;StorageClass&lt;/code&gt; named &lt;code&gt;klustre-csi-static&lt;/code&gt;. It targets pre-provisioned Lustre exports and enforces node placement.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;apiVersion&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;storage.k8s.io/v1&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;kind&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;StorageClass&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;metadata&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;klustre-csi-static&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;allowedTopologies&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;matchLabelExpressions&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;key&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;lustre.csi.klustrefs.io/lustre-client&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;values&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#4e9a06"&gt;&amp;#34;true&amp;#34;&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;mountOptions&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#000"&gt;flock&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#000"&gt;user_xattr&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;provisioner&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;lustre.csi.klustrefs.io&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;reclaimPolicy&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;Retain&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;volumeBindingMode&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;WaitForFirstConsumer&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="field-summary"&gt;Field summary&lt;a class="td-heading-self-link" href="#field-summary" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;provisioner&lt;/code&gt;&lt;/strong&gt; – Must stay &lt;code&gt;lustre.csi.klustrefs.io&lt;/code&gt; so PVCs bind to the Klustre driver.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;allowedTopologies&lt;/code&gt;&lt;/strong&gt; – Uses the &lt;code&gt;lustre.csi.klustrefs.io/lustre-client=true&lt;/code&gt; label to ensure only Lustre-capable nodes run workloads. Update the label key/value if you customize node labels.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;mountOptions&lt;/code&gt;&lt;/strong&gt; – Defaults to &lt;code&gt;flock&lt;/code&gt; and &lt;code&gt;user_xattr&lt;/code&gt;. Add or remove Lustre options as needed (e.g., &lt;code&gt;nolock&lt;/code&gt;, &lt;code&gt;noatime&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;reclaimPolicy&lt;/code&gt;&lt;/strong&gt; – &lt;code&gt;Retain&lt;/code&gt; keeps the PV around when a PVC is deleted, which is typical for statically provisioned Lustre shares.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;volumeBindingMode&lt;/code&gt;&lt;/strong&gt; – &lt;code&gt;WaitForFirstConsumer&lt;/code&gt; defers binding until a pod is scheduled, ensuring topology constraints match the consuming workload.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="customization-tips"&gt;Customization tips&lt;a class="td-heading-self-link" href="#customization-tips" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Create additional storage classes for different mount flag sets or topology labels. Ensure each class references the same provisioner.&lt;/li&gt;
&lt;li&gt;If you disable topology constraints, remove &lt;code&gt;allowedTopologies&lt;/code&gt;, but be aware that pods might schedule onto nodes without Lustre access.&lt;/li&gt;
&lt;li&gt;For multi-cluster environments, consider namespacing storage class names (e.g., &lt;code&gt;klustre-csi-static-prod&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Update the Klustre CSI image</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/operations/update-daemonset-image/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/operations/update-daemonset-image/</guid><description>&lt;p&gt;Use this guide to bump the Klustre CSI image version (for example, when adopting a new release).&lt;/p&gt;
&lt;h2 id="requirements"&gt;Requirements&lt;a class="td-heading-self-link" href="#requirements" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Cluster-admin access.&lt;/li&gt;
&lt;li&gt;The new image is pushed to a registry reachable by your cluster (GHCR or a mirror).&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;ghcr-secret&lt;/code&gt; or equivalent image pull secret already contains credentials for the registry.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="steps"&gt;Steps&lt;a class="td-heading-self-link" href="#steps" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Edit the settings ConfigMap&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The manifests and Helm chart both reference &lt;code&gt;ConfigMap/klustre-csi-settings&lt;/code&gt;. Update the &lt;code&gt;nodeImage&lt;/code&gt; key with the new tag:&lt;/p&gt;</description></item><item><title>Upgrade guide</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/operations/maintenance/upgrade-guide/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/operations/maintenance/upgrade-guide/</guid><description>&lt;h2 id="1-review-release-notes"&gt;1. Review release notes&lt;a class="td-heading-self-link" href="#1-review-release-notes" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Check the &lt;a href="https://github.com/klustrefs/klustre-csi-plugin/releases"&gt;klustre-csi-plugin GitHub releases&lt;/a&gt; for breaking changes, minimum Kubernetes versions, and image tags.&lt;/p&gt;
&lt;h2 id="2-update-the-image-reference"&gt;2. Update the image reference&lt;a class="td-heading-self-link" href="#2-update-the-image-reference" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Helm users: bump &lt;code&gt;image.tag&lt;/code&gt; and &lt;code&gt;nodePlugin.registrar.image.tag&lt;/code&gt; in your values file, then run &lt;code&gt;helm upgrade&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Manifest users: edit &lt;code&gt;manifests/configmap-klustre-csi-settings.yaml&lt;/code&gt; (&lt;code&gt;nodeImage&lt;/code&gt;, &lt;code&gt;registrarImage&lt;/code&gt;) and reapply the manifests.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See &lt;a href="https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/operations/update-daemonset-image/"&gt;Update the node daemonset image&lt;/a&gt; for detailed steps.&lt;/p&gt;
&lt;h2 id="3-roll-out-sequentially"&gt;3. Roll out sequentially&lt;a class="td-heading-self-link" href="#3-roll-out-sequentially" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl rollout restart daemonset/klustre-csi-node -n klustre-system
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl rollout status daemonset/klustre-csi-node -n klustre-system
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The daemonset restarts one node at a time, keeping existing mounts available.&lt;/p&gt;</description></item><item><title>Volume attributes and mount options</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/operations/nodes-and-volumes/volumes/attributes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/operations/nodes-and-volumes/volumes/attributes/</guid><description>&lt;h2 id="volumeattributes"&gt;&lt;code&gt;volumeAttributes&lt;/code&gt;&lt;a class="td-heading-self-link" href="#volumeattributes" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Key&lt;/th&gt;
 &lt;th&gt;Example&lt;/th&gt;
 &lt;th&gt;Purpose&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;source&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;10.0.0.1@tcp0:/lustre-fs&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Host(s) and filesystem path given to &lt;code&gt;mount.lustre&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;mountOptions&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;flock,user_xattr&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Comma-separated Lustre mount flags.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Additional keys (e.g., &lt;code&gt;subdir&lt;/code&gt;) can be added in the future; the driver simply passes the map to the Lustre helper script.&lt;/p&gt;
&lt;h2 id="storage-class-tuning"&gt;Storage class tuning&lt;a class="td-heading-self-link" href="#storage-class-tuning" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;See the &lt;a href="https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/reference/storage-class/"&gt;storage class reference&lt;/a&gt; for details on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;allowedTopologies&lt;/code&gt; – keep workloads on nodes with the Lustre label.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;reclaimPolicy&lt;/code&gt; – typically &lt;code&gt;Retain&lt;/code&gt; for static PVs.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mountOptions&lt;/code&gt; – defaults to &lt;code&gt;flock&lt;/code&gt; and &lt;code&gt;user_xattr&lt;/code&gt;, but you can add &lt;code&gt;noatime&lt;/code&gt;, &lt;code&gt;flock&lt;/code&gt;, &lt;code&gt;user_xattr&lt;/code&gt;, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Override mount options per volume by setting &lt;code&gt;volumeAttributes.mountOptions&lt;/code&gt;. This is useful when a subset of workloads needs different locking semantics.&lt;/p&gt;</description></item><item><title>Collect diagnostics</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/operations/collect-diagnostics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/operations/collect-diagnostics/</guid><description>&lt;p&gt;When reporting an issue, provide the following artifacts so maintainers can reproduce the problem.&lt;/p&gt;
&lt;h2 id="1-capture-pod-logs"&gt;1. Capture pod logs&lt;a class="td-heading-self-link" href="#1-capture-pod-logs" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl logs -n klustre-system daemonset/klustre-csi-node -c klustre-csi --tail&lt;span style="color:#ce5c00;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;200&lt;/span&gt; &amp;gt; klustre-csi.log
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl logs -n klustre-system daemonset/klustre-csi-node -c node-driver-registrar --tail&lt;span style="color:#ce5c00;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;200&lt;/span&gt; &amp;gt; node-driver-registrar.log
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If a specific pod is failing, target it directly:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl logs -n klustre-system &amp;lt;pod-name&amp;gt; -c klustre-csi --previous
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="2-describe-pods-and-daemonset"&gt;2. Describe pods and daemonset&lt;a class="td-heading-self-link" href="#2-describe-pods-and-daemonset" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl describe daemonset klustre-csi-node -n klustre-system &amp;gt; klustre-csi-daemonset.txt
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl describe pods -n klustre-system -l app.kubernetes.io/name&lt;span style="color:#ce5c00;font-weight:bold"&gt;=&lt;/span&gt;klustre-csi &amp;gt; klustre-csi-pods.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="3-export-relevant-resources"&gt;3. Export relevant resources&lt;a class="td-heading-self-link" href="#3-export-relevant-resources" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get csidriver lustre.csi.klustrefs.io -o yaml &amp;gt; csidriver.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get storageclass klustre-csi-static -o yaml &amp;gt; storageclass.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get configmap klustre-csi-settings -n klustre-system -o yaml &amp;gt; configmap.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Remove sensitive data (e.g., registry credentials) before sharing.&lt;/p&gt;</description></item><item><title>Helm values</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/reference/helm-values/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/reference/helm-values/</guid><description>&lt;p&gt;The chart is published as &lt;code&gt;oci://ghcr.io/klustrefs/charts/klustre-csi-plugin&lt;/code&gt;. Run &lt;code&gt;helm show values oci://ghcr.io/klustrefs/charts/klustre-csi-plugin --version 0.1.1&lt;/code&gt; for the full schema. This page summarizes frequently tuned fields.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Path&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;th&gt;Purpose&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;image.repository&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;ghcr.io/klustrefs/klustre-csi-plugin&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Node plugin image repository.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;image.tag&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;0.1.1&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Node plugin tag.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;imagePullSecrets&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Global image pull secrets applied to all pods.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;nodePlugin.pluginDir&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/var/lib/kubelet/plugins/lustre.csi.klustrefs.io&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Host path for CSI sockets.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;nodePlugin.kubeletRegistrationPath&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/var/lib/kubelet/plugins/lustre.csi.klustrefs.io/csi.sock&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Path passed to kubelet registrar.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;nodePlugin.logLevel&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;info&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Verbosity for the node binary.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;nodePlugin.resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;requests: 50m/50Mi&lt;/code&gt;, &lt;code&gt;limits: 200m/200Mi&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Container resource settings.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;nodePlugin.registrar.image.repository&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;registry.k8s.io/sig-storage/csi-node-driver-registrar&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Sidecar repository.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;nodePlugin.registrar.image.tag&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;v2.10.1&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Sidecar tag.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;nodePlugin.extraVolumes&lt;/code&gt; / &lt;code&gt;extraVolumeMounts&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Inject custom host paths (e.g., additional libraries).&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;storageClass.create&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Toggle creation of &lt;code&gt;klustre-csi-static&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;storageClass.allowedTopologies[0].matchLabelExpressions[0].key&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;lustre.csi.klustrefs.io/lustre-client&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Node label key for placement.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;storageClass.mountOptions&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[&amp;quot;flock&amp;quot;,&amp;quot;user_xattr&amp;quot;]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default Lustre mount flags.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;settingsConfigMap.create&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Controls whether the chart provisions &lt;code&gt;klustre-csi-settings&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;serviceAccount.create&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Create the node service account automatically.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;rbac.create&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Provision RBAC resources (ClusterRole/Binding).&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="example-override-file"&gt;Example override file&lt;a class="td-heading-self-link" href="#example-override-file" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;image&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;tag&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#0000cf;font-weight:bold"&gt;0.1.2&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;nodePlugin&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;logLevel&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;debug&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;extraVolumeMounts&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;host-etc&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;mountPath&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;/host/etc&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;extraVolumes&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#204a87;font-weight:bold"&gt;name&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;host-etc&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;hostPath&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;path&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#000"&gt;/etc&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;storageClass&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;&lt;span style="color:#204a87;font-weight:bold"&gt;mountOptions&lt;/span&gt;&lt;span style="color:#000;font-weight:bold"&gt;:&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#000"&gt;flock&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#000"&gt;user_xattr&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f8f8f8"&gt; &lt;/span&gt;- &lt;span style="color:#000"&gt;noatime&lt;/span&gt;&lt;span style="color:#f8f8f8"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Install with:&lt;/p&gt;</description></item><item><title>Install with Helm</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/advanced/install-with-helm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/advanced/install-with-helm/</guid><description>&lt;p&gt;The Helm chart is published under &lt;code&gt;oci://ghcr.io/klustrefs/charts/klustre-csi-plugin&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="1-authenticate-optional"&gt;1. Authenticate (optional)&lt;a class="td-heading-self-link" href="#1-authenticate-optional" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If you use a GitHub personal access token for GHCR:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;helm registry login ghcr.io -u &amp;lt;github-user&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Skip this step if anonymous pulls are permitted in your environment.&lt;/p&gt;
&lt;h2 id="2-install-or-upgrade"&gt;2. Install or upgrade&lt;a class="td-heading-self-link" href="#2-install-or-upgrade" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;helm upgrade --install klustre-csi &lt;span style="color:#4e9a06"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; oci://ghcr.io/klustrefs/charts/klustre-csi-plugin &lt;span style="color:#4e9a06"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --version 0.1.1 &lt;span style="color:#4e9a06"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --namespace klustre-system &lt;span style="color:#4e9a06"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --create-namespace &lt;span style="color:#4e9a06"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --set imagePullSecrets&lt;span style="color:#ce5c00;font-weight:bold"&gt;[&lt;/span&gt;0&lt;span style="color:#ce5c00;font-weight:bold"&gt;]&lt;/span&gt;.name&lt;span style="color:#ce5c00;font-weight:bold"&gt;=&lt;/span&gt;ghcr-secret
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Adjust the release name, namespace, and &lt;code&gt;imagePullSecrets&lt;/code&gt; as needed. You can omit the secret if GHCR is reachable without credentials.&lt;/p&gt;</description></item><item><title>Parameter reference</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/reference/parameter-reference/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/reference/parameter-reference/</guid><description>&lt;p&gt;The node daemonset containers accept a small set of flags and environment variables. Most values are sourced from &lt;code&gt;ConfigMap/klustre-csi-settings&lt;/code&gt;. Use this table as a quick lookup when you need to override behavior.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Component / flag&lt;/th&gt;
 &lt;th&gt;Env var&lt;/th&gt;
 &lt;th&gt;Purpose&lt;/th&gt;
 &lt;th&gt;Default source&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;klustre-csi --node-id&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;KUBE_NODE_NAME&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Unique identifier sent to the CSI sidecars and kubelet. Normally the Kubernetes node name.&lt;/td&gt;
 &lt;td&gt;Downward API (&lt;code&gt;spec.nodeName&lt;/code&gt;).&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;klustre-csi --endpoint&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;CSI_ENDPOINT&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Path to the CSI UNIX socket served by the node plugin. Must match kubelet registration path.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;csiEndpoint&lt;/code&gt; in the settings ConfigMap.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;klustre-csi --log-level&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;LOG_LEVEL&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Driver verbosity (&lt;code&gt;error&lt;/code&gt;, &lt;code&gt;warn&lt;/code&gt;, &lt;code&gt;info&lt;/code&gt;, &lt;code&gt;debug&lt;/code&gt;, &lt;code&gt;trace&lt;/code&gt;).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;logLevel&lt;/code&gt; in the settings ConfigMap.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;PATH&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;PATH&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Ensures &lt;code&gt;mount.lustre&lt;/code&gt;, &lt;code&gt;umount.lustre&lt;/code&gt;, and related tools are found inside the container.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/host/usr/sbin:/host/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;LD_LIBRARY_PATH&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;LD_LIBRARY_PATH&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Points to host library directories required by the Lustre client binaries.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/host/lib:/host/lib64:/host/usr/lib:/host/usr/lib64&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;node-driver-registrar --csi-address&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;n/a&lt;/td&gt;
 &lt;td&gt;Location of the CSI socket inside the pod.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/csi/csi.sock&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;node-driver-registrar --kubelet-registration-path&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;n/a (derived from ConfigMap)&lt;/td&gt;
 &lt;td&gt;Host path where kubelet looks for CSI drivers.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;driverRegistrationArg&lt;/code&gt; from the settings ConfigMap.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="how-to-override"&gt;How to override&lt;a class="td-heading-self-link" href="#how-to-override" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Edit the settings ConfigMap:&lt;/p&gt;</description></item><item><title>Install with kubectl/manifests</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/advanced/install-with-manifests/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/advanced/install-with-manifests/</guid><description>&lt;h2 id="1-install-directly-with-kustomize-no-clone"&gt;1. Install directly with Kustomize (no clone)&lt;a class="td-heading-self-link" href="#1-install-directly-with-kustomize-no-clone" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If you just want a default install, you don’t need to clone the repository. You can apply the published manifests directly from GitHub:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#204a87"&gt;export&lt;/span&gt; &lt;span style="color:#000"&gt;KLUSTREFS_VERSION&lt;/span&gt;&lt;span style="color:#ce5c00;font-weight:bold"&gt;=&lt;/span&gt;main
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl apply -k &lt;span style="color:#4e9a06"&gt;&amp;#34;github.com/klustrefs/klustre-csi-plugin//manifests?ref=&lt;/span&gt;&lt;span style="color:#000"&gt;$KLUSTREFS_VERSION&lt;/span&gt;&lt;span style="color:#4e9a06"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;manifests/&lt;/code&gt; directory includes the namespace, RBAC, &lt;code&gt;CSIDriver&lt;/code&gt;, daemonset, node service account, default &lt;code&gt;StorageClass&lt;/code&gt; (&lt;code&gt;klustre-csi-static&lt;/code&gt;), and settings config map.&lt;/p&gt;
&lt;h2 id="2-work-from-a-local-clone-recommended-for-customization"&gt;2. Work from a local clone (recommended for customization)&lt;a class="td-heading-self-link" href="#2-work-from-a-local-clone-recommended-for-customization" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If you plan to inspect or customize the manifests, clone the repo and work from a local checkout:&lt;/p&gt;</description></item><item><title>Contribution Guidelines</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/contribution-guidelines/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/contribution-guidelines/</guid><description>&lt;div class="pageinfo pageinfo-primary"&gt;
&lt;p&gt;These instructions target the &lt;a href="https://github.com/klustrefs/website"&gt;&lt;code&gt;klustrefs/website&lt;/code&gt;&lt;/a&gt; repository. Follow them whenever you update content, navigation, or styling.&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id="toolchain"&gt;Toolchain&lt;a class="td-heading-self-link" href="#toolchain" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Static site generator: &lt;a href="https://gohugo.io/"&gt;Hugo&lt;/a&gt; &lt;strong&gt;extended&lt;/strong&gt; edition, v0.146.0 or newer.&lt;/li&gt;
&lt;li&gt;Theme: &lt;a href="https://github.com/google/docsy"&gt;Docsy&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Package manager: npm (used for Docsy assets).&lt;/li&gt;
&lt;li&gt;Hosting: Netlify deploy previews triggered from pull requests.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="contribution-workflow"&gt;Contribution workflow&lt;a class="td-heading-self-link" href="#contribution-workflow" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Fork &lt;code&gt;https://github.com/klustrefs/website&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Create a feature branch (&lt;code&gt;docs/my-topic&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Make your edits (Markdown lives under &lt;code&gt;content/en/...&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;npm install&lt;/code&gt; once, then &lt;code&gt;npm run dev&lt;/code&gt; or &lt;code&gt;hugo server&lt;/code&gt; to preview locally.&lt;/li&gt;
&lt;li&gt;Commit with clear messages (&lt;code&gt;docs: add getting started guide&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Open a pull request against &lt;code&gt;main&lt;/code&gt;. If the work is in progress, prefix the title with &lt;code&gt;WIP&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Ensure the Netlify preview (&lt;code&gt;deploy/netlify — Deploy preview ready!&lt;/code&gt;) renders correctly before requesting review.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;All PRs need review by a maintainer before merging. We follow the standard GitHub review process.&lt;/p&gt;</description></item><item><title>Easy documentation with Docsy</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/blog/2018/10/06/easy-documentation-with-docsy/</link><pubDate>Sat, 06 Oct 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/blog/2018/10/06/easy-documentation-with-docsy/</guid><description>&lt;p&gt;&lt;strong&gt;This is a typical blog post that includes images.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The front matter specifies the date of the blog post, its title, a short description that will be displayed on the blog landing page, and its author.&lt;/p&gt;
&lt;h2 id="including-images"&gt;Including images&lt;a class="td-heading-self-link" href="#including-images" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Here&amp;rsquo;s an image (&lt;code&gt;featured-sunset-get.png&lt;/code&gt;) that includes a byline and a caption.&lt;/p&gt;
&lt;figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 610px"&gt;
&lt;img class="card-img-top" src="https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/blog/2018/10/06/easy-documentation-with-docsy/featured-sunset-get_hu_a92b149c4169b921.png" width="600" height="300"&gt;
&lt;figcaption class="card-body px-0 pt-2 pb-0"&gt;
&lt;p class="card-text"&gt;


Fetch and scale an image in the upcoming Hugo 0.43.
&lt;small class="text-body-secondary"&gt;&lt;br/&gt;Photo: Riona MacNamara / CC-BY-CA&lt;/small&gt;
&lt;/p&gt;</description></item><item><title>Second blog post</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/blog/2018/10/06/second-blog-post/</link><pubDate>Sat, 06 Oct 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/blog/2018/10/06/second-blog-post/</guid><description>&lt;p&gt;Text can be &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italic&lt;/em&gt;, or &lt;del&gt;strikethrough&lt;/del&gt;. &lt;a href="https://github.com"&gt;Links&lt;/a&gt; should be blue with no underlines (unless hovered over).&lt;/p&gt;
&lt;p&gt;There should be whitespace between paragraphs. There should be whitespace between paragraphs. There should be whitespace between paragraphs. There should be whitespace between paragraphs.&lt;/p&gt;
&lt;p&gt;There should be whitespace between paragraphs. There should be whitespace between paragraphs. There should be whitespace between paragraphs. There should be whitespace between paragraphs.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;There should be no margin above this first sentence.&lt;/p&gt;</description></item><item><title>Another Great Release</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/blog/2018/01/04/another-great-release/</link><pubDate>Thu, 04 Jan 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/blog/2018/01/04/another-great-release/</guid><description>&lt;p&gt;Text can be &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italic&lt;/em&gt;, or &lt;del&gt;strikethrough&lt;/del&gt;. &lt;a href="https://github.com"&gt;Links&lt;/a&gt; should be blue with no underlines (unless hovered over).&lt;/p&gt;
&lt;p&gt;There should be whitespace between paragraphs. There should be whitespace between paragraphs. There should be whitespace between paragraphs. There should be whitespace between paragraphs.&lt;/p&gt;
&lt;p&gt;There should be whitespace between paragraphs. There should be whitespace between paragraphs. There should be whitespace between paragraphs. There should be whitespace between paragraphs.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;There should be no margin above this first sentence.&lt;/p&gt;</description></item><item><title/><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/concepts/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/docs/concepts/</guid><description>&lt;h2 id="weight-2"&gt;title: Concepts
description: Understand the Klustre CSI architecture, components, and data flow.
weight: 2&lt;a class="td-heading-self-link" href="#weight-2" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;


&lt;div class="pageinfo pageinfo-primary"&gt;
&lt;p&gt;This page explains how the Klustre CSI Plugin is structured so you can reason about what happens when volumes are created, mounted, or removed.&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id="high-level-architecture"&gt;High-level architecture&lt;a class="td-heading-self-link" href="#high-level-architecture" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Klustre CSI Plugin implements the &lt;a href="https://kubernetes-csi.github.io/docs/"&gt;CSI node service&lt;/a&gt; for Lustre file systems. It focuses on node-side operations only:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Kubernetes API Kubelet on each node
-------------- --------------------
PersistentVolume -&amp;gt; NodePublishVolume -&amp;gt; mount.lustre -&amp;gt; Pod mount
PersistentVolumeClaim NodeUnpublishVolume -&amp;gt; umount.lustre
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;There is no controller deployment or dynamic provisioning. Instead, administrators define static &lt;code&gt;PersistentVolume&lt;/code&gt; objects that reference existing Lustre exports. The plugin mounts those exports inside pods when a &lt;code&gt;PersistentVolumeClaim&lt;/code&gt; is bound to a workload.&lt;/p&gt;</description></item><item><title>Search Results</title><link>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-14--fastidious-daifuku-4fed3d.netlify.app/search/</guid><description/></item></channel></rss>