安装 DirectPV
先决条件
生产就绪清单
在开始生产部署之前,请确保已完成以下步骤,如果适用
-
如果使用私有注册表,请在私有注册表中提供 断开连接的安装映像 中列出的所有映像。
-
如果在系统上使用 seccomp,请在所有节点上加载 DirectPV seccomp 策略。
有关 seccomp 的更详细说明,请参阅 Kubernetes 文档
-
如果在系统上使用 AppArmor,请在所有节点上加载 DirectPV apparmor 配置文件。
有关 Kubernetes 环境中 AppArmor 的更详细说明,请参阅 Kubernetes 文档。
插件安装
在本地环境中安装 DirectPV 插件,以在 Kubernetes 集群中管理 DirectPV CSI 驱动程序。您可以使用 krew
或作为二进制文件进行安装。
krew
安装 DirectPV 插件
使用 最新的 DirectPV 插件在 Krew
存储库中可用。
-
更新
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 获取。下载适用于您的操作系统和架构的二进制文件。您可能需要将该文件移至系统路径可访问的位置。
请参考您操作系统的文档,了解如何使二进制文件可执行以及如何运行该文件。本文档不提供所有可用操作系统的详细说明。
以下是以 amd64
架构上的 GNU/Linux
为例
# 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 (适用于 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
-
如果启用了
seccomp
,请在要安装 DirectPV 的节点上加载 DirectPV seccomp 配置文件,并将--seccomp-profile
标志用于kubectl directpv install
命令。有关更多信息,请参考 Kubernetes 关于 seccomp 的文档。
-
如果启用了
apparmor
,请在要安装 DirectPV 的节点上加载 DirectPV apparmor 配置文件,并将--apparmor-profile
标志用于kubectl directpv install
命令。有关更多信息,请参考 Kubernetes 关于 apparmor 的文档。
-
查看 驱动程序规范文档。
-
对于 Red Hat OpenShift 用户,请参考 OpenShift 特定文档,了解在安装 DirectPV 之前进行的配置。
过程
安装过程会创建一个名为 directpv-min-io
的新存储类。您可以使用此存储类作为 PodSpec.VolumeClaimTemplates
中的 storageClassName
来配置 DirectPV 卷。
有关使用 directpv-min-io
的示例,请参阅 GitHub 上的 MinIO 示例。
请参考 CLI 指南,了解有关以下命令的更多帮助程序。
安装驱动程序
在 Kubernetes 集群中的所有节点上安装 directpv-min-io
CSI 驱动程序。
kubectl directpv install
- DirectPV 组件安装在
directpv
命名空间中。 - 使用
kubectl directpv --kubeconfig /path/to/kubeconfig
指定备用 kubeconfig。 - DirectPV 驱动程序需要 规范文档 中列出的基于角色的访问控制 (RBAC)。
- DirectPV 驱动程序在
privileged
模式下运行,需要挂载、卸载和格式化驱动器。 - DirectPV 使用的守护进程集需要以下开放端口
10443
用于指标- 端口
30443
用于就绪处理程序
kubelet
目录在选定节点上安装 DirectPV,请参阅下面的 自定义安装 部分。列出发现的驱动器
列出 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
断开网络安装(私有注册表)
将以下映像推送到您的私有注册表
- 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
在污染节点上安装
要 在污染节点 上安装 DirectPV,请使用 --toleration
标志。
以下示例通过容忍值为 ‘PVs’ 且具有 ‘NoSchedule’ 效应的 ‘key1’ 键,在污染节点上安装 DirectPV
kubectl directpv install --tolerations key1=PVs:NoSchedule
以下示例通过容忍值为 ‘NoExecute’ 效应的 ‘key2’ 键的存在(无论分配给该键的任何值),在污染节点上安装 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