安装 DirectPV

本指南在 Kubernetes 基础设施上安装采用 AGPL3.0 许可证的 MinIO DirectPV 容器存储接口(CSI)。

用户与有效订阅应该使用AIStor Volume Manager安装说明。

前提条件

名称 Version
Kubernetes v1.19+
kubectl v1.19+
krew v0.4.3+

生产就绪检查清单

在开始生产部署之前,请确保完成以下步骤(如适用):

插件安装

Install the DirectPV plugin in your local environment to manage the DirectPV CSI Driver in your Kubernetes cluster. You can install using在本地环境中安装 DirectPV 插件来管理 Kubernetes 集群中的 DirectPV CSI 驱动程序。 您可以使用以下方式安装:krew或作为二进制文件。

安装 DirectPV 插件krew

最新的 DirectPV 插件可在Krewrepository.

  1. 更新Krew下载最新版本的插件。

    kubectl krew update
    
  2. 将 DirectPV 安装到您的 krew 安装目录(默认:$HOME/.krew).

    kubectl krew install directpv
    
  3. 运行kubectl directpv --version要验证 DirectPV 是否正确安装。

    如果您收到错误Error: unknown command "directpv" for "kubectl"你可能需要添加$HOME/.krew/bin对你$PATH.

安装 DirectPV 插件作为二进制文件

插件二进制文件名以kubectl-directpv并且可在https://github.com/minio/directpv/releases/latest下载适用于您操作系统和架构的二进制文件。 您可能需要将文件移动到系统路径可访问的位置。

请参考您操作系统的文档,了解如何使二进制文件可执行以及如何运行该文件。 本文档不提供所有可用操作系统的详细说明。

以下是一个示例:GNU/Linux on amd64架构:

# Download DirectPV plugin.
$ release=$(curl -sfL "https://api.github.com/repos/minio/directpv/releases/latest" | awk '/tag_name/ { print substr($2, 3, length($2)-4) }')
$ curl -fLo kubectl-directpv https://github.com/minio/directpv/releases/download/v${release}/kubectl-directpv_${release}_linux_amd64
# Make the binary executable.
$ chmod a+x kubectl-directpv
$ mv kubectl-directpv /usr/local/bin/kubectl-directpv
当使用二进制文件时,请通过以下命令调用kubectl-directpv而不是kubectl directpv.

驱动程序安装

将 DirectPV 驱动程序安装到您的 Kubernetes 部署中。

对于生产级环境的安装,请确保满足以下所有条件:生产就绪检查清单.

标准安装

标准安装使用默认选项,并在所有节点上安装 DirectPV。

前提条件

  • Kubernetes >= v1.18 on GNU/Linux on amd64.

  • 如果您使用私有镜像仓库,必须将以下镜像推送到您的仓库中。

    您可以使用一个辅助脚本要做到这一点。

    • quay.io/minio/csi-node-driver-registrar:v2.8.0
    • quay.io/minio/csi-provisioner:v3.5.0(for Kubernetes >= v1.20)
    • quay.io/minio/csi-provisioner:v2.2.0-go1.18(适用于 kubernetes < v1.20)
    • quay.io/minio/livenessprobe:v2.10.0
    • quay.io/minio/csi-resizer:v1.8.0
    • quay.io/minio/directpv:latest
  • If seccomp已启用,加载DirectPV seccomp profile在要安装 DirectPV 并使用的节点上--seccomp-profile标志kubectl directpv install命令。

    更多信息,请参阅 Kubernetes 文档中的seccomp.

  • If apparmor已启用,加载DirectPV apparmor 配置文件在要安装 DirectPV 并使用的节点上--apparmor-profile标志kubectl directpv install命令。

    更多信息,请参阅Kubernetes 关于 AppArmor 的文档.

  • 已启用ExpandCSIVolumes 功能门for容量扩展功能。

  • Review the驱动程序规范文档.

  • 对于 Red Hat OpenShift 用户,请参阅OpenShift 特定文档在安装 DirectPV 之前的配置。

过程

安装过程会创建一个名为directpv-min-io您可以使用此存储类来配置 DirectPV 卷作为storageClassName in PodSpec.VolumeClaimTemplates.

对于使用示例directpv-min-io, 看到GitHub 上的 MinIO 示例.

参考CLI 指南有关以下命令的更多帮助信息。

安装驱动程序

安装directpv-min-ioKubernetes 集群中所有节点上的 CSI 驱动程序。

kubectl directpv install
  • DirectPV 组件安装在命名空间中directpv.
  • 使用备用 kubeconfigkubectl directpv --kubeconfig /path/to/kubeconfig.
  • DirectPV 驱动程序需要以下基于角色的访问控制(RBAC):规格说明文档.
  • DirectPV 驱动程序运行在privileged模式,需要挂载、卸载和格式化驱动器。
  • DirectPV 使用的守护进程集需要以下开放端口:
    • 10443用于指标
    • 端口30443对于就绪处理程序
要在选定的节点上安装 DirectPV,使用容忍度,或采用非标准kubelet目录,请参阅自定义安装下方部分。

列出已发现的驱动器

列出 Kubernetes 集群中所有可用的驱动器。 DirectPV 会生成一个init配置文件 (默认:drives.yaml) 您可以使用这些驱动器进行初始化。

kubectl directpv discover

根据需要修改文件,移除 DirectPV 不应控制的驱动器。

初始化驱动器

初始化选定的驱动器drives.yaml

kubectl directpv init drives.yaml
潜在数据丢失
初始化将擦除驱动器上的所有现有数据。 请确认传递给 init 命令的文件中仅指定了目标驱动器。

验证安装

要验证安装,请使用以下命令列出已格式化并添加到 DirectPV 的驱动器信息。

kubectl directpv info

使用脚本安装

以下命令下载并运行一个install.sh在所有节点上执行标准安装 DirectPV 的脚本文件。

curl -sfL https://github.com/minio/directpv/raw/master/docs/tools/install.sh | sh - apply

Air-gapped Installation (Private Registry)

将以下镜像推送到您的私有仓库:

  • quay.io/minio/csi-node-driver-registrar:v2.6.3
  • quay.io/minio/csi-provisioner:v3.4.0
  • quay.io/minio/livenessprobe:v2.9.0
  • quay.io/minio/csi-resizer:v1.7.0
  • quay.io/minio/directpv:latest

注释:

  • 如果您使用的 Kubernetes 版本早于 v1.20,您需要推送quay.io/minio/csi-provisioner:v2.2.0-go1.18

以下 shell 脚本执行上述步骤:

/bin/bash -e

# set this to private registry URL (the URL should NOT include http or https)
if [ -z $PRIVATE_REGISTRY_URL ]; then "PRIVATE_REGISTRY_URL env var should be set"; fi

images[0]=quay.io/minio/csi-node-driver-registrar:v2.6.3
images[1]=quay.io/minio/csi-provisioner:v3.4.0
images[2]=quay.io/minio/livenessprobe:v2.9.0
images[3]=quay.io/minio/csi-resizer:v1.7.0
images[4]=quay.io/minio/directpv:$(curl -s "https://api.github.com/repos/minio/directpv/releases/latest" | grep tag_name | sed -E 's/.*"([^"]+)".*/\1/')

function privatize(){ echo $1 | sed "s#quay.io#${PRIVATE_REGISTRY_URL}#g"; }
function pull_tag_push(){ docker pull $1 &&  docker tag $1 $2 && docker push $2; }
for image in ${images[*]}; do pull_tag_push $image $(privatize $image); done

在 OpenShift 上安装

DirectPV 在部署到 OpenShift 时需要不同的配置选项。 使用以下命令通过适当的设置在 OpenShift 上安装 DirectPV:

$ kubectl directpv install --openshift

自定义安装

安装到选定节点

要在选定的节点上仅安装 DirectPV,请使用--node-selector指定所需节点的标志:

kubectl directpv info
# Install DirectPV on nodes having label 'group-name' key and 'bigdata' value
$ kubectl directpv install --node-selector group-name=bigdata

安装到受污染节点

To install DirectPV on受污染节点, 使用--tolerationflag.

以下示例通过容忍键为 'key1'、值为 'PVs' 且效果为 'NoSchedule' 的污点,在受污染节点上安装 DirectPV

kubectl directpv install --tolerations key1=PVs:NoSchedule

以下示例通过在存在 'key2' 键(无论该键被赋予任何值)且具有 'NoExecute' 效应的情况下容忍其存在,在受污染节点上安装 DirectPV。

$ kubectl directpv install --tolerations key2:NoExecute

在非标准环境上安装kubelet目录

要在非标准位置安装kubelet目录,设置KUBELET_DIR_PATH在开始安装之前设置环境变量。

export KUBELET_DIR_PATH=/path/to/my/kubelet/dir
kubectl directpv install

通过生成 DirectPV 清单进行安装

要使用生成的清单文件进行安装,请使用以下命令。

curl -sfL https://github.com/minio/directpv/raw/master/docs/tools/install.sh | sh -s - apply