升级

当您要在现有集群的 OperatorHub 中发布新的 Alauda Build of Rook-Ceph Operator 版本时,请使用此操作步骤。

请选择与平台版本匹配的路径:

平台版本Web Consolekubectl
4.4.0不可用。Rook-Ceph 详情页没有升级按钮。必需。批准 InstallPlan,然后修补 CephCluster.spec.cephVersion.image
4.4.1 及更高版本Rook-Ceph 集群详情页上的升级到按钮不可用时的备用方式。批准软件包即表示接受绑定的 Ceph 镜像。

批准针对 rook-ceph/rook-operator 的待处理 InstallPlan 后,会安装 Operator CSV。在 4.4.1 及更高版本中,该批准操作同时也是对软件包绑定的 Ceph 镜像的确认。在 4.4.0 中,控制台不会写入该镜像;您必须使用 kubectl 对其进行修补。

WARNING

上传新软件包之前,请确认 Rook Operator Subscription 使用 Manual 批准。如果 installPlanApprovalAutomatic,新版本出现在目录中后,OLM 会立即开始升级 Operator。

开始之前

  • 确定 Rook Operator 的命名空间。Distributed Storage 向导创建的默认命名空间为 rook-ceph
  • 下载与集群架构匹配的新 Alauda Build of Rook-Ceph Operator 软件包。
  • 对于内部模式,确认 CephClusterReady,且 status.ceph.healthHEALTH_OK
  • 对于外部模式spec.external.enable: true),仅升级 Operator。不要修补本地 Ceph 镜像。
  • 不要将生成的 CSV 清单编辑作为持久化自定义项。后续 OLM 调和可能会覆盖这些编辑。请参阅架构

1. 确认 Manual 批准

kubectl -n rook-ceph get subscription rook-operator \
  -o jsonpath='{.spec.installPlanApproval}{"\n"}'

输出必须为 Manual。如果不是,请在上传软件包之前进行设置:

kubectl -n rook-ceph patch subscription rook-operator --type merge \
  -p '{"spec":{"installPlanApproval":"Manual"}}'

在 4.4.1 及更高版本中,您还可以在 Marketplace > OperatorHub > Alauda Build of Rook-Ceph 中将 Upgrade Strategy 设置为 Manual

2. 上传新的 Operator 软件包

使用 violet 上传新的 Alauda Build of Rook-Ceph 软件包,然后确认 OperatorHub 中显示了目标版本。

按照上架软件包以及Operator中的 OperatorHub 操作步骤进行操作。

上传成功后,OperatorHub 会将新版本显示为可用。在 installPlanApprovalManual 之前,请勿批准该版本。

3. 批准 Operator 软件包

OLM 会为新的 CSV 创建一个 InstallPlan。仅批准由 Subscription.status.installPlanRef 引用的计划。

Web Console
kubectl

详情页按钮在 4.4.1 及更高版本中可用。在 4.4.0 中,请跳过此选项卡并使用 kubectl。

  1. 登录并切换到 Administrator 视图。
  2. 打开 Rook-Ceph 集群详情页。
  3. 启用按钮后,该按钮会显示 升级到,后跟目标 CSV 版本。该版本来自待处理 InstallPlan 的目标 CSV(spec.version,或 CSV 名称中的版本部分,例如 rook-ceph.v4.4.14.4.1)。
  4. 单击该按钮。控制台会将该 InstallPlan 的 spec.approved 设置为 true。您可以离开该页面。

在以下情况下,按钮会保持禁用状态:

  • 当前用户无法更新 rook-ceph 中的 InstallPlan 对象。
  • 集群处于内部模式,且 status.ceph.health 不是 HEALTH_OK
  • 没有由 Subscription.status.installPlanRef 引用的待处理未批准 InstallPlan。如果 OLM 尚未创建该 InstallPlan,仅目录中存在更新的 CSV 并不足够。

在已批准的计划安装期间,按钮可能会显示升级正在进行。待处理计划消失后,按钮会显示没有可用升级。

该按钮不会写入 spec.cephVersion.image,不会创建 StorageCluster,也不会解析 PackageManifest 镜像。

在 4.4.0 上应用 Ceph 镜像

在批准 Operator 软件包后,4.4.0 不会跟随 Ceph 镜像。对于内部模式,请从新的 CSV 中选择 relatedImage 名称ceph 的 Ceph daemon 镜像。不要从未筛选的 relatedImages 列表中复制镜像。

CSV="$(kubectl -n rook-ceph get subscription rook-operator -o jsonpath='{.status.installedCSV}')"
CEPH_IMAGES="$(kubectl -n rook-ceph get csv "$CSV" \
  -o jsonpath='{range .spec.relatedImages[?(@.name=="ceph")]}{.image}{"\n"}{end}')"
COUNT="$(printf '%s\n' "$CEPH_IMAGES" | awk 'NF{c++} END{print c+0}')"
if [ "$COUNT" -ne 1 ]; then
  echo "expected exactly one relatedImage named ceph, found ${COUNT}:" >&2
  printf '%s\n' "$CEPH_IMAGES" >&2
  exit 1
fi
CEPH_IMAGE="$(printf '%s\n' "$CEPH_IMAGES" | awk 'NF{print; exit}')"
echo "$CEPH_IMAGE"

如果命令退出时出现错误,请停止操作。在 relatedImages 恰好包含一个 nameceph 的条目之前,不要修补 CephCluster

列出 CephCluster 对象,并将 spec.cephVersion.image 修补为该唯一镜像。替换 <cephcluster-name>

kubectl -n rook-ceph get cephcluster

kubectl -n rook-ceph patch cephcluster <cephcluster-name> --type merge \
  -p "{\"spec\":{\"cephVersion\":{\"image\":\"${CEPH_IMAGE}\"}}}"

4.4.1 及更高版本中,不要运行此修补操作。批准软件包即表示接受绑定的 Ceph 镜像。

验证 Operator 和数据平面

确认 Operator CSV:

kubectl -n rook-ceph get csv
kubectl -n rook-ceph get subscription rook-operator \
  -o jsonpath='{.status.state}{"\t"}{.status.installedCSV}{"\n"}'

对于内部模式,确认 CephCluster 的运行状况和 Ceph 镜像:

kubectl -n rook-ceph get cephcluster <cephcluster-name> \
  -o jsonpath='phase={.status.phase} health={.status.ceph.health} image={.spec.cephVersion.image}{"\n"}'
  • phase=Readyhealth=HEALTH_OK
  • spec.cephVersion.image 与名为 ceph 的唯一 CSV relatedImages 条目匹配。
  • 现有 PVC 仍为 Bound

对于外部模式,跳过本地镜像检查。现有使用者卷应保持为 Bound

如果详细信息页面上的按钮仍处于禁用状态

本节适用于4.4.1 及更高版本。在4.4.0 中没有详细信息页面按钮;请使用 kubectl。

  1. 确认用户可以在 rook-ceph 中更新 installplans

  2. 对于内部模式,确认 status.ceph.healthHEALTH_OK

  3. 检查 Subscription 和所引用的 InstallPlan:

    kubectl -n rook-ceph get subscription rook-operator
    kubectl -n rook-ceph get installplan

    如果 catalog 中已有更新的 CSV,但没有待批准的 InstallPlan,请检查 startingCSV 是否锁定了 Subscription。不要尝试从详细信息页面修复此锁定。

  4. 如果 InstallPlan 已获批准,但在 4.4.1 或更高版本中 Ceph 镜像未发生变化,请确认已安装的 CSV 为 Succeeded,并且 relatedImages 恰好包含一个名为 ceph 的条目。

不要删除 CephCluster 或 PV 对象来取消升级。

相关主题