升级 DirectPV
kubectl directpv migrate将旧资源迁移到新安装环境。Kubernetes 已弃用该PodSecurityPolicy在 v1.21 版本中作为功能引入,然后在 v1.25 版本中完全移除。
使用Pod Security Admission作为替代方案,正如建议的那样Kubernetes 文档.
DirectPV 继续支持PodSecurityPolicy在 4.0.x 版本中。
DirectPV 4.1.x 及更高版本移除了对PodSecurityPolicy.
Version support
4.1.x
Releases in the4.1.xseries 是开源 DirectPV CSI 驱动的最新版本。
大多数用户应安装或升级到最新版本4.1.xseries.
然而,如果您需要继续使用已弃用的PodSecurityPolicy功能,请务必仔细遵循升级指南。
4.0.x
The4.0.x该系列已于2025年1月1日进入维护模式。
维护可能包括有限的错误修复或安全解决方案。 用户应尽早计划迁移到 4.1.x 系列。
早期版本
4.0.0 之前的版本不再受支持。
升级 DirectPV CSI 驱动程序从 4.x.x 到最新版本
离线升级
请按照以下步骤执行离线升级:
-
卸载 DirectPV CSI 驱动程序。
这不会移除任何现有资源。
kubectl directpv uninstall -
升级 DirectPV 插件。
kubectl krew upgrade directpv如果您使用二进制文件而不是
krew,下载适用于您操作系统和架构的最新二进制文件。
原地升级
请按照以下步骤执行就地升级:
-
使用以下命令升级 DirectPV
krewplugin:kubectl krew upgrade directpv如果您使用二进制文件而不是
krew,下载适用于您操作系统和架构的最新二进制文件。 -
使用适当的节点选择器、容忍度和
KUBELET_DIR_PATH您的环境所需的环境变量。curl -sfL https://github.com/minio/directpv/raw/master/docs/tools/install.sh | sh -s - apply
保留 PodSecurityPolicy 支持
如果您升级到 4.1.x 并希望保留对PodSecurityPolicy完成以下步骤。
开始升级前
对现有内容进行备份psp和clusterrolebindingYAML 规范。
kubectl get psp directpv-min-io -o yaml > psp.yaml
kubectl get clusterrolebinding psp-directpv-min-io -o yaml > psp-crb.yaml
应用备份 YAML
完成其他升级步骤后,应用psp和clusterrolebindingYAML 备份。
kubectl apply -f psp.yaml
kubectl apply -f psp-crb.yaml
升级旧版 DirectCSI 驱动程序
对于旧版本,请先升级到 v3.2.2 再升级至最新版本。
在最新版本的DirectPV中,CSI边车镜像已完成更新。
-
如果您是从 3.1.0 或更高版本升级,请卸载现有的 DirectCSI 驱动程序。
卸载 DirectPV 不会移除任何资源。
kubectl directcsi uninstall如果您是从旧版本升级,将在稍后的步骤中执行此操作。
-
升级或安装最新版本的 DirectPV 插件。
kubectl krew upgrade directpv如果您尚未从 Direct CSI 升级到 DirectPV,请改用以下内容:
kubectl krew install directpv -
(可选)如果您正在使用自定义存储类进行调度和如果你正在从版本 < v4.0.0 升级,你必须修改存储类参数。
更改
direct.csi.min.io/access-tier: <your_access_tier_value>todirectpv.min.io/access-tier: <your_access_tier_value>在相应的存储类参数部分。 -
安装更新版本的 Direct-CSI。
kubectl directpv install有关安装过程的更多详情或自定义安装方法,请参阅安装文档.
-
如果您是从早于 3.1.0 的版本升级,请卸载 DirectCSI 驱动程序。
kubectl directcsi uninstall -
检查 Pod 是否正在运行。
kubectl get pods -n direct-csi-min-io -w -
验证您能否访问 DirectPV 驱动器。
kubectl directpv drives ls
清理升级后文件
较旧的 CRDs (directcsidrives和directcsivolumes) 已弃用,在版本 > v4.0.0 中不再使用。
升级后可以移除这些内容。
使用以下 Bash 脚本来升级到最新版本后移除旧对象。
#!/usr/bin/env bash
#
# This file is part of MinIO DirectPV
# Copyright (c) 2023 MinIO, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# This script removes direct-csi drives and volumes after taking backup YAMLs
# to directcsidrives.yaml and directcsivolumes.yaml
#
set -e -C -o pipefail
function init() {
if [[ $# -ne 0 ]]; then
echo "usage: remove-directcsi.sh"
echo
echo "This script removes direct-csi drives and volumes after taking backup YAMLs"
echo "to directcsidrives.yaml and directcsivolumes.yaml"
exit 255
fi
if ! which kubectl >/dev/null 2>&1; then
echo "kubectl not found; please install"
exit 255
fi
}
# usage: unset_object_finalizers <resource>
function unset_object_finalizers() {
kubectl get "${1}" -o custom-columns=NAME:.metadata.name --no-headers | while read -r resource_name; do
kubectl patch "${1}" "${resource_name}" -p '{"metadata":{"finalizers":null}}' --type=merge
done
}
function main() {
kubectl get directcsivolumes -o yaml > directcsivolumes.yaml
kubectl get directcsidrives -o yaml > directcsidrives.yaml
# unset the finalizers
unset_object_finalizers "directcsidrives"
unset_object_finalizers "directcsivolumes"
# delete the resources
kubectl delete directcsivolumes --all
kubectl delete directcsidrives --all
}
init "$@"
main "$@"
从版本 < v3.2.x 升级
如果您正在使用 DirectCSI 版本 < 3.2.2,请先升级到 v3.2.2,然后再升级到最新版本。
-
卸载现有安装。
卸载 DirectPV 不会移除任何资源。
kubectl direct-csi uninstall -
确认删除 CSI pods。
kubectl get pods -n direct-csi-min-ioDirectPV v4.0.0 及更高版本不使用
direct-cs-min-io在创建新驱动器或卷时使用命名空间。 但是,最新版本的 DirectPV 可以继续使用该命名空间中已存在的资源。 -
从下载 Direct-CSI v3.2.2https://github.com/minio/directpv/releases/tag/v3.2.2.
-
加载以下图片:
quay.io/minio/csi-provisioner:v2.2.0-go1.18 quay.io/minio/csi-node-driver-registrar:v2.2.0-go1.18 quay.io/minio/livenessprobe:v2.2.0-go1.18如果您的 Kubernetes 版本低于 v1.20,也请推送
quay.io/minio/csi-provisioner:v2.2.0-go1.18 -
安装更新版本的 Direct-CSI。
kubectl direct-csi install -
检查 Pod 是否正在运行。
kubectl get pods -n direct-csi-min-io -w -
验证您能否访问 DirectPV 驱动器。
kubectl direct-csi drives ls升级 DirectPV 插件
要升级插件,请使用
krew使用以下命令。kubectl krew upgrade directpv要从二进制文件升级,请按照以下步骤操作:二进制安装说明.