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>
流程
如果您使用
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
为新主机创建一个 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
提交 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
状态表示从安装介质引导的节点正在进行中。
持续监控安装过程:
运行以下命令监控代理安装过程:
$ 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
当 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":""}