This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Installation Preparations

This chapter describes the preparations for the installation.

Prerequisites

  • The container management platform has been deployed and is running properly. The container platform compatibility requirements in Compatibility and Features are met.
  • (Mandatory for enterprise storage) Initial configuration for interconnecting with Huawei enterprise storage has been completed, including storage pool division and port configuration. The version of the storage product meets the requirements in Compatibility and Features .
  • (Mandatory for distributed storage) Initial configuration for interconnecting with Huawei distributed storage has been completed, including storage pool division and port configuration. The version of the storage product meets the requirements in Compatibility and Features .
  • The connectivity between Huawei storage and the container platform host has been configured. For example, the worker node running huawei-csi-controller communicates properly with the management IP address of the storage device to be connected, and the worker node running huawei-csi-node communicates properly with the service IP address of the storage device to be connected. In iSCSI scenarios, the ping command can be used to verify the connectivity.
  • Ensure that the language of the operating system is English.
  • Ensure that storage resource names, such as storage pool names and tenant names, are in English.

1 - Downloading the Huawei CSI Software Package

This section describes how to download the software package and the component structure of the software package.

  1. Open a browser and enter https://github.com/Huawei/eSDK_K8S_Plugin/releases in the address box.

  2. Download the software package of the 4.9.0 version based on the CPU architecture.

    • Software package naming rule: Plug-in name (eSDK_Storage_CSI) + Version number + CPU architecture
    • CSI supports the following CPU architectures: x86, Arm, and PPC64LE.
  3. Decompress the downloaded software package. The following table shows the component structure of the software package.

    Table 1 Component description

    Component

    Description

    image/huawei-csi-v4.9.0-arch.tar

    huawei-csi-driver image. arch indicates the CPU architecture.

    image/storage-backend-controller-v4.9.0-arch.tar

    Back-end management controller image. arch indicates the CPU architecture.

    image/storage-backend-sidecar-v4.9.0-arch.tar

    Back-end management sidecar image. arch indicates the CPU architecture.

    image/huawei-csi-extender-v4.9.0-arch.tar

    huawei-csi-extender image. arch indicates the CPU architecture.

    bin/

    Binary file used by an image provided by Huawei.

    bin/oceanctl

    Command line tool provided by Huawei, which can be used to manage storage backends.

    helm/

    Helm project used to deploy Huawei CSI.

    manual/

    Used to manually install and deploy Huawei CSI.

    examples/

    .yaml sample file used during CSI use.

    examples/backend

    .yaml sample file used to create a storage backend.

2 - Uploading a Huawei CSI Image

Huawei provides the huawei-csi image for users. For details about how to obtain the image file, see Downloading the Huawei CSI Software Package .

To use the CSI image on the container management platform, you need to import the CSI image to the cluster in advance:

Uploading an Image to the Image Repository

The installation of Huawei CSI depends on the following image files provided by Huawei. Import and upload the image files in sequence. For details about how to obtain the image files, see Downloading the Huawei CSI Software Package .

  • huawei-csi-v4.9.0-arch.tar
  • storage-backend-controller-v4.9.0-arch.tar
  • storage-backend-sidecar-v4.9.0-arch.tar
  • huawei-csi-extender-v4.9.0-arch.tar

Prerequisites

A Linux host with Docker installed is available, and the host can access the image repository.

Procedure

  1. Run the following command to import the CSI image to the current node. arch indicates the CPU architecture.

    docker load -i huawei-csi-v4.9.0-<arch>.tar 
    
  2. Run the following command to add the image repository address to the image tag. repo.huawei.com indicates the image repository address.

    docker tag huawei-csi:4.9.0 <repo.huawei.com>/huawei-csi:4.9.0
    
  3. Run the following command to upload the CSI image to the image repository. repo.huawei.com indicates the image repository address.

    docker push <repo.huawei.com>/huawei-csi:4.9.0
    

  • Run the corresponding CLI command to load and push the image based on the container runtime environment (for example, Docker or Containerd).
  • For details about how to import and upload images to the CCE or CCE Agile platform, see the user manual of the platform.

Uploading an Image to a Local Node

If the image has been uploaded to the image repository, skip this section.

Prerequisites

  • The node has the corresponding Huawei CSI image file. For details about how to obtain the image file, see Downloading the Huawei CSI Software Package .
  • Docker or another container engine has been installed on the node.

Procedure

  1. Use a remote access tool, such as PuTTY, to log in to the node where the image is to be imported through the management IP address.
  2. Copy the image directory in the Kubernetes CSI component package to any directory on the current node.
  3. Run the cd image command to go to the image working directory. For details about the tool path, see Table 1 .
  4. Run the following commands in sequence to import all Huawei CSI images in the image directory to the local node. In the commands, name indicates the name of a .tar image package.
    • Run the following command using the Docker container engine:

      docker load -i <name>.tar
      
    • Run the following command using the containerd container engine:

      ctr -n k8s.io image import <name>.tar
      
    • Run the following command using the Podman container engine:

      podman load -i <name>.tar
      


      If another container engine is installed on the node, use the image import command for the corresponding container engine.

3 - Checking User Configurations on Huawei Storage

After Huawei storage is connected to the container platform, Huawei CSI needs to manage storage resources on Huawei storage based on service requirements, such as creating and mapping volumes. In this case, Huawei CSI needs to use the users created on Huawei storage to communicate with Huawei storage. The following table lists the user information required for different storage devices.

Table 1 User requirements for connecting storage to CSI

Storage Type

User Type

Role

Level

Type

OceanStor V5

System user

Administrator

Administrator

Local user/LDAP user2

vStore user

vStore administrator

Administrator

Local user/LDAP user2

OceanStor

System user

Administrator/User-defined role1

N/A

Local user/LDAP user2

OceanStor Dorado

System user

Administrator/User-defined role1

N/A

Local user/LDAP user2

vStore user

vStore administrator

N/A

Local user/LDAP user2

OceanStor A series

System user

Administrator

N/A

Local user/LDAP user2

OceanStor Pacific series

System user

Administrator

N/A

Local user

OceanDisk

System user

Administrator

N/A

Local user

  • If a user-defined role is used, you need to configure permissions for the role. For details about how to configure the minimum permissions, see Configuring Custom Permissions .
  • If the LDAP authentication mode is used, you need to set the authenticationMode parameter when creating a backend. For details, see the parameter description in Configuring the Storage Backend .
  • Based on the principle of minimum and system security requirements, users under the super administrator role are not recommended.

4 - Checking Volume Snapshot-Dependent Components

This section describes how to check the volume snapshot-dependent components in the cluster.


If Huawei CSI is deployed in a version earlier than Kubernetes v1.20, perform the following steps:

  1. Run the following command to check the Kubernetes version. The following uses Kubernetes v1.16.0 as an example.

    kubectl get node
    

    The following is an example of the command output.

    NAME          STATUS       ROLES     AGE    VERSION
    test-master   Ready        master    311d   v1.16.0
    test-node     Ready        <none>    311d   v1.16.0
    
  2. Copy the helm directory in the Kubernetes CSI component package to any directory on the master node. For details about the Helm tool path, see Table 1 .

  3. Go to the helm/esdk/crds/snapshot-crds directory and run the following command to delete the snapshot CRD installation file.

    rm -rf ./huawei-csi-snapshot-crd-v1.yaml
    

5 - Checking the Host Multipathing Configuration

If you plan to use the FC/iSCSI/NVMe over RoCE/NVMe over FC protocol to access Huawei storage in a container environment, you are advised to use host multipathing software to enhance the link redundancy and performance of the host and storage. If you do not want to use the software, skip this section.

For details about the OSs and multipathing software that can be interconnected with Huawei CSI software, see the OS compatibility in Compatibility and Features .

  • If you want to use the FC/iSCSI protocol to connect to Huawei storage, you are advised to use native DM-Multipath provided by the OS.
  • If you want to use the NVMe over RoCE/NVMe over FC protocol to connect to Huawei storage, you are advised to use Huawei-developed UltraPath-NVMe.
  • If you want to use the SCSI protocol to connect to Huawei storage, disable DM-Multipath provided by the OS.

Prerequisites

Multipathing software has been correctly installed on a host.

  • If you use native DM-Multipath provided by the OS, contact your host or OS provider to obtain the documents and software packages required for the installation.
  • If you use Huawei-developed UltraPath or UltraPath-NVMe, contact Huawei engineers to obtain the UltraPath or UltraPath-NVMe documents and software packages. For details about the software package version, see the OS compatibility in Compatibility and Features .

Procedure

6 - Checking the Status of Host-Dependent Software

This section describes how to check whether the status of host-dependent software on worker nodes in a cluster is normal. In this example, the host OS is CentOS 7.9 x86_64.

  • Check the status of the iSCSI client.

    systemctl status iscsi iscsid 
    
  • Check the status of the NFS client.

    systemctl status rpcbind 
    
  • Check the status of DM-Multipath.

    systemctl status multipathd.socket multipathd
    
  • Check the status of UltraPath.

    systemctl status nxup
    
  • Check the status of UltraPath-NVMe.

    systemctl status upudev upService_plus
    
  • Check the status of the DataTurbo client. For details, see OceanStor DataTurbo 25.1.0 DTFS User Guide .

  • Check the status of the NFS+ client. For details, see NFS+ Client 1.x User Guide .

7 - Checking the Images on Which CSI Depends

The installation of Huawei CSI depends on the images listed in the following table. If all worker nodes in the cluster have been connected to the Internet and can pull images online, you can skip this section. If nodes in the cluster cannot connect to the Internet, download the corresponding image file based on the Kubernetes version and upload it to the image repository or import it to all worker nodes in the Kubernetes cluster.

The huawei-csi-controller service depends on the following sidecar images: livenessprobe, csi-provisioner, csi-attacher, csi-resizer, csi-snapshotter, snapshot-controller, storage-backend-controller, storage-backend-sidecar, huawei-csi-driver, and huawei-csi-extender. The huawei-csi-node service depends on the following sidecar images: livenessprobe, csi-node-driver-registrar, and huawei-csi-driver.

For details about the functions and details of each image, see the following table.

Table 1 Images on which Huawei CSI depends

Container Name

Container Image

K8s Version Requirements

Feature Description

livenessprobe

registry.k8s.io/sig-storage/livenessprobe:v2.12.0

v1.16+

This image is provided by the Kubernetes community, used to monitor the health status of CSI and report it to Kubernetes so that Kubernetes can automatically detect CSI program problems and restart the Pod to rectify the problems.

csi-resizer

registry.k8s.io/sig-storage/csi-resizer:v1.9.0

v1.16+

This image is provided by the Kubernetes community, used to call CSI to provide more storage space for a PVC when expanding the capacity of the PVC.

csi-node-driver-registrar

registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.9.0

v1.16+

This image is provided by the Kubernetes community, used to obtain CSI information and register a node with kubelet using the plug-in registration mechanism of kubelet so that Kubernetes can detect the connection between the node and Huawei storage.

csi-snapshotter

registry.k8s.io/sig-storage/csi-snapshotter:v6.3.0

v1.20+

This image is provided by the Kubernetes community, used to call CSI to create or delete a snapshot on the storage system when creating or deleting a VolumeSnapshot.

snapshot-controller

registry.k8s.io/sig-storage/snapshot-controller:v6.3.0

v1.20+

This image is provided by the Kubernetes community, used to listen to the VolumeSnapshot and VolumeSnapshotContent objects in the Kubernetes API and trigger csi-snapshotter to create a snapshot on the storage system when creating or deleting a VolumeSnapshot.

csi-provisioner

registry.k8s.io/sig-storage/csi-provisioner:v3.6.0

v1.20+

This image is provided by the Kubernetes community, used to create or delete PVCs.

  • Calls the huawei-csi-controller service to create a LUN or file system on the storage system as a PV when creating a PVC.
  • Calls the huawei-csi-controller service to delete the LUN or file system corresponding to the PV when deleting a PVC.

registry.k8s.io/sig-storage/csi-provisioner:v3.0.0

v1.17-v1.19

quay.io/k8scsi/csi-provisioner:v1.4.0

v1.16.x

csi-attacher

registry.k8s.io/sig-storage/csi-attacher:v4.4.0

v1.17+

Calls the huawei-csi-controller service to perform the "Publish/Unpublish Volume" operation when creating or deleting a Pod.

quay.io/k8scsi/csi-attacher:v1.2.1

v.1.16.x

storage-backend-controller

storage-backend-controller:4.9.0

v1.16+

This image is provided by Huawei CSI software package, used to manage storageBackendClaim resources.

storage-backend-sidecar

storage-backend-sidecar:4.9.0

v1.16+

This image is provided by Huawei CSI software package, used to manage storageBackendContent resources.

huawei-csi-driver

huawei-csi:4.9.0

v1.16+

This image is provided by Huawei CSI software package, used to provide all features supported by Huawei CSI.

huawei-csi-extender

huawei-csi-extender:4.9.0

v1.16+

This image is provided by Huawei CSI software package, used to provide extended features of Huawei CSI.


If the cluster is not connected to the Internet, manually download the container images and upload them to the cluster. For details, see Downloading a Container Image .