vSphere storage

Managing storage on vSphere

EKS Anywhere clusters running on vSphere can leverage the vSphere Container Storage Plug-in (also called the vSphere CSI Driver) for dynamic provisioning of persistent storage volumes on vSphere storage infrastructure. The CSI Driver integrates with the Cloud Native Storage (CNS) component in vCenter for the purpose of volume provisioning via vSAN, attaching and detaching volumes to/from VMs, mounting, formatting, and unmounting volumes on/from pods, snapshots, cloning, dynamic volume expansion, etc.

vSphere CSI Driver Deprecation

EKS Anywhere versions prior to v0.16.0 supported the installation and management of the vSphere CSI Driver in EKS-A clusters. The CSI management components in EKS-A included a Kubernetes CSI controller Deployment, a node-driver-registrar DaemonSet, a default Storage Class, and a number of related Secrets and RBAC entities.

In EKS-A version v0.16.0, the CSI driver feature was deprecated as part of cluster creation and has been completely removed in version v0.17.0. However, you may self-manage this deployment to make use of the storage options provided by vSphere in a Kubernetes-native way.

CSI Driver Cleanup for Upgrades

If you are using EKS-A version v0.16.0 and above to upgrade a cluster that has the vSphere CSI Driver installed in it, follow the below steps for proper cleanup of unmanaged vSphere CSI resources.

These are the resources you would need to delete from your cluster:

default namespace

  • vsphere-csi-controller-role (kind: ClusterRole)
    kubectl delete clusterrole vsphere-csi-controller-role
    
  • vsphere-csi-controller-binding (kind: ClusterRoleBinding)
    kubectl delete clusterrolebinding vsphere-csi-controller-binding
    
  • csi.vsphere.vmware.com (kind: CSIDriver)
    kubectl delete csidriver csi.vsphere.vmware.com
    

kube-system namespace

  • vsphere-csi-node (kind: DaemonSet)
    kubectl delete daemonset vsphere-csi-node -n kube-system
    
  • vsphere-csi-controller (kind: Deployment)
    kubectl delete deployment vsphere-csi-controller -n kube-system
    
  • vsphere-csi-controller (kind: ServiceAccount)
    kubectl delete serviceaccount vsphere-csi-controller -n kube-system
    
  • csi-vsphere-config (kind: Secret)
    kubectl delete secret csi-vsphere-config -n kube-system
    

eksa-system namespace

  • <cluster-name>-csi (kind: ClusterResourceSet)
    kubectl delete clusterresourceset <cluster-name>-csi -n eksa-system
    

NOTE: Delete the DaemonSet and Deployment first, as they rely on the other resources.

Once these resources have been removed, you can refer to the vSphere CSI Driver documentation for the installation and management procedure. Please refer to these compatibiltiy matrices to determine the correct version of the CSI Driver for the Kubernetes version and vSphere version you are running.