Install

GKE Autopilot and EKS Fargate

Neither can run a CSI node plugin, and that is the product working as intended. A mixed cluster is still fine.

Neither can run the driver#

Two managed products rule this driver out by design, and no configuration works around either. Both are cases where you do not own a node, and a CSI node plugin is a thing that runs on a node.

ProductWhy
GKE AutopilotWritable hostPath is denied by admission (autogke-no-write-mode-hostpath). All three of the driver's host paths are writes, and Autopilot allows only a short list of read paths.
EKS FargateFargate runs no DaemonSets, so there is no node plugin and no kubelet directory to share with one.
virtual-kubelet, ACI, and other nodeless backendsThe same reason as Fargate. The "node" is an API, not a machine with a kubelet you can mount.

A mixed cluster is fine#

The restriction is per node, not per cluster. On a cluster with both Fargate and EC2 nodes, the DaemonSet lands on the EC2 nodes and archives volumes there normally; the pods that want an archived volume have to be scheduled there too, which is an ordinary nodeSelector on the workload rather than anything the driver needs to know about.

The DaemonSet tolerates everything on purpose, so it will also try Fargate nodes and sit Pending on them. If that noise matters, add a nodeSelector or an affinity that excludes them, the same way every other node-level agent does on such a cluster. It is only an all-Fargate or Autopilot cluster that has nowhere for the driver to run.

What to do instead#

If that is your cluster, this is the wrong tool for it. What the driver gives you is a directory that gets archived without the workload knowing, and on a nodeless platform there is no place to stand to do that. The nearest things that do work:

  • A sidecar that uploads. Share an emptyDir between your container and a small uploader, and keep the S3 layout conventions from the configuration reference so the archive looks the same. You give up the pod-termination sweep, which is the part that is genuinely hard to reproduce.
  • Write to S3 from the application. For a heap dump this is a flag on the JVM plus an upload step, and it is honest about what is happening.
  • A node pool. On GKE, a Standard node pool alongside Autopilot; on EKS, a managed node group alongside Fargate. Then the section above applies.

Other distributions#

The install page has the overview. The rest of the awkward ones:

  • vcluster. Install once on the host cluster. Volumes work from inside untouched, but every prefix placeholder resolves to the synced pod's host identity.
  • Talos Linux. The kustomize base already labels its namespace; Helm does not. No kubelet extra mounts are needed.
  • OpenShift. hostmount-anyuid rather than privileged. The driver mounts host directories and runs as root, but it is not a privileged container.
  • MicroK8s. Everything works once the three host paths point at /var/snap/microk8s/common/var/lib/kubelet.
  • k0s. Point the driver at the k0s path, or point k0s back at the standard one and never think about it again.