NeonSAN 是青云的一款企业级分布式块存储系统,NeonSAN CSI 是 NeonSAN 团队面向 Kubernetes 提供的存储插件,具有在 Kubernetes 平台上动态创建持久存储卷的能力。

本节介绍如何在生产环境中为 KubeSphere 企业版集群配置 NeonSAN CSI。

前提条件

  • 您已经成功部署 NeonSAN v2.2.0 及以上版本,且容器集群的每个节点都已安装 QBD 与 NeonSAN 连通。具体操作请咨询青云科技官方解决方案专家或交付服务专家。

  • 您已经安装 Kubernetes v1.16 及其以上版本。

  • 您已经在容器集群的 master 节点安装了 Helm。本节以 Helm 3 为例。

操作步骤

在线安装 NeonSAN CSI

在线安装适用于容器集群能够访问外网的情况。

  1. 执行以下命令添加 Helm 仓库,如 https://charts.kubesphere.io/test。

    $ helm repo add ks-test https://charts.kubesphere.io/test
    "ks-test" has been added to your repositories
  2. 执行以下命令查看仓库是否添加成功。

    $ helm repo list
    NAME        URL
    ks-test     https://charts.kubesphere.io/test
  3. 执行以下命令更新仓库的 Chart 列表。

    $ helm repo update
  4. 执行以下命令在仓库中查找 NeonSAN CSI 的安装包。

    $ helm search repo neonsan
    NAME                CHART VERSION   APP VERSION DESCRIPTION
    ks-test/csi-neonsan 1.2.2           1.2.0       A Helm chart for NeonSAN CSI Driver
  5. 查看 Master 节点上安装的 qbd 版本。

    $ qbd -v
    Package Version:       2.2.0-336092c-202202101432-ubuntu2004
    Loaded Module Version: 2.2.0-336092c-202209010306-testlangchaor01n01
    NeonSAN Static Library Version: 3.0.0-092498bf
    NeonSAN Protocol Version: 1
  6. 执行以下命令安装 NeonSAN CSI。根据 Master 节点操作系统上安装的 qbd 版本,设置参数 driver.repository,例如如果查询到的 qbd 版本为 2.2.0,则命令里的参数为 driver.repository="csiplugin/csi-neonsan-qbd2.2.0"

    $ helm install csi-neonsan ks-test/csi-neonsan --namespace kube-system --set driver.tag="v1.2.3" --set sc.rep_count=2 --set driver.repository="csiplugin/csi-neonsan-qbd2.2.0"
    NAME: csi-neonsan
    LAST DEPLOYED: Fri Nov 20 10:28:32 2020
    NAMESPACE: kube-system
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
  7. 执行以下命令检查 NeonSAN CSI 是否安装成功。

    $ helm list -n kube-system
    NAME                    NAMESPACE   REVISION    UPDATED                                 STATUS      CHART                           APP VERSION
    csi-neonsan             kube-system 1           2020-11-20 10:28:32.240990384 +0800 CST deployed    csi-neonsan-1.2.2               1.2.0
  8. 检查 pod 是否在 Running 状态。

    $ kubectl get pod -n kube-system | grep csi-neonsan
       kube-system                    csi-neonsan-controller-75dc5cbcff-6gk54                5/5     Running     0          38s
       kube-system                    csi-neonsan-node-8vd8l                                 2/2     Running     0          38s
       kube-system                    csi-neonsan-node-dxk2z                                 2/2     Running     0          38s
       kube-system                    csi-neonsan-node-mp2b2                                 2/2     Running     0          38s
  9. 检查是否所有 NeonSAN CSI 组件运行正常。

    • READY 取值等于 AVAILABLE 取值时,csi-neonsan-controller 正常。

      $ kubectl -n kube-system get deployments.apps  csi-neonsan-controller
      NAME                     READY   UP-TO-DATE   AVAILABLE   AGE
      csi-neonsan-controller   1/1     1            1           66m
    • DESIRED 取值等于 READYAVAILABLE 取值时,csi-neonsan-node 正常。

      $ kubectl -n kube-system get daemonsets.apps csi-neonsan-node
      NAME               DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
            csi-neonsan-node   3         3         3       3            3           <none>          66m
  10. 检查存储类是否安装。

    $ kubectl get storageclass
    NAME              PROVISIONER                            RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
    csi-neonsan       neonsan.csi.qingstor.com               Delete          Immediate              true                   2m56s
  11. 查看存储类所使用的存储池。此存储池必须在 NeonSAN 中存在, 否则无法使用此存储类创建存储卷。

    $ kubectl get storageclass csi-neonsan -o yaml | grep pool_name
    pool_name: kube
  12. 登陆 NeonSAN 服务器, 查看存储类所使用的存储池是否存在,如不存在,请使用 neonsan create_pool 命令创建存储池。

    $ neonsan list_pool -pool kube -detail
    Pool Count:  1
    +----------+------+---------------------------+
    |    ID    | NAME |       CREATED TIME        |
    +----------+------+---------------------------+
    | 33554432 | kube | 2020-08-07T14:53:52+08:00 |
    +----------+------+---------------------------+

离线安装 NeonSAN CSI

离线安装适用于容器集群无法访问外网的情况。

  1. 在本机上,下载 NeonSAN CSI 安装包,并安装包拷贝至集群 Master 节点。

    $ helm repo add ks-test https://charts.kubesphere.io/test
    "ks-test" has been added to your repositories
    $ helm pull ks-test/csi-neonsan
    $ ls -l csi-neonsan*.tgz
    -rw-r--r--. 1 root root 5196 Nov 20 13:13 csi-neonsan-1.2.2.tgz
  2. 执行以下命令查看 NeonSAN CSI 所需要的所有镜像文件。

    $ helm show values ks-test/csi-neonsan
    driver:
      repository: csiplugin/csi-neonsan
      tag: v1.2.0
      node:
        repository: csiplugin/csi-neonsan-ubuntu
        tag: v1.2.0
    provisioner:
      repository: csiplugin/csi-provisioner
      tag: v1.5.0
      volumeNamePrefix: pvc
    attacher:
      repository: csiplugin/csi-attacher
      tag: v2.1.1
    resizer:
      repository: csiplugin/csi-resizer
      tag: v0.4.0
    snapshotter:
      repository: csiplugin/csi-snapshotter
      tag: v2.0.1
    registrar:
      repository: csiplugin/csi-node-driver-registrar
      tag: v1.2.0
  3. 使用 Docker 将所有镜像下载到本地并打包,或上传至内网仓库(如 harbor)中。

    docker pull csiplugin/csi-neonsan:v1.2.0
    docker pull csiplugin/csi-neonsan-ubuntu:v1.2.0
    docker pull csiplugin/csi-provisioner:v1.5.0
    docker pull csiplugin/csi-attacher:v2.1.1
    docker pull csiplugin/csi-resizer:v0.4.0
    docker pull csiplugin/csi-snapshotter:v2.0.1
    docker pull csiplugin/csi-node-driver-registrar:v1.2.0
    docker save csiplugin/csi-neonsan:v1.2.0 \
      csiplugin/csi-neonsan-ubuntu:v1.2.0 \
      csiplugin/csi-provisioner:v1.5.0 \
      csiplugin/csi-attacher:v2.1.1 \
      csiplugin/csi-resizer:v0.4.0 \
      csiplugin/csi-snapshotter:v2.0.1 \
      csiplugin/csi-node-driver-registrar:v1.2.0 \
      -o neonsan-csi-images.tar
  4. 执行以下命令将镜像包上传至集群所有节点的目录,如 /tmp 目录下,解压并安装。

    $ scp neonsan-csi-images.tar user@node1:/tmp/
    scp neonsan-csi-images.tar user@node2:/tmp/
    ...
    $ tar -xvf /tmp/neonsan-csi-images.tar -C /
  5. 执行以下命令检查安装是否完成。如果您看到所有的 NeonSAN CSI 镜像已经在列表中,那么说明安装成功。

    $ docker images
  6. 参考在线安装中步骤 8 - 12 执行安装后检查。

    NeonSAN CSI 安装成功后,您可以在 KubeSphere 企业版控制台上的存储区域查看。