Install the driver
Install the driver from the kustomize base in the driver’s deploy/
directory. You need a cluster with standard CSI plumbing, kubectl
with cluster-admin rights, and the liken-system namespace.
Add the base to your own kustomization and pin <tag> to the
driver’s version, so the install is the same every time you apply it.
The base creates the CSIDriver object,
the StorageClass named per-node, the
ServiceAccount and its role, and the DaemonSet that runs the node
plugin beside the kubelet’s registrar on every node. There is no
controller Deployment, because the driver provisions nothing.
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: liken-system
resources:
- https://github.com/liken-sh/liken//per-node-csi-driver/deploy?ref=<tag>
images:
- name: ghcr.io/liken-sh/per-node-csi-driver
newTag: <tag>
The driver’s version is the release tag that last published it. The GitHub release for each tag lists every component and its version.
Check that every node lists per-node.liken.sh among its drivers. A
node appears there after the registrar tells its kubelet about the
plugin and the kubelet calls the plugin. A node missing from the answer
has no plugin pod running yet.
kubectl get csinode -o custom-columns=NODE:.metadata.name,DRIVERS:.spec.drivers[*].name
The plugin’s flags
The DaemonSet passes these flags to the node plugin. Change one
through a kustomize patch on the container’s args.
| Flag | Default | Meaning |
|---|---|---|
--endpoint |
unix:///csi/csi.sock |
The socket the kubelet and the registrar call. |
--node-id |
none | The node’s name, which the base takes from the pod’s spec.nodeName. Required. |
--store |
/var/lib/liken/pod-storage/per-node |
Where the node plugin keeps its copies and its holds. On liken this is the pod-storage partition. |
--metrics |
:9200 |
Where the node plugin serves its Prometheus metrics. An empty value serves none. |
--sweep-every |
10m |
How often the driver looks for a copy that no PersistentVolume names. The driver acts on a deletion at once. This pass tries a failed removal again, and removes a copy that a pod held when its PersistentVolume was deleted. |
--version |
none | Print the version and exit. |