Skip to main content

NVMe-oF Discovery Controller

An NVMe-oF discovery controller helps a host find NVMe subsystems on a fabric without hardcoding every target address. A host connects to the discovery endpoint, requests the Discovery Log Page, and then uses the returned entries (like target address and subsystem NQN) to connect to the right I/O subsystem for data traffic.

Key Facts NVMe-oF Discovery Controller
Purpose Control-plane endpoint that returns subsystem addresses — no I/O served
Host flow nvme discover → pull Discovery Log Page → nvme connect-all
Patterns Direct discovery (per subsystem) or Central discovery (aggregated)
K8s benefit New nodes attach without static config; CSI and OpenShift compatible

Teams that run Kubernetes Storage across many nodes use this flow to reduce config drift and speed up node bring-up. It also supports steadier operations for Software-defined Block Storage, especially when platforms add, remove, or move NVMe/TCP targets during upgrades.

What is NVMe-oF Discovery Controller: how hosts use discovery to auto-connect to NVMe subsystems in Kubernetes and OpenShift

What the Discovery Controller Returns

The discovery controller returns Discovery Log Pages that list subsystem interfaces and the details a host needs for the next step. The nvme-cli documentation describes this behavior and calls out that the log includes items such as the network address and subsystem NQN.

This controller does not serve application reads and writes. It acts as a control-plane endpoint that points hosts to I/O subsystems. The NVM Express discovery automation material describes discovery as a “single location” that can report known subsystem interfaces and reduce admin work as the environment grows.

🚀 Discovery-Driven NVMe/TCP for OpenShift and Kubernetes simplyblock integrates with OpenShift via CSI and supports discovery-driven attach flows — teams moving from VMware to OpenShift or building on-prem private cloud get consistent NVMe/TCP storage without per-node static config. 👉 See simplyblock for OpenShift HCI storage →

How Hosts Use Discovery in Real NVMe/TCP Fabrics

Most hosts follow a short, repeatable sequence: connect to discovery, pull the discovery log, and then connect to the listed subsystems. Red Hat’s NVMe/TCP guidance shows this flow using nvme discover and nvme connect-all, along with options for persistent connections.

At scale, discovery reduces the number of moving parts you must track on every node. Instead of pushing static connect strings into bootstrap scripts, you keep one discovery endpoint stable and update the discovery records as storage changes. That pattern tends to lower “works on some nodes” failures during fleet rollouts.

Why NVMe-oF Discovery Controller Matters for Kubernetes Storage Operations

Kubernetes clusters change often. Nodes rotate, pools expand, and platform teams roll updates during business hours. Discovery helps because each node can learn current target endpoints at attach time, which cuts the risk of stale configuration causing volume attach delays.

NVMe/TCP fits this story because it runs over standard TCP/IP networks. Red Hat documents NVMe/TCP configuration steps and the discovery/connect workflow, which aligns with routable networks that many enterprises already operate. For CSI-focused setups, simplyblock’s Block Storage CSI glossary page frames CSI as the Kubernetes mechanism for provisioning and attaching block volumes through StorageClass, PV, and PVC workflows.

Direct vs Central Discovery - Two Common Patterns

Teams usually implement one of two patterns:

Direct discovery ties discovery to a given subsystem and reports interfaces for that subsystem. Central discovery aggregates interfaces across subsystems and can also provide referrals to other discovery controllers. The NVM Express discovery automation paper outlines these ideas, including the “referral” concept. Dell’s NVMe/TCP overview also discusses direct discovery and how the discovery log provides an inventory of subsystems and endpoints.

Choose direct discovery when you want fewer components. Choose Central Discovery when you want a single place to manage what hosts should see across a larger fabric.

Day-2 Signals You Should Track

Discovery problems often manifest as slow attachments, retries, and uneven node behavior. Track the outcomes that leaders and operators both care about: time-to-attach after node boot, connect error rate, and p95/p99 “storage ready” time during rolling updates.

You can also tighten your runbooks around the same commands you use in production. Red Hat shows how /etc/nvme/discovery.conf It can drive repeatable discovery and how nvme connect-all It completes the connection step.

Ops checklist (single listicle):

  • Test discovery reachability (routing, ACLs, MTU, and the TCP port used in your design).
  • Confirm the node sees the expected subsystem NQNs in the Discovery Log Page before bulk connects.
  • Remove stale entries during decommissioning so nodes do not waste time on dead endpoints.
  • Separate “discovery ok” from “I/O connect ok” in dashboards so teams can isolate failures fast.
  • Re-test the attachment timing during upgrades because upgrades often change endpoints or policies.

Choosing an NVMe-oF Discovery Controller Approach

A quick way to think about the choice: discovery gives you a standards-based lookup step, while static connect strings trade long-term stability for short-term speed.

Here’s a simple decision table that aligns with Kubernetes Storage and Software-defined Block Storage operations:

OptionWhat it optimizesWhat you trade offTypical fit
NVMe-oF discovery controllerStandard lookup and automationYou must operate a discovery endpointMost production NVMe/TCP fleets
Static connect stringsFast initial setupHigh drift and manual updatesPOCs and short-lived tests
Vendor-specific discovery serviceAdded featuresPortability and lock-in riskSingle-vendor estates

simplyblock™ and Discovery-Ready NVMe/TCP for Kubernetes Storage

simplyblock™ delivers Software-defined Block Storage for Kubernetes Storage with NVMe/TCP as a primary transport, which helps platform teams standardize how nodes attach to remote NVMe targets at scale. Teams that operate multi-cluster or fast-changing environments often pair discovery-driven attach flows with consistent storage policies, so new nodes come online without brittle, host-by-host configuration.

simplyblock works natively with OpenShift via CSI, making it a strong choice for enterprises running OpenShift on-prem or for teams executing a VMware migration to Kubernetes. Discovery-driven NVMe/TCP attach removes one of the common friction points in those migrations: manually configuring storage endpoints on every new node.

Where Discovery Goes Next

Teams now push discovery into automation instead of runbooks. The NVM Express discovery automation paper frames discovery as a way to centralize interface reporting and reduce manual admin, which maps cleanly to infrastructure-as-code practices.

As NVMe/TCP expands across more routable networks, discovery increasingly becomes the default control-plane step for attaching storage at scale.

Teams often review these simplyblock glossary pages alongside NVMe-oF Discovery Controller when they set targets for Kubernetes Storage and Software-defined Block Storage.

Block Storage CSI Network Storage Performance NVMe Latency NVMe-oF Target on DPU

Questions and Answers

What is the purpose of an NVMe-oF Discovery Controller?

An NVMe-oF Discovery Controller simplifies host-side configuration by automatically providing connection details for available NVMe subsystems. It’s key to scalable NVMe over TCP deployments in Kubernetes and dynamic cloud environments.

How does the NVMe-oF Discovery Controller work in Kubernetes?

In Kubernetes, the Discovery Controller allows CSI drivers to auto-discover and connect to NVMe targets without manual setup. This accelerates dynamic persistent volume provisioning and improves storage scalability across nodes.

Why is a Discovery Controller important for NVMe over TCP?

In NVMe over TCP setups, the Discovery Controller automates the process of discovering available namespaces and paths. This enables faster failover, better resiliency, and simplifies host configuration at scale.

Can the NVMe-oF Discovery Controller support multi-tenant environments?

Yes, it helps isolate and advertise only the appropriate namespaces to authorized clients, improving security in multi-tenant storage environments while keeping discovery automated and efficient.

How does the Discovery Controller work in OpenShift or post-VMware Kubernetes environments?

In OpenShift on-prem clusters, the Discovery Controller eliminates manual per-node NVMe connect configuration. Teams migrating from VMware or vSAN to OpenShift can use simplyblock’s CSI-integrated NVMe/TCP with discovery-driven attach flows, so new nodes join and get storage without any static connect strings in bootstrap scripts. This pattern also works in HCI deployments where storage and compute share the same servers.