ack-fluid是云原生AI套件提供的Kubernetes环境下的分布式数据集编排和数据访问加速组件。本文介绍如何升级Fluid数据加速组件以及常见问题。
前提条件
已创建ACK Pro版集群,且集群版本为1.18及以上。具体操作,请参见创建ACK Pro版集群。
已安装云原生AI套件并部署ack-fluid组件。具体操作,请参见安装云原生AI套件。
说明若安装的ack-fluid组件已是最新版本,则无需执行升级操作。
已通过kubectl连接Kubernetes集群。具体操作,请参见通过kubectl工具连接集群。
步骤一:升级ack-fluid组件
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在云原生AI套件页面的组件列表中,单击ack-fluid组件操作列下的升级。
说明如果操作列下没有升级字样,说明当前的ack-fluid组件已是最新版本,无需升级。
在升级组件对话框,单击确定。
步骤二:验证ack-fluid组件功能
建议在升级ack-fluid组件后进行功能验证,以确保相关功能的兼容性。您可按照如下步骤进行兼容性验证。
根据业务需求选择合适的Runtime类型,确保Runtime类型的资源已成功创建,并且相关配置已完成。具体操作,请参见JindoFS加速OSS文件访问、EFC加速NAS或CPFS文件访问。
新建一个应用Pod,并将其挂载到升级前创建的Fluid Dataset自定义资源(CR),并确保该应用Pod能正常访问数据。
删除之前创建的应用Pod,并删除升级前创建的Fluid Dataset CR资源,并确保Fluid Dataset CR资源、Runtime CR资源以及缓存系统相关的资源能正常删除。
新建一个Fluid Dataset CR资源和Runtime CR资源,并确保两者能够绑定成功。可以通过查看资源状态或者使用kubectl命令来确认绑定操作是否成功。
新建一个应用Pod,并将其挂载到新建的Fluid Dataset CR资源,并确保该应用Pod能正常访问数据。
删除之前创建的应用Pod,并删除升级后新建的Fluid Dataset CR资源,并确保Fluid Dataset CR资源、Runtime CR资源以及缓存系统相关的资源能正常删除。
常见问题
从低版本升级至v1.0.2及以上版本注意事项
ack-fluid v1.0.2版本对Fluid控制面组件的Helm后端存储驱动进行了修改,以增强产品安全能力。该改动不会影响当前集群业务运行,但在删除Fluid Dataset资源后可能造成集群内与Helm相关的部分Secret资源残留。如果您需要对集群内残留的Secret资源进行清理,可以通过以下Bash脚本鉴别集群内残留的Secret资源。
解决方案
执行以下脚本,鉴别集群内残留的Secret资源。
#!/bin/bash
tmpfile=$(mktemp)
kubectl get secret -A | awk '{if ($3 == "helm.sh/release.v1") print $1,$2}' > $tmpfile
fluid_chart_names=( "jindofs" "goosefs" "alluxio" "juicefs" "efc" "thin" "fluid-dataloader" "fluid-datamigrate" )
cat $tmpfile | while read -r x y
do
chart_name=$(kubectl get secret -n $x $y -ojson | jq .data.release -r | base64 -d | base64 -d | gunzip - | jq .chart.metadata.name -r)
if [[ " ${fluid_chart_names[*]} " =~ " ${chart_name} " ]]; then
# e.g. sh.helm.release.v1.demo-dataset.v1
dataset_name=${y#sh.helm.release.v1.}
dataset_name=${dataset_name%.v1}
kubectl get dataset -n $x $dataset_name &> /dev/null
if [[ ! $? -eq 0 ]]; then
echo "secret \"$x/$y\" is possibly not cleaned up. Use \"kubectl delete secret -n $x $y\" to clean it"
fi
fi
done
如果存在残留的Secret资源,会输出类似如下结果:
secret "default/sh.helm.release.v1.demo-dataset.v1" is possibly not cleaned up. Use "kubectl delete secret -n default sh.helm.release.v1.demo-dataset.v1" to clean it
secret "default/sh.helm.release.v1.thin-demo.v1" is possibly not cleaned up. Use "kubectl delete secret -n default sh.helm.release.v1.thin-demo.v1" to clean it
可以根据Secret名称获取到对应的Dataset名字信息,例如default/sh.helm.release.v1.demo-dataset.v1
对应为default
命名空间下名称为demo-dataset
的Dataset资源,通过以下命令确认上述Dataset是否存在:
kubectl get dataset -n <namespace> <dataset_name>
如果显示类似如下结果,则说明Dataset已经被删除:
Error from server (NotFound): datasets.data.fluid.io "<dataset_name>" not found
执行以下命令,删除残留的Secret资源:
kubectl delete secret <secret_name> -n <namespace>