19.5. 使用 ZTP 手动安装单节点 OpenShift 集群
您可以使用 Red Hat Advanced Cluster Management (RHACM) 和支持的服务部署受管单节点 OpenShift 集群。
如果要创建多个受管集群,请参阅使用 ZTP 部署边缘站点中描述的 SiteConfig
方法。
目标裸机主机必须满足 vDU 应用程序工作负载的推荐集群配置中列出的网络、固件和硬件要求。
19.5.1. 手动生成 ZTP 安装和配置 CR
使用 ztp-site-generate
容器的 generator
入口点,根据 SiteConfig
和 PolicyGenTemplate
CR 为集群生成站点安装和配置自定义资源 (CR)。
先决条件
-
已安装 OpenShift CLI(
oc
)。 -
已以具有
cluster-admin
权限的用户身份登录到 hub 集群。
流程
运行以下命令来创建输出文件夹:
$ mkdir -p ./out
从
ztp-site-generate
容器镜像导出argocd
目录:$ podman run --log-driver=none --rm registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.10 extract /home/ztp --tar | tar x -C ./out
./out
目录包含out/argocd/example/
文件夹中的参考PolicyGenTemplate
和SiteConfig
CR。输出示例
out └── argocd └── example ├── policygentemplates │ ├── common-ranGen.yaml │ ├── example-sno-site.yaml │ ├── group-du-sno-ranGen.yaml │ ├── group-du-sno-validator-ranGen.yaml │ ├── kustomization.yaml │ └── ns.yaml └── siteconfig ├── example-sno.yaml ├── KlusterletAddonConfigOverride.yaml └── kustomization.yaml
为站点安装 CR 创建输出文件夹:
$ mkdir -p ./site-install
为您要安装的集群类型修改示例
SiteConfig
CR。将example-sno.yaml
复制到site-1-sno.yaml
,并修改 CR 以匹配您要安装的站点和裸机主机的详情,例如:单节点 OpenShift 集群 SiteConfig CR 示例
apiVersion: ran.openshift.io/v1 kind: SiteConfig metadata: name: "<site_name>" namespace: "<site_name>" spec: baseDomain: "example.com" pullSecretRef: name: "assisted-deployment-pull-secret" 1 clusterImageSetNameRef: "openshift-4.10" 2 sshPublicKey: "ssh-rsa AAAA..." 3 clusters: - clusterName: "<site_name>" networkType: "OVNKubernetes" clusterLabels: 4 common: true group-du-sno: "" sites : "<site_name>" clusterNetwork: - cidr: 1001:1::/48 hostPrefix: 64 machineNetwork: - cidr: 1111:2222:3333:4444::/64 serviceNetwork: - 1001:2::/112 additionalNTPSources: - 1111:2222:3333:4444::2 #crTemplates: # KlusterletAddonConfig: "KlusterletAddonConfigOverride.yaml" 5 nodes: - hostName: "example-node.example.com" 6 role: "master" #biosConfigRef: # filePath: "example-hw.profile" 7 bmcAddress: idrac-virtualmedia://<out_of_band_ip>/<system_id>/ 8 bmcCredentialsName: name: "bmh-secret" 9 bootMACAddress: "AA:BB:CC:DD:EE:11" bootMode: "UEFI" 10 rootDeviceHints: wwn: "0x11111000000asd123" cpuset: "0-1,52-53" nodeNetwork: 11 interfaces: - name: eno1 macAddress: "AA:BB:CC:DD:EE:11" config: interfaces: - name: eno1 type: ethernet state: up ipv4: enabled: false ipv6: 12 enabled: true address: - ip: 1111:2222:3333:4444::aaaa: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
- 1
- 使用与
SiteConfig
CR 相同的命名空间创建assisted-deployment-pull-secret
CR。 - 2
clusterImageSetNameRef
定义 hub 集群中可用的镜像集。要查看 hub 集群上支持的版本列表,请运行oc get clusterimagesets
。- 3
- 配置用于访问集群的 SSH 公钥。
- 4
- 集群标签必须与您定义的
PolicyGenTemplate
CR 中的bindingRules
字段对应。例如,policygentemplates/common-ranGen.yaml
应用到所有带有common: true
设置的集群,policygentemplates/group-du-sno-ranGen.yaml
应用到所有带有group-du-sno: ""
设置的所有集群。 - 5
- 可选的。
KlusterletAddonConfig
下的 CR specifed 用于覆盖为集群创建的默认KlusterletAddonConfig
。 - 6
- 对于单节点部署,请定义一个主机。对于三节点部署,请定义三个主机。对于标准部署,使用
role: master
定义三个主机,使用role: worker
定义两个或更多主机。 - 7
- 可选的。使用
biosConfigRef
为主机配置所需的固件。 - 8
- 适用于所有集群类型。指定 BMC 地址。
- 9
- 创建指定 BMC 凭证的
bmh-secret
CR。使用与SiteConfig
CR 相同的命名空间。 - 10
- 使用
UEFISecureBoot
在主机上启用安全引导。 - 11
- 指定节点的网络设置。
- 12
- 配置主机的 IPv6 地址。对于带有静态 IP 地址的单节点 OpenShift 集群,特定于节点的 API 和 Ingress IP 应该相同。
运行以下命令,通过处理修改后的
SiteConfig
CRsite-1-sno.yaml
来生成 day-0 安装 CR:$ podman run -it --rm -v `pwd`/out/argocd/example/siteconfig:/resources:Z -v `pwd`/site-install:/output:Z,U registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.10.1 generator install site-1-sno.yaml /output
输出示例
site-install └── site-1-sno ├── site-1_agentclusterinstall_example-sno.yaml ├── site-1-sno_baremetalhost_example-node1.example.com.yaml ├── site-1-sno_clusterdeployment_example-sno.yaml ├── site-1-sno_configmap_example-sno.yaml ├── site-1-sno_infraenv_example-sno.yaml ├── site-1-sno_klusterletaddonconfig_example-sno.yaml ├── site-1-sno_machineconfig_02-master-workload-partitioning.yaml ├── site-1-sno_machineconfig_predefined-extra-manifests-master.yaml ├── site-1-sno_machineconfig_predefined-extra-manifests-worker.yaml ├── site-1-sno_managedcluster_example-sno.yaml ├── site-1-sno_namespace_example-sno.yaml └── site-1-sno_nmstateconfig_example-node1.example.com.yaml
可选:使用
-E
选项处理参考SiteConfig
CR,只为特定集群类型生成 day-0MachineConfig
安装 CR。例如,运行以下命令:为
MachineConfig
CR 创建输出文件夹:$ mkdir -p ./site-machineconfig
生成
MachineConfig
安装 CR:$ podman run -it --rm -v `pwd`/out/argocd/example/siteconfig:/resources:Z -v `pwd`/site-machineconfig:/output:Z,U registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.10.1 generator install -E site-1-sno.yaml /output
输出示例
site-machineconfig └── site-1-sno ├── site-1-sno_machineconfig_02-master-workload-partitioning.yaml ├── site-1-sno_machineconfig_predefined-extra-manifests-master.yaml └── site-1-sno_machineconfig_predefined-extra-manifests-worker.yaml
使用上一步中的参考
PolicyGenTemplate
CR 生成并导出 day-2 配置 CR。运行以下命令:为 day-2 CR 创建输出文件夹:
$ mkdir -p ./ref
生成并导出第 2 天配置 CR:
$ podman run -it --rm -v `pwd`/out/argocd/example/policygentemplates:/resources:Z -v `pwd`/ref:/output:Z,U registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.10.1 generator config -N . /output
该命令在
./ref
文件夹中为单节点 OpenShift、三节点集群和标准集群生成示例组和特定于站点的PolicyGenTemplate
CR。输出示例
ref └── customResource ├── common ├── example-multinode-site ├── example-sno ├── group-du-3node ├── group-du-3node-validator │ └── Multiple-validatorCRs ├── group-du-sno ├── group-du-sno-validator ├── group-du-standard └── group-du-standard-validator └── Multiple-validatorCRs
- 使用生成的 CR 作为安装集群的 CR 的基础。您可以将安装 CR 应用到 hub 集群,如 "Installing a single managed cluster" 所述。配置 CR 可以在集群安装后应用到集群。
19.5.2. 创建受管裸机主机 secret
将受管裸机主机所需的 Secret
自定义资源 (CR) 添加到 hub 集群。您需要 ZTP 管道的 secret 来访问 Baseboard Management Controller (BMC) 和支持的安装程序服务的 secret,以便从 registry 中拉取集群安装镜像。
secret 按名称从 SiteConfig
CR 引用。命名空间必须与 SiteConfig
命名空间匹配。
流程
创建一个 YAML secret 文件,其中包含主机 Baseboard Management Controller (BMC) 和安装 OpenShift 和所有附加组件集群 Operator 所需的凭证:
将以下 YAML 保存为文件
example-sno-secret.yaml
:apiVersion: v1 kind: Secret metadata: name: example-sno-bmc-secret namespace: example-sno 1 data: 2 password: <base64_password> username: <base64_username> type: Opaque --- apiVersion: v1 kind: Secret metadata: name: pull-secret namespace: example-sno 3 data: .dockerconfigjson: <pull_secret> 4 type: kubernetes.io/dockerconfigjson
-
将到
example-sno-secret.yaml
的相对路径添加用于安装集群的kustomization.yaml
文件中。
19.5.3. 安装单个受管集群
您可以使用辅助服务和 Red Hat Advanced Cluster Management (RHACM) 手动部署单个受管集群。
先决条件
-
已安装 OpenShift CLI(
oc
)。 -
已以具有
cluster-admin
权限的用户身份登录到 hub 集群。 -
您已创建了基板管理控制器(BMC)
Secret
和镜像 pull-secretSecret
自定义资源 (CR)。详情请参阅"创建受管裸机主机 secret"。 - 您的目标裸机主机满足受管集群的网络和硬件要求。
流程
为要部署的每个特定集群版本创建一个
ClusterImageSet
,如clusterImageSet-4.10.yaml
。ClusterImageSet
具有以下格式:apiVersion: hive.openshift.io/v1 kind: ClusterImageSet metadata: name: openshift-4.10.0-rc.0 1 spec: releaseImage: quay.io/openshift-release-dev/ocp-release:4.10.0-x86_64 2
应用
clusterImageSet
CR:$ oc apply -f clusterImageSet-4.10.yaml
在
cluster-namespace.yaml
文件中创建Namespace
CR:apiVersion: v1 kind: Namespace metadata: name: <cluster_name> 1 labels: name: <cluster_name> 2
运行以下命令来应用
Namespace
CR:$ oc apply -f cluster-namespace.yaml
应用从
ztp-site-generate
容器中提取的生成的 day-0 CR,并自定义以满足您的要求:$ oc apply -R ./site-install/site-sno-1
其他资源
19.5.4. 监控受管集群安装状态
通过检查集群状态,确保集群置备成功。
先决条件
-
所有自定义资源都已配置并置备,在受管集群的 hub 上创建
Agent
自定义资源。
流程
检查受管集群的状态:
$ oc get managedcluster
True
表示受管集群已就绪。检查代理状态:
$ oc get agent -n <cluster_name>
使用
describe
命令,提供代理条件的深入描述。支持的状态包括BackendError
、InputError
、ValidationsFailing
、InFailed
和AgentIsConnected
。这些状态与Agent
和AgentClusterInstall
自定义资源相关。$ oc describe agent -n <cluster_name>
检查集群置备状态:
$ oc get agentclusterinstall -n <cluster_name>
使用
describe
命令提供集群置备状态的深入描述:$ oc describe agentclusterinstall -n <cluster_name>
检查受管集群的附加服务的状态:
$ oc get managedclusteraddon -n <cluster_name>
检索受管集群的
kubeconfig
文件的身份验证信息:$ oc get secret -n <cluster_name> <cluster_name>-admin-kubeconfig -o jsonpath={.data.kubeconfig} | base64 -d > <directory>/<cluster_name>-kubeconfig
19.5.5. 受管集群故障排除
使用这个流程诊断受管集群中可能出现的任何安装问题。
流程
检查受管集群的状态:
$ oc get managedcluster
输出示例
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE SNO-cluster true True True 2d19h
如果
AVAILABLE
列中的状态为True
,受管集群由 hub 管理。如果
AVAILABLE
列中的状态为Unknown
,则受管集群不会由 hub 管理。使用以下步骤继续检查 以了解更多信息。检查
AgentClusterInstall
安装状态:$ oc get clusterdeployment -n <cluster_name>
输出示例
NAME PLATFORM REGION CLUSTERTYPE INSTALLED INFRAID VERSION POWERSTATE AGE Sno0026 agent-baremetal false Initialized 2d14h
如果
INSTALLED
列中的状态为false
,则安装会失败。如果安装失败,请输入以下命令查看
AgentClusterInstall
资源的状态:$ oc describe agentclusterinstall -n <cluster_name> <cluster_name>
解决错误并重置集群:
删除集群的受管集群资源:
$ oc delete managedcluster <cluster_name>
删除集群的命名空间:
$ oc delete namespace <cluster_name>
这会删除为此集群创建的所有命名空间范围自定义资源。您必须等待
ManagedCluster
CR 删除完成,然后才能继续。- 为受管集群重新创建自定义资源。
19.5.6. RHACM 生成的集群安装 CR 参考
Red Hat Advanced Cluster Management (RHACM)支持在每个站点的 SiteConfig
CR 上部署 OpenShift Container Platform,以及带有特定安装自定义资源 (CR) 的 OpenShift Container Platform。
每个受管集群都有自己的命名空间,除 ManagedCluster
和 ClusterImageSet
以外的所有安装 CR 都位于该命名空间中。ManagedCluster
和 ClusterImageSet
是集群范围的,而不是命名空间范围的。命名空间和 CR 名称与集群名称匹配。
下表列出了在使用您配置的 SiteConfig
CR 安装集群时 RHACM 辅助服务自动应用的安装 CR。
CR | 描述 | 使用方法 |
---|---|---|
| 包含目标裸机主机 Baseboard Management Controller(BMC)的连接信息。 | 使用 Redfish 协议提供对 BMC 的访问在目标服务器上加载和引导发现镜像。 |
| 包含在目标裸机主机上安装 OpenShift Container Platform 的信息。 |
与 |
|
指定管理集群配置的详情,如网络和 control plane 节点的数量。安装完成后,显示集群 | 指定受管集群配置信息,并在安装集群期间提供状态。 |
|
引用要使用的 |
与 |
|
提供网络配置信息,如 | 为受管集群的 Kube API 服务器设置静态 IP 地址。 |
| 包含有关目标裸机主机的硬件信息。 | 当目标机器的发现镜像引导时,在 hub 上自动创建。 |
| 当集群由 hub 管理时,必须导入并已知的集群。此 Kubernetes 对象提供该接口。 | hub 使用这个资源来管理和显示受管集群的状态。 |
|
包含要部署到 |
告知 hub 部署到 |
|
hub 上已存在的 |
将资源传播到 |
|
创建两个 CR: |
|
| 包含 OpenShift Container Platform 镜像信息,如存储库和镜像名称。 | 传递给资源以提供 OpenShift Container Platform 镜像。 |