documentation.suse.com / SUSE Edge 文档 / 使用的组件 / 系统升级控制器

19 系统升级控制器

请参见系统升级控制器文档

系统升级控制器 (SUC) 旨在提供一个针对节点的 Kubernetes 原生通用升级控制器。它引入了一个新的 CRD,即计划,用于定义您的各种升级策略/要求。计划的主要意图是改变群集中的节点。

19.1 SUSE Edge 如何使用系统升级控制器?

SUC 用于协助执行各种 Day 2 操作,以便将管理/下游群集从一个边缘平台版本升级到另一个版本。Day 2 的操作以 SUC 计划的形式定义。SUC 会根据这些计划,在执行相应 Day 2 操作的每个节点上部署工作负载。

19.2 安装系统升级控制器

建议您通过位于 suse-edge/fleet-examples 储存库中的 Fleet(第 6 章 “Fleet)安装 SUC

注意
注意

suse-edge/fleet-examples 储存库提供的资源必须在有效的 fleet-examples 版本中使用。要确定需使用哪个版本,请参见发行说明(第 45.1 节 “摘要”)。

如果无法使用 Fleet(第 6 章 “Fleet)安装 SUC,可以通过 Rancher 的 Helm chart 储存库进行安装,或者将 Rancher 的 Helm chart 整合到您自己的第三方 GitOps 工作流程中。

本节介绍:

19.2.1 系统升级控制器 Fleet 安装

使用 Fleet 时或许可以使用两种资源来部署 SUC

19.2.1.1 系统升级控制器安装 - GitRepo

注意
注意

此过程也可以通过 Rancher UI 完成(如果有相关 UI)。有关详细信息,请参见在 Rancher UI 中访问 Fleet

在您的管理群集中:

  1. 确定要在哪些群集上部署 SUC,方法是在管理群集内的适当 Fleet 工作空间中部署 SUC GitRepo。默认情况下,Fleet 有两个工作空间:

    • fleet-local - 用于需要部署在管理群集上的资源。

    • fleet-default - 用于需要部署在下游群集上的资源。

      有关 Fleet 工作空间的详细信息,请参见上游文档。

  2. 部署 GitRepo 资源:

    • 要在管理群集上部署 SUC

      kubectl apply -n fleet-local -f - <<EOF
      apiVersion: fleet.cattle.io/v1alpha1
      kind: GitRepo
      metadata:
        name: system-upgrade-controller
      spec:
        revision: release-3.1.0
        paths:
        - fleets/day2/system-upgrade-controller
        repo: https://github.com/suse-edge/fleet-examples.git
      EOF
    • 要在下游群集上部署 SUC

      注意
      注意

      在部署下方资源之前,您必须提供有效的目标配置,以便 Fleet 了解资源要部署至哪些下游群集。有关如何映射到下游群集的信息,请参见映射到下游群集

      kubectl apply -n fleet-default -f - <<EOF
      apiVersion: fleet.cattle.io/v1alpha1
      kind: GitRepo
      metadata:
        name: system-upgrade-controller
      spec:
        revision: release-3.1.0
        paths:
        - fleets/day2/system-upgrade-controller
        repo: https://github.com/suse-edge/fleet-examples.git
        targets:
        - clusterSelector: CHANGEME
        # Example matching all clusters:
        # targets:
        # - clusterSelector: {}
      EOF
  3. 验证 GitRepo 是否已部署:

    # Namespace will vary based on where you want to deploy SUC
    kubectl get gitrepo system-upgrade-controller -n <fleet-local/fleet-default>
    
    NAME                        REPO                                              COMMIT          BUNDLEDEPLOYMENTS-READY   STATUS
    system-upgrade-controller   https://github.com/suse-edge/fleet-examples.git   release-3.1.0   1/1
  4. 验证系统升级控制器部署:

    kubectl get deployment system-upgrade-controller -n cattle-system
    NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
    system-upgrade-controller   1/1     1            1           2m20s

19.2.1.2 系统升级控制器安装 - 捆绑包

本节说明如何使用 fleet-cli 从标准 Fleet 配置构建并部署捆绑包资源。

  1. 在连接网络的计算机上下载 fleet-cli

    注意
    注意

    确保您下载的 fleet-cli 版本与群集上部署的 Fleet 版本匹配。

    • 对于 Mac 用户,有一个 fleet-cli Homebrew Formulae。

    • 对于 Linux 和 Windows 用户,每个 Fleet 版本都会有作为资产存在的二进制文件。

      • Linux AMD:

        curl -L -o fleet-cli https://github.com/rancher/fleet/releases/download/<FLEET_VERSION>/fleet-linux-amd64
      • Linux ARM:

        curl -L -o fleet-cli https://github.com/rancher/fleet/releases/download/<FLEET_VERSION>/fleet-linux-arm64
  2. fleet-cli 设为可执行文件:

    chmod +x fleet-cli
  3. 克隆您要使用的 suse-edge/fleet-examples 版本

    git clone -b release-3.1.0 https://github.com/suse-edge/fleet-examples.git
  4. 导航到 fleet-examples 储存库中的 SUC fleet:

    cd fleet-examples/fleets/day2/system-upgrade-controller
  5. 确定要在哪些群集上部署 SUC,方法是在管理群集内的适当 Fleet 工作空间中部署 SUC 捆绑包。默认情况下,Fleet 有两个工作空间:

    • fleet-local - 用于需要部署在管理群集上的资源。

    • fleet-default - 用于需要部署在下游群集上的资源。

      有关 Fleet 工作空间的详细信息,请参见上游文档。

  6. 如果您只打算在下游群集上部署 SUC,请创建一个与特定群集匹配的 targets.yaml 文件:

    cat > targets.yaml <<EOF
    targets:
    - clusterSelector: CHANGEME
    EOF

    有关如何映射到下游群集的信息,请参见映射到下游群集

  7. 继续构建捆绑包:

    注意
    注意

    请确保您没有下载 fleet-examples/fleets/day2/system-upgrade-controller 目录中的 fleet-cli,否则它将和捆绑包打包在一起,不建议这么做。

    • 要在管理群集上部署 SUC,请执行:

      fleet-cli apply --compress -n fleet-local -o - system-upgrade-controller . > system-upgrade-controller-bundle.yaml
    • 要在下游群集上部署 SUC,请执行:

      fleet-cli apply --compress --targets-file=targets.yaml -n fleet-default -o - system-upgrade-controller . > system-upgrade-controller-bundle.yaml

      有关此过程的详细信息,请参见将 Helm Chart 转换为捆绑包

      有关 fleet-cli apply 命令的详细信息,请参见 fleet apply

  8. system-upgrade-controller-bundle.yaml 捆绑包传输到您的管理群集计算机:

    scp system-upgrade-controller-bundle.yaml <machine-address>:<filesystem-path>
  9. 在您的管理群集上,部署 system-upgrade-controller-bundle.yaml 捆绑包:

    kubectl apply -f system-upgrade-controller-bundle.yaml
  10. 在您的管理群集上,验证捆绑包是否已部署:

    # Namespace will vary based on where you want to deploy SUC
    kubectl get bundle system-upgrade-controller -n <fleet-local/fleet-default>
    
    NAME                        BUNDLEDEPLOYMENTS-READY   STATUS
    system-upgrade-controller   1/1
  11. 根据捆绑包部署到的 Fleet 工作空间,导航到群集并验证 SUC 部署:

    注意
    注意

    SUC 始终部署在 cattle-system 名称空间中。

    kubectl get deployment system-upgrade-controller -n cattle-system
    NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
    system-upgrade-controller   1/1     1            1           111s

19.2.2 系统升级控制器 Helm 安装

  1. 添加 Rancher chart 储存库:

    helm repo add rancher-charts https://charts.rancher.io/
  2. 部署 SUC chart:

    helm install system-upgrade-controller rancher-charts/system-upgrade-controller --version 104.0.0+up0.7.0 --set global.cattle.psp.enabled=false -n cattle-system --create-namespace

    此命令将安装 Edge 3.1 平台所需的 SUC 0.13.4 版本。

  3. 验证 SUC 部署:

    kubectl get deployment system-upgrade-controller -n cattle-system
    NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
    system-upgrade-controller   1/1     1            1           37s

19.3 监控系统升级控制器计划

SUC 计划可以通过以下方式查看:

重要
重要

SUC 计划部署的 Pod 在成功执行后会保持 15 分钟的活动状态。之后,它们将被创建它们的相应作业去除。如果要在这段时间后访问 Pod 的日志,您应该为群集启用日志记录。有关如何在 Rancher 中执行此操作的信息,请参见 Rancher 与日志记录服务的集成

19.3.1 监控系统升级控制器计划 - Rancher UI

要检查特定 SUC 计划的 Pod 日志,请执行以下操作:

  1. 在左上角,选择 ☰ → <您的群集名称>

  2. 选择工作负载 → Pod

  3. 选择仅用户名称空间下拉菜单,并添加 cattle-system 名称空间。

  4. 在 Pod 过滤栏中输入 SUC 计划 Pod 的名称。该名称采用以下模板格式:apply-<计划名称>-on-<节点名称>

    注意
    注意

    对于特定的 SUC 计划,可能同时有已完成未知的 Pod。这是正常的,原因要归咎于一些升级的性质。

  5. 选择您要查看其日志的 Pod,然后导航到 ⋮ → 查看日志

19.3.2 监控系统升级控制器计划 - 手动

注意
注意

以下步骤假设 kubectl 已配置为连接到已部署 SUC 计划的群集。

  1. 列出部署的 SUC 计划:

    kubectl get plans -n cattle-system
  2. 获取 SUC 计划的 Pod:

    kubectl get pods -l upgrade.cattle.io/plan=<plan_name> -n cattle-system
    注意
    注意

    对于特定的 SUC 计划,可能同时有已完成未知的 Pod。这是正常的,原因要归咎于一些升级的性质。

  3. 获取 Pod 的日志:

    kubectl logs <pod_name> -n cattle-system
Documentation survey