CSI Overview

Container storage provides storage for container workloads. It supports multiple storage classes. A pod can use any amount of storage.

In CCE, container storage is backed both by Kubernetes-native objects, such as emptyDir, hostPath, secret, and ConfigMap, and by cloud storage services. These cloud storage services can be accessed via Container Storage Interface (CSI).

CCE allows you to use CDSI in your clusters by providing the everest add-on. This add-on is installed by default when the cluster version is Kubernetes 1.15 or later.

This topic will walk you through how to use CSI in CCE for container storage, and differences between CCE add-ons for CSI and FlexVolume implementation.

Cloud Services for Container Storage

CCE allows you to mount local and cloud storage volumes listed in Volume Types to your pods. Their features are described below.

Figure 1 Volume types supported by CCE
Table 1 Detailed description of cloud storage services

Dimension

EVS

SFS

OBS

SFS Turbo

Definition

EVS offers scalable block storage for cloud servers. With high reliability, high performance, and rich specifications, EVS disks can be used for distributed file systems, dev/test environments, data warehouses, and high-performance computing (HPC) applications.

Expandable to petabytes, SFS provides fully hosted shared file storage, highly available and stable to handle data- and bandwidth-intensive applications in HPC, media processing, file sharing, content management, and web services.

OBS is a stable, secure, and easy-to-use object storage service that lets you inexpensively store data of any format and size. You can use it in enterprise backup/archiving, video on demand (VoD), video surveillance, and many other scenarios.

Expandable to 320 TB, SFS Turbo provides a fully hosted shared file storage, highly available and stable to support small files and applications requiring low latency and high IOPS. You can use SFS Turbo in high-traffic websites, log storage, compression/decompression, DevOps, enterprise OA, and containerized applications.

Data storage logic

Stores binary data and cannot directly store files. To store files, you need to format the file system first.

Stores files and sorts and displays data in the hierarchy of files and folders.

Stores objects. Files directly stored automatically generate the system metadata, which can also be customized by users.

Stores files and sorts and displays data in the hierarchy of files and folders.

Access mode

Accessible only after being mounted to ECSs or BMSs and initialized.

Mounted to ECSs or BMSs using network protocols. A network address must be specified or mapped to a local directory for access.

Accessible through the Internet or Direct Connect (DC). You need to specify the bucket address and use transmission protocols such as HTTP and HTTPS.

Supports the Network File System (NFS) protocol (NFSv3 only). You can seamlessly integrate existing applications and tools with SFS Turbo.

Static provisioning

Supported

Supported

Supported

Supported

Dynamic provisioning

Supported

Supported

Supported

Not supported

Features

Non-shared storage. Each volume can be mounted to only one node.

Shared storage featuring high performance and throughput

Shared, user-mode file system

Shared storage featuring high performance and bandwidth

Usage

HPC, enterprise core cluster applications, enterprise application systems, and dev/test

NOTE:

HPC apps here require high-speed and high-IOPS storage, such as industrial design and energy exploration.

For more information, see Overview.

HPC, media processing, content management, web services, big data, and analysis applications

NOTE:

HPC apps here require high bandwidth and shared file storage, such as gene sequencing and image rendering.

For more information, see Overview.

Big data analysis, static website hosting, online video on demand (VoD), gene sequencing, intelligent video surveillance, backup and archiving, and enterprise cloud boxes (web disks)

For more information, see Overview.

High-traffic websites, log storage, DevOps, and enterprise OA

For more information, see Overview.

Capacity

TB

PB

EB

TB

Latency

1–2 ms

3-10 ms

10 ms

1–2 ms

IOPS/TPS

33,000 for a single disk

10,000 for a single file system

Tens of millions

100,000

Bandwidth

MB/s

GB/s

TB/s

GB/s

Notice on Using Add-ons

  • To use the CSI plug-in (the everest add-on in CCE), your cluster must be using Kubernetes 1.15 or later. This add-on is installed by default when you create a cluster of v1.15 or later. The FlexVolume plug-in (the storage-driver add-on in CCE) is installed by default when you create a cluster of v1.13 or earlier.
  • If your cluster is upgraded from v1.13 to v1.15, storage-driver is replaced by everest (v1.1.6 or later) for container storage. The takeover does not affect the original storage functions.
  • In version 1.2.0 of the everest add-on, key authentication is optimized when OBS is used. After the everest add-on is upgraded from a version earlier than 1.2.0, you need to restart all workloads that use OBS in the cluster. Otherwise, workloads may not be able to use OBS.

Installing and Upgrading the CSI Plug-in

For details, see everest.

Differences Between CSI and FlexVolume Plug-ins

Table 2 CSI and FlexVolume

Kubernetes Solution

CCE Add-on

Feature

Usage

CSI

everest

CSI was developed as a standard for exposing arbitrary block and file storage systems to containerized workloads. Using CSI, third-party storage providers can deploy add-ons exposing new storage systems in Kubernetes without having to touch the core Kubernetes code. In CCE, the everest add-on is installed by default in clusters of Kubernetes v1.15 and later to connect to HUAWEI CLOUD storage services (EVS, OBS, SFS, and SFS Turbo).

The everest add-on consists of two parts:

  • everest-csi-controller for storage volume creation, deletion, capacity expansion, and cloud disk snapshots
  • everest-csi-driver for mounting, unmounting, and formatting storage volumes on nodes

For details, see everest.

The everest add-on is installed by default in clusters of v1.15 and later. CCE will mirror the Kubernetes community by providing continuous support for updated CSI capabilities.

FlexVolume

storage-driver

FlexVolume is an out-of-tree plugin interface that has existed in Kubernetes since version 1.2 (before CSI). CCE provided FlexVolume volumes through the storage-driver add-on installed in clusters of Kubernetes v1.13 and earlier versions. This add-on connects clusters to HUAWEI CLOUD storage services (EVS, OBS, SFS, and SFS Turbo).

For details, see storage-driver.

For clusters of v1.13 or earlier that have been created, the installed FlexVolume plug-in (the storage-driver add-on in CCE) can still be used. CCE stops providing update support for this add-on, and you are advised to upgrade these clusters.

  • A cluster can use only one type of storage plug-ins.
  • The FlexVolume plug-in cannot be replaced by the CSI plug-in in clusters of v1.13 or earlier. You can only upgrade these clusters. For details, see Cluster Upgrade Between Major Versions.

Checking Storage Add-ons

  1. Log in to the CCE console.
  2. In the navigation tree on the left, click Add-ons.
  3. Click the Add-on Instance tab.
  4. Select a cluster in the upper right corner. The default storage add-on installed during cluster creation is displayed.

    Figure 2 Checking which storage add-on was installed