The CSI plug-in consists of csi-plugin and csi-provisioner. You can use them to create, mount, and uninstall volumes.
Prerequisites
A Container Service for Kubernetes (ACK) cluster that runs a Kubernetes version later than 1.14 is created, and the CSI plug-in is specified as the volume plug-in of the cluster. For more information, see Create an ACK managed cluster.
A kubectl client is connected to the cluster. For more information, see Obtain the kubeconfig file of a cluster and use kubectl to connect to the cluster.
Introduction
The CSI plug-in consists of csi-plugin and csi-provisioner, which are deployed in ACK clusters by default. For more information about CSI, see alibaba-cloud-csi-driver. For more information about the basic information and release notes of CSI, see csi-plugin and csi-provisioner.
csi-plugin: used to mount and unmount volumes. By default, ACK allows you to mount the following types of volumes by using csi-plugin: disk volumes, File Storage NAS (NAS) volumes, and Object Storage Service (OSS) volumes.
csi-provisioner: used to automatically create volumes. Disk volumes and NAS volumes are supported.
The following figure shows the deployment architectures of the CSI plug-in in an ACK managed cluster and an ACK dedicated cluster.
ACK managed cluster | ACK dedicated cluster |
In an ACK managed cluster, the csi-provisioner and csi-plugin components run on worker nodes. | In an ACK dedicated cluster, csi-provisioner is deployed on master nodes. csi-plugin is automatically deployed on the master and worker nodes as a DaemonSet. |
Verify that the CSI plug-in is successfully installed
If you specify the CSI plug-in as the volume plug-in when you create an ACK managed cluster or an ACK dedicated cluster, the system installs csi-plugin and csi-provisioner by default.
Do not uninstall csi-plugin and csi-provisioner that are installed by the system. Otherwise, you fail to mount Alibaba Cloud disks, OSS buckets, or NAS file systems.
You can perform the following steps to verify that the csi-plugin and csi-provisioner components are successfully deployed.
Run the following command to check whether csi-plugin is installed in the cluster:
kubectl get pod -n kube-system | grep csi-plugin
Run the following command to check whether csi-provisioner is installed in the cluster:
kubectl get pod -n kube-system | grep csi-provisioner
Update csi-plugin and csi-provisioner
You can check and update csi-plugin and csi-provisioner in the ACK console.
Log on to the ACK console. In the left-side navigation pane, click Clusters.
On the Clusters page, find the cluster that you want to manage and click its name. In the left-side navigation pane, choose .
Click the Storage tab, find csi-plugin and csi-provisioner, and check whether the components can be updated. Update the components if Upgrade is displayed.
FAQ about update failures
If you migrate the cluster from FlexVolume to CSI by using the csi-compatible-controller component and the migration is still in progress, the csi-plugin and csi-provisioner components cannot be updated automatically. We recommended that you complete the migration before updating the components or manually update the CSI components during the migration process. For more information, see Update components.
If the components fail to be updated in the console or the components fail to pass the precheck, you can perform the following operations to troubleshoot:
csi-plugin fails to pass the precheck
If volumes that use disks, NAS file systems, or OSS buckets are not provisioned in the cluster, you must manually update csi-plugin.
If volumes that use disks, NAS file systems, or OSS buckets are provisioned in the cluster, and the cluster is created in a staging environment, you must manually update csi-plugin.
If volumes that use disks, NAS file systems, or OSS buckets are provisioned in the cluster, and business-critical data is stored in the volumes, submit a ticket to request technical support.
csi-plugin passes the precheck but fails to be updated
Check whether the nodes in the cluster are in the Ready state. If csi-plugin is installed on a node that is in the NotReady state, you must fix the state of the node.
If the issue persists, submit a ticket to apply for a manual update.
csi-plugin is displayed in the console but csi-provisioner is not displayed
csi-provisioner is deployed as a StatefulSet. In this case, submit a ticket to apply for a manual update.
csi-provisioner fails to pass the precheck
If no volumes that use disks or NAS file systems are dynamically provisioned by using StorageClasses in the cluster, you must manually update csi-provisioner.
If volumes that use disks or NAS file systems are dynamically provisioned by using StorageClasses in the cluster, and the cluster is created in a staging environment, you must manually update CSI-Provisioner.
If volumes that use disks or NAS file systems are dynamically provisioned by using StorageClasses in the cluster and business-critical data is stored in the volumes, submit a ticket to apply for a manual update.
csi-provisioner passes the precheck but fails to be updated
submit a ticket to apply for a manual update.
References
For more information about the basic information and release notes of the CSI components, see csi-plugin and csi-provisioner.