|Index|SUSE Edge 文档|组件|系统升级控制器
Applies to SUSE Edge 3.6

18 系统升级控制器

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

系统升级控制器 (SUC) 旨在提供一个通用的、Kubernetes 原生的升级控制器(针对节点)。它引入了一个新的 CRD,即 Plan,用于定义您的所有升级策略/要求。Plan 是对集群中节点进行变更的待处理意图。

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

SUSE Edge 使用 SUC 来促进与管理集群和下游集群上的操作系统及 Kubernetes 版本升级相关的各种“第 2 天”操作。

“第 2 天”操作通过 SUC Plans 定义。基于这些计划,SUC 在每个节点上部署工作负载以执行相应的“第 2 天”操作。

SUC 也用于 Chapter 19, 升级控制器 中。要了解有关 SUC 与 Upgrade Controller 之间主要区别的更多信息,请参阅 Section 19.2, “升级控制器与系统升级控制器”

18.2 安装系统升级控制器

Important
Important

从 Rancher v2.10.0 开始,System Upgrade Controller 会自动安装。

仅当您的环境 not 由 Rancher 管理,或者您的 Rancher 版本低于 v2.10.0 时,请遵循以下步骤 only

我们建议您通过位于 suse-edge/fleet-examples 储存库中的 Fleet (Chapter 6, Fleet) 安装 SUC。

Note
Note

suse-edge/fleet-examples 储存库提供的资源 必须 始终从有效的 fleet-examples 版本 中使用。要确定您需要使用哪个版本,请参阅 发行说明 (Chapter 41, 发行说明)。

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

本节涵盖:

18.2.1 System Upgrade Controller Fleet 安装

使用 Fleet,有两种可能的资源可用于部署 SUC:

18.2.1.1 System Upgrade Controller 安装 - GitRepo

Note
Note

如果可用,此处理也可以通过 Rancher 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.6.1
        paths:
        - fleets/day2/system-upgrade-controller
        repo: https://github.com/suse-edge/fleet-examples.git
      EOF
    • 要在您的下游集群上部署 SUC:

      Note
      Note

      在部署以下资源之前,您 必须 提供有效的 targets 配置,以便 Fleet 知道在哪些下游集群上部署您的资源。有关如何映射到下游集群的信息,请参阅 Mapping to Downstream Clusters

      kubectl apply -n fleet-default -f - <<EOF
      apiVersion: fleet.cattle.io/v1alpha1
      kind: GitRepo
      metadata:
        name: system-upgrade-controller
      spec:
        revision: release-3.6.1
        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.6.1   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

18.2.1.2 系统升级控制器安装 - Bundle

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

  1. 在具有网络访问权限的机器上下载 fleet-cli

    Note
    Note

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

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

    • 对于 Linux 和 Windows 用户,二进制文件作为每个 Fleet releaseassets 提供。

      • Linux AMD:

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

        curl -L -o fleet-cli https://github.com/rancher/fleet/releases/download/vv0.15.2/fleet-linux-arm64
  2. 使 fleet-cli 成为一个可执行程序:

    chmod +x fleet-cli
  3. 克隆您希望使用的 suse-edge/fleet-examples release

    git clone -b release-3.6.1 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 Bundle 来完成。默认情况下,Fleet 有两个工作区:

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

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

      有关 Fleet 工作区的更多信息,请参阅 upstream 文档。

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

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

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

  7. 继续构建 Bundle:

    Note
    Note

    请确保您 notfleet-examples/fleets/day2/system-upgrade-controller 目录中下载 fleet-cli,否则它会被打包到 Bundle 中,这不被建议。

    • 要在您的管理集群上部署 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 转换为 Bundle

      有关 fleet-cli apply 命令的更多信息,请参阅 fleet apply

  8. system-upgrade-controller-bundle.yaml bundle 传输到您的管理集群机器:

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

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

    # 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. 根据您部署 Bundle 的 Fleet 工作区,导航至该集群并验证 SUC 部署:

    Note
    Note

    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

18.2.2 System Upgrade Controller 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 109.0.1 --set global.cattle.psp.enabled=false -n cattle-system --create-namespace

    这将安装 Edge 3.6 平台所需的 SUC 版本 v0.19.1。

  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

18.3 监控 System Upgrade Controller 计划

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

Important
Important

为 SUC 计划部署的 Pod 在成功执行后会保持存活 15 分钟。此后,它们将由创建它们的相应 Job 移除。若要在此时间段后访问 Pod 的日志,您应该为集群启用日志记录。有关如何在 Rancher 中执行此操作的信息,请参阅 Rancher Integration with Logging Services

18.3.1 监控 System Upgrade Controller 计划 - Rancher UI

要检查特定 SUC 计划的 Pod 日志:

  1. 在左上角,☰ → <your-cluster-name>

  2. 选择 Workloads → Pods

  3. 选择 Only User Namespaces 下拉菜单并添加 cattle-system 名称空间

  4. 在 Pod 筛选栏中,输入您的 SUC 计划 Pod 的名称。名称将采用以下模板格式:apply-<plan_name>-on-<node_name>

    Note
    Note

    对于特定的 SUC 计划,可能同时存在 CompletedUnknown Pod。这是预期情况,由某些升级的性质导致。

  5. 选择您要查看日志的 Pod,然后导航至 ⋮ → View Logs

18.3.2 监控 System Upgrade Controller 计划 - 手动

Note
Note

以下步骤假设 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
    Note
    Note

    对于特定的 SUC 计划,可能同时存在 CompletedUnknown Pods。这是预期的情况,由于某些升级的性质所致。

  3. 获取 Pod 的日志:

    kubectl logs <pod_name> -n cattle-system