13.6. 使用 GitOps ZTP 将 worker 节点添加到单节点 OpenShift 集群


您可以将一个或多个 worker 节点添加到现有的单节点 OpenShift 集群,以增加集群中的可用 CPU 资源。

先决条件

  • 在 OpenShift Container Platform 4.11 或更高版本的裸机 hub 集群中安装和配置 RHACM 2.6 或更高版本
  • 在 hub 集群中安装 Topology Aware Lifecycle Manager
  • 在 hub 集群中安装 Red Hat OpenShift GitOps
  • 使用 GitOps ZTP ztp-site-generate 容器镜像版本 4.12 或更高版本
  • 使用 GitOps ZTP 部署受管单节点 OpenShift 集群
  • 配置中央基础架构管理,如 RHACM 文档所述
  • 配置 DNS 服务集群来解析内部 API 端点 api-int.<cluster_name>.<base_domain>

流程

  1. 如果您使用 example-sno.yaml SiteConfig 清单部署集群,请将新的 worker 节点添加到 spec.clusters['example-sno'].nodes 列表中:

    nodes:
    - hostName: "example-node2.example.com"
      role: "worker"
      bmcAddress: "idrac-virtualmedia+https://[1111:2222:3333:4444::bbbb:1]/redfish/v1/Systems/System.Embedded.1"
      bmcCredentialsName:
        name: "example-node2-bmh-secret"
      bootMACAddress: "AA:BB:CC:DD:EE:11"
      bootMode: "UEFI"
      nodeNetwork:
        interfaces:
          - name: eno1
            macAddress: "AA:BB:CC:DD:EE:11"
        config:
          interfaces:
            - name: eno1
              type: ethernet
              state: up
              macAddress: "AA:BB:CC:DD:EE:11"
              ipv4:
                enabled: false
              ipv6:
                enabled: true
                address:
                - ip: 1111:2222:3333:4444::1
                  prefix-length: 64
          dns-resolver:
            config:
              search:
              - example.com
              server:
              - 1111:2222:3333:4444::2
          routes:
            config:
            - destination: ::/0
              next-hop-interface: eno1
              next-hop-address: 1111:2222:3333:4444::1
              table-id: 254
  2. 为新主机创建一个 BMC 身份验证 secret,如 SiteConfig 文件的 spec.nodes 部分中的 bmcCredentialsName 字段引用:

    apiVersion: v1
    data:
      password: "password"
      username: "username"
    kind: Secret
    metadata:
      name: "example-node2-bmh-secret"
      namespace: example-sno
    type: Opaque
  3. 提交 Git 中的更改,然后推送到由 GitOps ZTP ArgoCD 应用程序监控的 Git 存储库。

    当 ArgoCD cluster 应用程序同步时,由 GitOps ZTP 插件生成的 hub 集群中会出现两个新清单:

    • BareMetalHost
    • NMStateConfig

      重要

      不应为 worker 节点配置 cpuset 字段。worker 节点的工作负载分区会在节点安装完成后通过管理策略添加。

验证

您可以通过几种方法监控安装过程。

  • 运行以下命令,检查预置备镜像是否已创建:

    $ oc get ppimg -n example-sno

    输出示例

    NAMESPACE       NAME            READY   REASON
    example-sno     example-sno     True    ImageCreated
    example-sno     example-node2   True    ImageCreated

  • 检查裸机主机的状态:

    $ oc get bmh -n example-sno

    输出示例

    NAME            STATE          CONSUMER   ONLINE   ERROR   AGE
    example-sno     provisioned               true             69m
    example-node2   provisioning              true             4m50s 1

    1
    provisioning 状态表示从安装介质引导的节点正在进行中。
  • 持续监控安装过程:

    1. 运行以下命令监控代理安装过程:

      $ oc get agent -n example-sno --watch

      输出示例

      NAME                                   CLUSTER   APPROVED   ROLE     STAGE
      671bc05d-5358-8940-ec12-d9ad22804faa   example-sno   true       master   Done
      [...]
      14fd821b-a35d-9cba-7978-00ddf535ff37   example-sno   true       worker   Starting installation
      14fd821b-a35d-9cba-7978-00ddf535ff37   example-sno   true       worker   Installing
      14fd821b-a35d-9cba-7978-00ddf535ff37   example-sno   true       worker   Writing image to disk
      [...]
      14fd821b-a35d-9cba-7978-00ddf535ff37   example-sno   true       worker   Waiting for control plane
      [...]
      14fd821b-a35d-9cba-7978-00ddf535ff37   example-sno   true       worker   Rebooting
      14fd821b-a35d-9cba-7978-00ddf535ff37   example-sno   true       worker   Done

    2. 当 worker 节点安装完成后,worker 节点证书会被自动批准。此时,worker 会出现在 ManagedClusterInfo 状态中。运行以下命令查看状态:

      $ oc get managedclusterinfo/example-sno -n example-sno -o \
      jsonpath='{range .status.nodeList[*]}{.name}{"\t"}{.conditions}{"\t"}{.labels}{"\n"}{end}'

      输出示例

      example-sno	[{"status":"True","type":"Ready"}]	{"node-role.kubernetes.io/master":"","node-role.kubernetes.io/worker":""}
      example-node2	[{"status":"True","type":"Ready"}]	{"node-role.kubernetes.io/worker":""}

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.