执行动态扩展

本页概述了通过纳入更多存储和计算资源来动态扩展系统的流程。下面提供了有关以下类型的扩展的说明:

  • 横向服务器机架扩展:向区域添加新机架。此机架包括计算节点、控制台、机架顶部 (ToR) 交换机和管理 (MGMT) 交换机。
  • 纵向服务器扩展:将服务器扩展模块添加到具有空扩展槽的机架中。
  • 纵向文件和块存储扩展:将存储节点添加到现有存储集群中具有空扩展槽的机架中。连接到同一存储交换机的存储节点属于同一集群。

如需详细了解不同类型的动态扩展,请参阅动态扩展概览

准备工作

在更改区域之前,您必须满足以下条件:

  1. 执行硬件检查并与 OEM 签署确认文件。按照机架检查中的说明操作。
  2. 按照 KUBECONFIG 生成中的说明,为控制平面节点的管理员集群生成 KUBECONFIG。 请在指南的所有 kubectl 步骤中使用生成的 KUBECONFIG 配置文件。
  3. 验证根集群上的当前 Google Distributed Cloud (GDC) 网闸隔离版本是否至少为 1.13.1 版:

    kubectl --kubeconfig $KUBECONFIG get org root -n gpc-system
    
  4. 下载 GDC tar 文件。如需了解详情,请参阅下载文件

  5. 准备新设备的固件:

    1. GDC 硬件中的数据包交换设备。如需了解详情,请参阅开关
    2. 按照手动升级 ONTAP 中的说明更新 ONTAP 文件和块存储。
  6. 使用 gdcloud system doctor 验证 GDCH 系统是否正常运行。如果 gdcloud system doctor 命令不可用,请使用网络安装验证中的替代方法。

执行水平服务器机架扩展

通过横向服务器机架扩展,向区域添加由计算节点、控制台、ToR 和管理交换机组成的新机架。 本部分中介绍的步骤适用于单个机架。如果您有多个机架,请对每个机架应用这些步骤。

执行重置操作

您必须安全地重置以下设备:

  1. 执行安全重置串行控制台服务器。请与 Google 联系以获取这些说明,因为每个部署可能都有不同的串行控制台。
  2. 对 Raritan 电源分配单元 (PDU) 执行安全重置:

    1. 将 USB-b 线缆从系统控制器连接到 Raritan PDU。
    2. 在本地串行控制台中,使用命令 reset factorydefaults 将 PDU 重置为出厂默认设置。
    3. PDU 现在设置为 admin/legrand
  3. 按照安全擦除中的说明执行安全重置、更新固件,并将 ToR 和 MGMT 交换机重置为 PowerOn Auto Provisioning (POAP)。

  4. 连接到每个服务器,然后手动执行安全擦除。

准备制品

请按照以下步骤应用必要的配置文件和自定义资源:

  1. 使用 gdcloud system assets add 命令生成 ZonalExpansion YAML 文件、硬件 CustomResources 和硬件 SubcomponentOverride 资源:

    gdcloud system assets add \
    --kubeconfig $KUBECONFIG \
    --license-dir FILE_PATH/licenses/ \
    --secrets FILE_PATH/secrets.yaml \
    --devices FILE_PATH/devices.csv \
    --cables FILE_PATH/cables.csv \
    --include-cellcfg \
    --name az-ae-expansion \
    --output ./outputs/af
    

    FILE_PATH 替换为所用每个文件的名称。请注意,如果每个文件位于不同的位置,此路径可能会有所不同。

    ZonalExpansion 自定义资源会跟踪所有已添加的对象,并报告所有对象的状态。

    查看 ZonalExpansion YAML 文件时,请遵循以下指南:

    • name 字段必须具有描述性,例如 az-ae-expansion
    • assets 字段必须包含新扩展机架中的所有新设备。

    下面是一个 ZonalExpansion 资源示例:

    apiVersion: system.private.gdc.goog/v1alpha1
    kind: ZonalExpansion
    metadata:
      name: file
      namespace: gpc-system
    spec:
      assets:
      - kind: ManagementSwitch
        name: az-ae-mgmtsw01
      - kind: ManagementSwitch
        name: az-ae-mgmtsw02
      - kind: TORSwitch
        name: az-ae-torsw01
      - kind: TORSwitch
        name: az-ae-torsw02
      - kind: TORSwitch
        name: az-ae-bm01
    
  2. 使用基础架构即代码 (IAC) 工具应用 ZonalExpansion 自定义资源。如需了解详情,请参阅基础架构即代码设置。 或者,按照 IAM-R0004 运行手册中的说明,使用 kubectl 完成此操作。

  3. 验证 ZonalExpansionNonCompliantDeviceSet 资源是否已创建:

    1. 检查 ZonalExpansion 资源的状态:

      kubectl --kubeconfig $KUBECONFIG get -A zonalexpansion -o yaml
      

      预检检查应在此阶段失败,失败原因为:ReasonAssetsNotExisted

    2. 必须存在以 noncompliantassets- 为前缀的 NonCompliantDeviceSet 资源。

    3. 资源列表必须与 ZonalExpansion 自定义资源中的 assets 字段相同。

  4. 请按照 OLT-R0003 中的说明更新资产。

  5. 将新机架中的 ToR 和 MGMT 交换机连接到现有机架中的聚合交换机。

  6. 将交换机以物理方式连接到基本机架。

完成服务器引导

此阶段主要通过自动化完成,但需要执行一些步骤。您必须监控引导加载程序进度并处理任何失败情况:

  1. 一旦满足条件 PreflightCheck=True,控制器就会自动启动引导加载程序。
  2. 验证条件 NetworkBootstrapSucceed=True 是否已发布到 ZonalExpansion 自定义资源。此条件位于 ZonalExpansion.Status.PNETBootstrapStatus
  3. 验证开关是否已从 NonCompliantDeviceSet 列表中移除:

    kubectl --kubeconfig $KUBECONFIG get noncompliantdeviceset noncompliantassets-EXPANSION_NAME -A -o yaml
    

    EXPANSION_NAME 替换为可用区扩展自定义资源的名称。

    验证开关是否不在返回的 YAML 文件的 Spec.Assets 字段中。 移除此文件后,GDC 即可更新网络 ACL,以允许其他设备启动程序。更新后的两个网络 ACL 为 quarantine-mgmt-switch-aclquarantine-data-switch-acl

  4. 列出服务器的所有基板管理控制器 (BMC) IP 地址,并检查 iLO IP 地址是否已分配给新的裸机,以及引导是否可以启动:

    kubectl --kubeconfig $KUBECONFIG get servers -n gpc-system -o=custom-columns=SERVER:.metadata.name,BMC_IP:.spec.bmc.ip
    

    输出示例:

     SERVER       BMC_IP
     yz-aa-bm01   10.128.136.2
     yz-aa-bm02   10.128.136.3
     yz-aa-bm03   10.128.136.4
     yz-ab-bm01   10.128.136.66
     yz-ab-bm02   10.128.136.67
     yz-ab-bm03   10.128.136.68
     yz-ac-bm01   10.128.136.130
     yz-ac-bm02   10.128.136.131
     yz-ac-bm03   10.128.136.132
     yz-ac-bm04   10.128.136.133
     yz-ac-bm05   10.128.136.134
     yz-ac-bm06   10.128.136.135
     yz-ac-bm07   10.128.136.136
     yz-ac-bm08   10.128.136.137
     yz-ac-bm09   10.128.136.138
     yz-ac-bm10   10.128.136.139
     yz-ac-bm11   10.128.136.140
     yz-ac-bm12   10.128.136.141
     yz-ac-bm13   10.128.136.142
     yz-ac-bm14   10.128.136.143
     yz-ac-bm15   10.128.136.144
     yz-ac-bm16   10.128.136.145
     yz-ac-bm17   10.128.136.146
     yz-ac-bm18   10.128.136.147
    

    GDC 并行引导服务器,以执行安全擦除、验证、BIOS 设置更新和其他引导加载程序。

  5. 验证 ServerBootstrapSucceeded=True 条件是否已发布到 ZonalExpansion 自定义资源。此条件位于 ZonalExpansion.Status.SERVBootstrapStatus 位置:

    • 在引导成功后,服务器裸机主机状态会进入 AvailableProvisioned 状态。
    • 在 CLI 详细程度为 4 时,您会看到类似 "Not all servers in the ZonalExpansion are bootstrapped" 的日志,其中包含尚未准备就绪的服务器列表。
  6. 验证服务器是否已从 NonCompliantDeviceSet 列表中移除:

    kubectl --kubeconfig $KUBECONFIG get noncompliantdevicesets -n gpc-system "noncompliantassets-EXPANSION_NAME" -o yaml
    
  7. 检查条件 ExpansionSucceeded=True 是否已发布到 ZonalExpansion 自定义资源。此条件位于 ZonalExpansion.Status.Conditions

  8. 验证 NonCompliantDeviceSet 列表是否已删除:

    kubectl --kubeconfig $KUBECONFIG get noncompliantdeviceset noncompliantassets-EXPANSION_NAME -A
    

    预期输出:

    `Error from server (NotFound): noncompliantdevicesets.system.private.gdc.goog "noncompliantassets-EXPANSION_NAME" not found`
    

执行纵向服务器扩展

通过垂直服务器扩展,将服务器扩展模块添加到具有空扩展插槽的机架中。此扩展的许多说明与横向计算扩展类似。请按照以下步骤执行垂直服务器机架扩展:

  1. 实际安装占用 6 个节点容量的标准服务器块,或占用 3 个节点容量的 GPU 服务器块。每个机架可以添加多个块。警告:请勿将数据线插入 mgmtswaggsw 开关。如需了解详情,请参阅开关
  2. 除了电源线之外,请勿连接任何其他线缆。此步骤可让服务器启动流程验证服务器在到达时是否处于离线状态。
  3. 使用 gdcloud system assets add 命令生成 ZonalExpansion YAML 文件和硬件 SubcomponentOverride 资源:

    gdcloud system assets add \
    --kubeconfig $KUBECONFIG \
    --license-dir FILE_PATH/licenses/ \
    --secrets FILE_PATH/secrets.yaml \
    --devices FILE_PATH/devices.csv \
    --cables FILE_PATH/cables.csv \
    --include-cellcfg \
    --name az-ae-expansion \
    --output ./outputs/af
    

    FILE_PATH 替换为所用每个文件的名称。请注意,如果每个文件位于不同的位置,此路径可能会有所不同。

    查看 ZonalExpansion YAML 文件时,请遵循以下指南:

    • name 字段必须具有描述性,例如 az-ae-expansion
    • assets 字段必须包含新扩展机架中的所有新设备。

    下面是一个 ZonalExpansion 资源示例:

    apiVersion: system.private.gdc.goog/v1alpha1
    kind: ZonalExpansion
    metadata:
      name: file
      namespace: gpc-system
    spec:
      assets:
      - kind: ManagementSwitch
        name: az-ae-mgmtsw01
      - kind: ManagementSwitch
        name: az-ae-mgmtsw02
      - kind: TORSwitch
        name: az-ae-torsw01
      - kind: TORSwitch
        name: az-ae-torsw02
      - kind: TORSwitch
        name: az-ae-bm01
    
  4. 将您刚刚创建的 ZonalExpansion 自定义资源应用到集群。

  5. 验证 ZonalExpansionNonCompliantDeviceSet 资源是否已创建:

    1. 检查 ZonalExpansion 资源的状态。预检检查应在此阶段失败,失败原因为:ReasonAssetsNotExisted
    2. 必须存在以 noncompliantassets- 为前缀的 NonCompliantDeviceSet 资源。
    3. 资源列表必须与 ZonalExpansion 自定义资源中的 assets 字段相同。
  6. 请按照 OLT-R0003 中的说明更新资产。

  7. 按照 OLT-R0001 运行手册验证隔离交换机 ACL 是否正在运行。

  8. 连接服务器的线缆(如果尚未完成)。请按照 Hewlett Packard Enterprise (HPE) 提供的布线文件进行操作。

  9. 验证服务器引导过程是否已成功开始并完成。如需了解详情,请参阅完成服务器启动

执行纵向文件和块存储扩展

这些说明包含执行纵向或单机架存储节点扩展所需的步骤。当添加新的 ONTAP 存储节点以扩展现有机架的存储功能时,会执行存储节点扩展。本文档未提供新存储设备的布线说明,仅提供擦除、升级和向现有集群添加新存储节点的过程。

执行存储节点扩展的设置

按照以下步骤准备集群以进行存储节点扩容:

  1. 按照 KUBECONFIG 生成中的说明,为控制平面节点的管理员集群生成 KUBECONFIG。 将生成的 KUBECONFIG 配置文件用于本指南中的所有 kubectl 步骤:

  2. 应用 SubcomponentOverride 资源以在执行节点扩展的初始设置时停用存储协调器:

    kubectl --kubeconfig $KUBECONFIG apply -f - <<EOF
    apiVersion: lcm.private.gdc.goog/v1
    kind: SubcomponentOverride
    metadata:
        name: file-storage-sub-override
        namespace: root
    spec:
        subComponentRef: "file-storage"
        backend:
            operableParameters:
                controller:
                    enableReconcilers: ""
                    disableReconcilers: "*"
    EOF
    
  3. 验证替换是否有效,以及 file-storage 协调器是否已停用:

    kubectl --kubeconfig $KUBECONFIG describe deployment file-storage -n
    file-system | grep reconcilers
    

    您必须看到以下内容:

    --enable-reconcilers=
    --disable-reconcilers=*
    

    如果您没有看到此状态,请等待几分钟,以便 SubcomponentOverride 资源得以应用,然后再次执行此检查。如果几分钟后 SubcomponentOverride 仍未应用,请与 GDC 工程支持团队联系。

  4. 使用 gdcloud system assets add 命令生成 ZonalExpansion YAML 文件和硬件 SubcomponentOverride 资源:

    gdcloud system assets add \
    --kubeconfig $KUBECONFIG \
    --license-dir FILE_PATH/licenses/ \
    --secrets FILE_PATH/secrets.yaml \
    --devices FILE_PATH/devices.csv \
    --cables FILE_PATH/cables.csv \
    --include-cellcfg \
    --name az-ae-expansion \
    --output ./outputs/af
    ```
    Replace FILE_PATH for each of the files used. Note, this path might be different if each file is in a different location.
    
    Use the following guidance when reviewing the `ZonalExpansion` YAML file:
    
    The `name` field must be descriptive, such as aj-ad-expansion.
    The `assets` field must include all new appliances in the new expansion rack.
    Here is an example of a `ZonalExpansion` resource:
    
    ```sh
    apiVersion: system.private.gdc.goog/v1alpha1
    kind: ZonalExpansion
    metadata:
    name: file
    namespace: gpc-system
    spec:
    assets:
    - kind: StorageNode
        name: aj-ad-stge03-01
    - kind: StorageNode
        name: aj-ad-stge03-02
    ```
    
  5. 将您刚刚创建的 ZonalExpansion 自定义资源应用到集群。

  6. 验证 ZonalExpansionNonCompliantDeviceSet 资源是否已创建:

    1. 检查 ZonalExpansion 资源的状态。预检检查应在此阶段失败,失败原因为:ReasonAssetsNotExisted
    2. 必须存在以 noncompliantassets- 为前缀的 NonCompliantDeviceSet 资源。
    3. 资源列表必须与 ZonalExpansion 自定义资源中的资源字段相同。
  7. 使用 IaC 工具将以下硬件资产 SubcomponentOverride 资源应用到根管理员集群。

    • file/file-storage.yaml
    • inv/inv-core.yaml
  8. 确认新节点已添加到集群:

    kubectl --kubeconfig $KUBECONFIG get storagenodes -n gpc-system
    

    您应该会看到新添加的节点自定义资源,其年龄值更新为更近的时间:

      NAME              MGMTIP           INTERCONNECTIP   MODEL      AGE
      aj-ad-stge01-01   172.22.243.129   169.254.0.1      AFF-A250   37d
      aj-ad-stge01-02   172.22.243.130   169.254.0.3      AFF-A250   37d
      aj-ad-stge03-01   172.22.243.133   169.254.0.9      AFF-A400   20d
      aj-ad-stge03-02   172.22.243.134   169.254.0.11     AFF-A400   20d
    
  9. 使用 describe 命令获取有关这两个节点的信息,因为它们包含后续步骤所需的信息。

    kubectl --kubeconfig $KUBECONFIG describe storagenode NODE_NAME -n gpc-system
    

    NODE_NAME 替换为每个已创建节点的名称。

    输出示例:

    NAME              MGMTIP           INTERCONNECTIP   MODEL      AGE
    aj-ad-stge03-02   172.22.243.134   169.254.0.11     AFF-A400   20d
    

完成存储节点扩充流程

请按照以下步骤完成存储节点扩充流程:

  1. 手动升级新的存储节点。对于每个节点,请按照手动 ONTAP 升级中的步骤操作,从系统控制器提供文件。
  2. 对新的存储节点执行安全擦除。对于新的 ONTAP 节点,请按照 ONTAP 重置中的步骤重置节点。

  3. 初始化新的存储节点。使用上一步中介绍的新添加的 StorageNode 自定义资源中的信息。针对每个节点,执行初始化 ONTAP 设备中的步骤。

  4. 按照设置 ONTAP 中的说明,通过线缆将新节点连接到当前集群。

  5. 按照将新节点添加到现有集群中的说明将新节点添加到集群。

排查动态展开功能方面的问题

使用服务手册中的以下操作手册排查动态扩展问题:

  • OLT-R0001
  • OLT-R0002
  • OLT-R0003