文档

升级ack-fluid组件

更新时间:

ack-fluid是云原生AI套件提供的Kubernetes环境下的分布式数据集编排和数据访问加速组件。本文介绍如何升级Fluid数据加速组件以及常见问题。

前提条件

  • 已创建ACK Pro版集群,且集群版本为1.18及以上。具体操作,请参见创建ACK Pro版集群

  • 已安装云原生AI套件并部署ack-fluid组件。具体操作,请参见安装云原生AI套件

    说明

    若安装的ack-fluid组件已是最新版本,则无需执行升级操作。

  • 已通过kubectl连接Kubernetes集群。具体操作,请参见通过kubectl工具连接集群

步骤一:升级ack-fluid组件

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择应用 > 云原生AI套件

  3. 云原生AI套件页面的组件列表中,单击ack-fluid组件操作列下的升级

    说明

    如果操作列下没有升级字样,说明当前的ack-fluid组件已是最新版本,无需升级。

  4. 升级组件对话框,单击确定

步骤二:验证ack-fluid组件功能

建议在升级ack-fluid组件后进行功能验证,以确保相关功能的兼容性。您可按照如下步骤进行兼容性验证。

  1. 根据业务需求选择合适的Runtime类型,确保Runtime类型的资源已成功创建,并且相关配置已完成。具体操作,请参见JindoFS加速OSS文件访问EFC加速NAS或CPFS文件访问

  1. 新建一个应用Pod,并将其挂载到升级前创建的Fluid Dataset自定义资源(CR),并确保该应用Pod能正常访问数据。

  2. 删除之前创建的应用Pod,并删除升级前创建的Fluid Dataset CR资源,并确保Fluid Dataset CR资源、Runtime CR资源以及缓存系统相关的资源能正常删除。

  3. 新建一个Fluid Dataset CR资源和Runtime CR资源,并确保两者能够绑定成功。可以通过查看资源状态或者使用kubectl命令来确认绑定操作是否成功。

  4. 新建一个应用Pod,并将其挂载到新建的Fluid Dataset CR资源,并确保该应用Pod能正常访问数据。

  5. 删除之前创建的应用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>

  • 本页导读 (1)
文档反馈