You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Sean Johnson d94292b56d
added fork comment
6 months ago
.github Add PR template 1 year ago
CHANGELOG Update 2.0 changelog 6 months ago
cmd/csi-node-driver-registrar Merge pull request #99 from chrishenzie/http-liveness-probe 6 months ago
pkg/util HTTP server for liveness probe, check registration socket exists 6 months ago
release-tools release-tools: update 6 months ago
vendor Bump go version to 1.15.0 6 months ago cloud build: use files from csi-release-tools 9 months ago
.gitignore built amd64 bin 6 months ago enable Prow testing 1 year ago
.travis.yml release tools 2 years ago Add 2 years ago
Dockerfile pulled from the old multiarch Dockerfile to build multiarch image 6 months ago
Dockerfile.Windows Make nanoserver tag configurable 6 months ago
LICENSE Initial commit 3 years ago
Makefile Makefile: remove experimental push-multiarch 9 months ago
OWNERS update owners 2 years ago added fork comment 6 months ago
cloudbuild.yaml cloud build: use files from csi-release-tools 9 months ago Add 3 years ago
go.mod Bump go version to 1.15.0 6 months ago
go.sum Bump kube version to 1.19.0 and CSI spec to 1.3.0 6 months ago

Fork Info

This is a fork of to simplify building multi-arch images.

Build Status

Node Driver Registrar

The node-driver-registrar is a sidecar container that registers the CSI driver with Kubelet using the kubelet plugin registration mechanism.

This is necessary because Kubelet is responsible for issuing CSI NodeGetInfo, NodeStageVolume, NodePublishVolume calls. The node-driver-registrar registers your CSI driver with Kubelet so that it knows which Unix domain socket to issue the CSI calls on.


This information reflects the head of this branch.

Compatible with CSI Version Container Image Min K8s Version
CSI Spec v1.3.0 1.13

For release-0.4 and below, please refer to the driver-registrar repository.


There are two UNIX domain sockets used by the node-driver-registrar:

  • Registration socket:

    • Registers the driver with kubelet.
    • Created by the node-driver-registrar.
    • Exposed on a Kubernetes node via hostpath in the Kubelet plugin registry. (typically /var/lib/kubelet/plugins_registry/<>-reg.sock). The hostpath volume must be mounted at /registration.
  • CSI driver socket:

    • Used by kubelet to interact with the CSI driver.
    • Created by the CSI driver.
    • Exposed on a Kubernetes node via hostpath somewhere other than the Kubelet plugin registry. (typically /var/lib/kubelet/plugins/<>/csi.sock).
    • This is the socket referenced by the --csi-address and --kubelet-registration-path arguments.
    • Note that before Kubernetes v1.17, if the csi socket is in the /var/lib/kubelet/plugins/ path, kubelet may log a lot of harmless errors regarding grpc GetInfo call not implemented (fix in kubernetes/kubernetes#84533). The /var/lib/kubelet/csi-plugins/ path is preferred in Kubernetes versions prior to v1.17.

Required arguments

  • --csi-address: This is the path to the CSI driver socket (defined above) inside the pod that the node-driver-registrar container will use to issue CSI operations (e.g. /csi/csi.sock).
  • --kubelet-registration-path: This is the path to the CSI driver socket on the host node that kubelet will use to issue CSI operations (e.g. `/var/lib/kubelet/plugins/<>/csi.sock). Note this is NOT the path to the registration socket.

Optional arguments

  • --health-port: This is the port of the health check server for the node-driver-registrar, which checks if the registration socket exists. A value <= 0 disables the server. Server is disabled by default.

Required permissions

The node-driver-registrar does not interact with the Kubernetes API, so no RBAC rules are needed.

It does, however, need to be able to mount hostPath volumes and have the file permissions to:

  • Access the CSI driver socket (typically in /var/lib/kubelet/plugins/<>/).
    • Used by the node-driver-registrar to fetch the driver name from the driver contain (via the CSI GetPluginInfo() call).
  • Access the registration socket (typically in /var/lib/kubelet/plugins_registry/).
    • Used by the node-driver-registrar to register the driver with kubelet.


Here is an example sidecar spec in the driver DaemonSet. <> should be replaced by the actual driver's name.

        - name: csi-driver-registrar
            - "--csi-address=/csi/csi.sock"
            - "--kubelet-registration-path=/var/lib/kubelet/plugins/<>/csi.sock"
            - "--health-port=9809"
            - name: plugin-dir
              mountPath: /csi
            - name: registration-dir
              mountPath: /registration
            - containerPort: 9809
              name: healthz
              path: /healthz
              port: healthz
            initialDelaySeconds: 5
            timeoutSeconds: 5
        - name: registration-dir
            path: /var/lib/kubelet/plugins_registry/
            type: Directory
        - name: plugin-dir
            path: /var/lib/kubelet/plugins/<>/
            type: DirectoryOrCreate

Community, discussion, contribution, and support

Learn how to engage with the Kubernetes community on the community page.

You can reach the maintainers of this project at:

Code of conduct

Participation in the Kubernetes community is governed by the Kubernetes Code of Conduct.