安装 DirectPV
本指南在 Kubernetes 基础设施上安装采用 AGPL3.0 许可证的 MinIO DirectPV 容器存储接口(CSI)。
用户与有效订阅应该使用AIStor Volume Manager安装说明。
前提条件
生产就绪检查清单
在开始生产部署之前,请确保完成以下步骤(如适用):
-
如果使用私有注册表,请确保所有列出的镜像在air-gapped installation images可在私有注册表中使用。
-
如果系统使用 seccomp,请加载 DirectPVseccomp策略在所有节点上。
有关 seccomp 的更详细说明,请参阅Kubernetes 文档
-
如果系统使用 AppArmor,请加载 DirectPVapparmor 配置文件在所有节点上。
有关 Kubernetes 环境中 AppArmor 的更详细说明,请参阅Kubernetes 文档.
插件安装
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.
-
更新
Krew下载最新版本的插件。kubectl krew update -
将 DirectPV 安装到您的 krew 安装目录(默认:
$HOME/.krew).kubectl krew install directpv -
运行
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 的文档.
-
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. - 使用备用 kubeconfig
kubectl directpv --kubeconfig /path/to/kubeconfig. - DirectPV 驱动程序需要以下基于角色的访问控制(RBAC):规格说明文档.
- DirectPV 驱动程序运行在
privileged模式,需要挂载、卸载和格式化驱动器。 - DirectPV 使用的守护进程集需要以下开放端口:
10443用于指标- 端口
30443对于就绪处理程序
kubelet目录,请参阅自定义安装下方部分。列出已发现的驱动器
列出 Kubernetes 集群中所有可用的驱动器。
DirectPV 会生成一个init配置文件 (默认:drives.yaml) 您可以使用这些驱动器进行初始化。
kubectl directpv discover
根据需要修改文件,移除 DirectPV 不应控制的驱动器。
初始化驱动器
初始化选定的驱动器drives.yaml
kubectl directpv init drives.yaml
验证安装
要验证安装,请使用以下命令列出已格式化并添加到 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