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。

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

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

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

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

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

    1. $ 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"
    2. NAME: csi-neonsan
    3. LAST DEPLOYED: Fri Nov 20 10:28:32 2020
    4. NAMESPACE: kube-system
    5. STATUS: deployed
    6. REVISION: 1
    7. TEST SUITE: None
  7. 执行以下命令检查 NeonSAN CSI 是否安装成功。

    1. $ helm list -n kube-system
    2. NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
    3. 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 状态。

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

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

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

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

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

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

    1. $ neonsan list_pool -pool kube -detail
    2. Pool Count: 1
    3. +----------+------+---------------------------+
    4. | ID | NAME | CREATED TIME |
    5. +----------+------+---------------------------+
    6. | 33554432 | kube | 2020-08-07T14:53:52+08:00 |
    7. +----------+------+---------------------------+

离线安装 NeonSAN CSI

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

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

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

    1. $ helm show values ks-test/csi-neonsan
    2. driver:
    3. repository: csiplugin/csi-neonsan
    4. tag: v1.2.0
    5. node:
    6. repository: csiplugin/csi-neonsan-ubuntu
    7. tag: v1.2.0
    8. provisioner:
    9. repository: csiplugin/csi-provisioner
    10. tag: v1.5.0
    11. volumeNamePrefix: pvc
    12. attacher:
    13. repository: csiplugin/csi-attacher
    14. tag: v2.1.1
    15. resizer:
    16. repository: csiplugin/csi-resizer
    17. tag: v0.4.0
    18. snapshotter:
    19. repository: csiplugin/csi-snapshotter
    20. tag: v2.0.1
    21. registrar:
    22. repository: csiplugin/csi-node-driver-registrar
    23. tag: v1.2.0
  3. 使用 Docker 将所有镜像下载到本地并打包,或上传至内网仓库(如 harbor)中。

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

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

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

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