16.4. 部署单节点 OpenShift 集群
16.4.1. 关于用于管理的单节点 OpenShift 的基于镜像的部署 复制链接链接已复制到粘贴板!
当使用基于镜像的安装预装了单节点 OpenShift 的主机时,技术人员可以在几分钟内轻松重新配置和部署主机。
对于具有 hub-and-spoke 架构的集群,要完成预安装主机的部署,您必须首先为每个主机在 hub 集群上定义特定于站点的配置资源。这些资源包含配置信息,如裸机主机的属性、身份验证详情和其他部署和网络信息。
Image Based Install (IBI) Operator 从这些资源创建一个配置 ISO,然后使用附加配置 ISO 启动主机。主机挂载配置 ISO 并运行重新配置过程。重新配置完成后,单节点 OpenShift 集群已就绪。
您必须为每个裸机主机创建不同的配置资源。
请参阅以下高级别步骤,在带有 hub-and-spoke 架构的集群中部署预安装的主机:
- 在 hub 集群上安装 IBI Operator。
- 在 hub 集群中为每个主机创建特定于站点的配置资源。
- IBI Operator 从这些资源创建配置 ISO,并使用附加配置 ISO 启动目标主机。
- 主机挂载配置 ISO 并运行重新配置过程。重新配置完成后,单节点 OpenShift 集群已就绪。
另外,您可以手动为集群部署预安装的主机,而无需使用 hub 集群。您必须定义 ImageBasedConfig
资源和安装清单,并将其作为 openshift-install
安装程序的输入。如需更多信息,请参阅"使用 openshift-install
程序部署单节点 OpenShift 集群"。
16.4.1.1. 安装 Image Based Install Operator 复制链接链接已复制到粘贴板!
Image Based Install (IBI) Operator 是裸机主机上预安装的单节点 OpenShift 部署工作流的一部分。
IBI Operator 是 MCE 版本 2.7 的 Kubernetes Operator 的多集群引擎的一部分。
先决条件
-
以具有
cluster-admin
权限的用户身份登录。 - 您已部署了 Red Hat Advanced Cluster Management (RHACM) hub 集群,或为 Kubernetes Operator 部署多集群引擎。
- 您在"基于镜像安装的软件先决条件"部分中查看了所需的软件组件版本。
流程
运行以下命令,将
MultiClusterEngine
资源中image-based-install-operator
组件的enabled
规格设置为true
:oc patch multiclusterengines.multicluster.openshift.io multiclusterengine --type json \ --patch '[{"op": "add", "path":"/spec/overrides/components/-", "value": {"name":"image-based-install-operator","enabled": true}}]'
$ oc patch multiclusterengines.multicluster.openshift.io multiclusterengine --type json \ --patch '[{"op": "add", "path":"/spec/overrides/components/-", "value": {"name":"image-based-install-operator","enabled": true}}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,检查 Image Based Install Operator pod 是否正在运行:
oc get pods -A | grep image-based
$ oc get pods -A | grep image-based
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
multicluster-engine image-based-install-operator-57fb8sc423-bxdj8 2/2 Running 0 5m
multicluster-engine image-based-install-operator-57fb8sc423-bxdj8 2/2 Running 0 5m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
16.4.1.2. 使用 IBI Operator 部署受管单节点 OpenShift 集群 复制链接链接已复制到粘贴板!
在 hub 集群中创建特定于站点的配置资源,以启动预安装主机的基于镜像的部署。
当您在 hub 集群中创建这些配置资源时,Image Based Install (IBI) Operator 会生成配置 ISO,并将其附加到目标主机以开始特定于站点的配置过程。配置过程完成后,单节点 OpenShift 集群已就绪。
有关在 hub 集群中配置配置资源的更多信息,请参阅"用于部署预安装主机的集群配置资源"。
先决条件
- 已使用基于镜像的安装,预安装了单节点 OpenShift 的主机。
-
以具有
cluster-admin
权限的用户身份登录。 - 您已部署了 Red Hat Advanced Cluster Management (RHACM) hub 集群,或部署了 multicluster engine for Kubernetes operator (MCE)。
- 您已在 hub 集群上安装了 IBI Operator。
- 您创建了 pull secret 以验证拉取请求。如需更多信息,请参阅"使用镜像 pull secret"。
流程
运行以下命令来创建
ibi-ns
命名空间:oc create namespace ibi-ns
$ oc create namespace ibi-ns
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为您的镜像 registry 创建
Secret
资源:创建为镜像 registry 定义
Secret
资源的 YAML 文件:secret-image-registry.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 您必须提供 base64 编码的凭证详情。有关使用镜像 pull secret 的更多信息,请参阅"添加资源"部分。
运行以下命令,为您的镜像 registry 创建
Secret
资源:oc create -f secret-image-registry.yaml
$ oc create -f secret-image-registry.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
可选:为主机配置静态网络:
以
nmstate
格式创建一个包含静态网络配置的Secret
资源:host-network-config-secret.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建
BareMetalHost
和Secret
资源:创建定义
BareMetalHost
和Secret
资源的 YAML 文件:ibi-bmh.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定
BareMetalHost
资源的名称。 - 2
- 指定主机是否应在线。
- 3
- 指定主机引导 MAC 地址。
- 4
- 指定 BMC 地址。您只能使用支持虚拟介质网络引导的裸机主机驱动程序,如 redfish-virtualmedia 和 idrac-virtualmedia。
- 5
- 指定裸机主机
Secret
资源的名称。 - 6
- 可选:如果您需要主机静态网络配置,请指定包含配置的
Secret
资源的名称。 - 7
- 您必须指定
automatedCleaningMode:disabled
,以防止置备服务在磁盘检查过程中删除所有预安装工件,如 seed 镜像。 - 8
- 您必须指定
externallyProvisioned: true
,才能启用主机从预安装的磁盘引导,而不是配置 ISO。 - 9
- 指定
Secret
资源的名称。 - 10
- 指定用户名。
- 11
- 指定密码。
运行以下命令来创建
BareMetalHost
和Secret
资源:oc create -f ibi-bmh.yaml
$ oc create -f ibi-bmh.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建
ClusterImageSet
资源:创建定义
ClusterImageSet
资源的 YAML 文件:ibi-cluster-image-set.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
ClusterImageSet
资源:oc apply -f ibi-cluster-image-set.yaml
$ oc apply -f ibi-cluster-image-set.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建
ImageClusterInstall
资源:创建定义
ImageClusterInstall
资源的 YAML 文件:ibi-image-cluster-install.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要如果您的集群部署需要代理配置,您必须执行以下操作:
- 从带有代理配置的 seed 集群创建 seed 镜像。代理配置不必相互匹配。
-
在安装清单中配置
machineNetwork
字段。
运行以下命令来创建
ImageClusterInstall
资源:oc create -f ibi-image-cluster-install.yaml
$ oc create -f ibi-image-cluster-install.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建
ClusterDeployment
资源:创建定义
ClusterDeployment
资源的 YAML 文件:ibi-cluster-deployment.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
ClusterDeployment
资源:oc apply -f ibi-cluster-deployment.yaml
$ oc apply -f ibi-cluster-deployment.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建
ManagedCluster
资源:创建定义
ManagedCluster
资源的 YAML 文件:ibi-managed.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
ManagedCluster
资源:oc apply -f ibi-managed.yaml
$ oc apply -f ibi-managed.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,检查 hub 集群中
ImageClusterInstall
的状态,以监控目标主机安装的进度:oc get imageclusterinstall
$ oc get imageclusterinstall
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME REQUIREMENTSMET COMPLETED BAREMETALHOSTREF target-0 HostValidationSucceeded ClusterInstallationSucceeded ibi-bmh
NAME REQUIREMENTSMET COMPLETED BAREMETALHOSTREF target-0 HostValidationSucceeded ClusterInstallationSucceeded ibi-bmh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告如果
ImageClusterInstall
资源被删除,IBI Operator 会重新附加BareMetalHost
资源并重启机器。安装完成后,您可以运行以下命令来检索
kubeconfig
secret 以登录到受管集群:oc extract secret/<cluster_name>-admin-kubeconfig -n <cluster_namespace> --to - > <directory>/<cluster_name>-kubeconfig
$ oc extract secret/<cluster_name>-admin-kubeconfig -n <cluster_namespace> --to - > <directory>/<cluster_name>-kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<cluster_name>
是集群的名称。 -
<cluster_namespace>
是集群的命名空间。 -
<directory>
是在其中创建文件的目录。
-
16.4.1.2.1. 用于部署预安装主机的集群配置资源 复制链接链接已复制到粘贴板!
要在远程站点完成预安装主机的部署,您必须在 hub 集群中为每个裸机主机配置以下特定于站点的集群配置资源。
资源 | 描述 |
---|---|
| 受管单节点 OpenShift 集群的命名空间。 |
| 描述物理主机及其属性,如置备和硬件配置。 |
裸机主机的 | 主机 BMC 的凭证。 |
裸机主机静态网络配置的 | 可选:描述目标主机的静态网络配置。 |
镜像 registry 的 |
镜像 registry 的凭证。镜像 registry 的 secret 必须是 |
| 引用裸机主机、部署和镜像设置资源。 |
| 描述用于集群的发行镜像。 |
| 描述网络、身份验证和特定于平台的设置。 |
| 描述启用 Red Hat Advanced Cluster Management (RHACM) 来注册和管理的集群详情。 |
| 可选:描述集群部署的额外配置,如为主机添加可信证书的捆绑包,以确保集群服务的可信通信。 |
16.4.1.2.2. ImageClusterInstall 资源 API 规格 复制链接链接已复制到粘贴板!
以下内容描述了 ImageClusterInstall
资源的 API 规格。此资源是 Image Based Install Operator 的端点。
规格 | 类型 | 描述 |
---|---|---|
|
|
指定为部署定义发行镜像的 |
|
| 指定集群的主机名。 |
|
| 指定 SSH 密钥,以提供到目标主机的 SSH 访问。 |
规格 | 类型 | 描述 |
---|---|---|
|
|
指定要用于目标主机的镜像安装的 |
|
|
部署完成后,此规格会自动填充有关集群的元数据信息,包括用于登录到集群的 |
|
| 指定 release-image 内容的源或软件仓库,例如: imageDigestSources: - mirrors: - "registry.example.com:5000/ocp4/openshift4" source: "quay.io/openshift-release-dev/ocp-release"
|
|
|
指定包含要应用到目标集群的额外清单的 |
|
|
指定用于集群部署的 |
|
| 指定外部网络的公共 CIDR (Classless Inter-Domain Routing)。 |
|
| 指定集群的代理设置,例如: proxy: httpProxy: "http://proxy.example.com:8080" httpsProxy: "http://proxy.example.com:8080" noProxy: "no_proxy.example.com"
|
|
|
指定包含主机可信证书捆绑包的 |
16.4.1.3. 额外清单的 ConfigMap 资源 复制链接链接已复制到粘贴板!
您可以选择创建 ConfigMap
资源,为受管单节点 OpenShift 集群在基于镜像的部署中定义其他清单。
创建 ConfigMap
资源后,在 ImageClusterInstall
资源中引用它。在部署过程中,IBI Operator 在部署中包括额外的清单。
16.4.1.3.1. 创建 ConfigMap 资源以在基于镜像的部署中添加额外的清单 复制链接链接已复制到粘贴板!
您可以使用 ConfigMap
资源在单节点 OpenShift 集群的基于镜像的部署中添加额外的清单。
以下示例将单根 I/O 虚拟化 (SR-IOV) 网络添加到部署中。
额外清单的文件名不能超过 30 个字符。长的文件名可能会导致部署失败。
先决条件
- 已使用基于镜像的安装,预安装了单节点 OpenShift 的主机。
-
以具有
cluster-admin
权限的用户身份登录。
流程
创建
SriovNetworkNodePolicy
和SriovNetwork
资源:创建定义资源的 YAML 文件:
sriov-extra-manifest.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
ConfigMap
资源:oc create configmap sr-iov-extra-manifest --from-file=sriov-extra-manifest.yaml -n ibi-ns
$ oc create configmap sr-iov-extra-manifest --from-file=sriov-extra-manifest.yaml -n ibi-ns
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定具有
ImageClusterInstall
资源的命名空间。
输出示例
configmap/sr-iov-extra-manifest created
configmap/sr-iov-extra-manifest created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果添加多个额外清单,且清单必须按照特定顺序应用,则必须为代表所需顺序的清单的文件名添加前缀。例如:
00-namespace.yaml
,01-sriov-extra-manifest.yaml
,等等。
在
ImageClusterInstall
资源的spec.extraManifestsRefs
字段中引用ConfigMap
资源:#... spec: extraManifestsRefs: - name: sr-iov-extra-manifest #...
#... spec: extraManifestsRefs: - name: sr-iov-extra-manifest #...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
16.4.1.3.2. 创建 ConfigMap 资源,以便在基于镜像的部署中添加 CA 捆绑包 复制链接链接已复制到粘贴板!
您可以使用 ConfigMap
资源将证书颁发机构(CA)捆绑包添加到主机,以确保集群服务的可信通信。
创建 ConfigMap
资源后,在 ImageClusterInstall
资源的 spec.caBundleRef
字段中引用它。
先决条件
- 已使用基于镜像的安装,预安装了单节点 OpenShift 的主机。
-
以具有
cluster-admin
权限的用户身份登录。
流程
创建名为
tls-ca-bundle.pem
的 CA 捆绑包文件:tls-ca-bundle.pem
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
ConfigMap
对象:oc create configmap custom-ca --from-file=tls-ca-bundle.pem -n ibi-ns
$ oc create configmap custom-ca --from-file=tls-ca-bundle.pem -n ibi-ns
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
custom-ca
指定ConfigMap
资源的名称。 -
tls-ca-bundle.pem
定义ConfigMap
资源中data
条目的密钥。您需要包括一个带有tls-ca-bundle.pem
键的data
条目。 ibi-ns
指定具有ImageClusterInstall
资源的命名空间。输出示例
configmap/custom-ca created
configmap/custom-ca created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
在
ImageClusterInstall
资源的spec.caBundleRef
字段中引用ConfigMap
资源:#... spec: caBundleRef: name: custom-ca #...
#... spec: caBundleRef: name: custom-ca #...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
16.4.2. 关于单节点 OpenShift 的基于镜像的部署 复制链接链接已复制到粘贴板!
您可以使用 openshift-install
程序手动生成配置 ISO。将配置 ISO 附加到预安装的目标主机以完成部署。
16.4.2.1. 使用 openshift-install 程序部署单节点 OpenShift 集群 复制链接链接已复制到粘贴板!
您可以使用 openshift-install
程序配置和部署预安装了基于镜像的安装的主机。要使用特定于站点的详情配置目标主机,您必须创建以下资源:
-
install-config.yaml
安装清单 -
image-based-config.yaml
清单
openshift-install
程序使用这些资源来生成一个配置 ISO,您将它附加到预安装的目标主机来完成部署。
如需有关 image-based-config.yaml
清单规格的更多信息,请参阅"image-based-config.yaml manifest 清单参考规格"。
先决条件
- 已使用基于镜像的安装,预安装了单节点 OpenShift 的主机。
-
下载了
openshift-install
程序的最新版本。 - 您创建了 pull secret 以验证拉取请求。如需更多信息,请参阅"使用镜像 pull secret"。
流程
运行以下命令来创建工作目录:
mkdir ibi-config-iso-workdir
$ mkdir ibi-config-iso-workdir
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
ibi-config-iso-workdir
替换为工作目录的名称。
创建安装清单:
创建定义
install-config
清单的 YAML 文件:install-config.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要如果您的集群部署需要代理配置,您必须执行以下操作:
- 从带有代理配置的 seed 集群创建 seed 镜像。代理配置不必相互匹配。
- 在安装清单中配置 machineNetwork 字段。
- 将文件保存到工作目录中。
可选。运行以下命令,在工作目录中创建配置模板:
openshift-install image-based create config-template --dir ibi-config-iso-workdir/
$ openshift-install image-based create config-template --dir ibi-config-iso-workdir/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
INFO Config-Template created in: ibi-config-iso-workdir
INFO Config-Template created in: ibi-config-iso-workdir
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该命令在工作目录中创建
image-based-config.yaml
配置模板:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑配置文件:
image-based-config.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,在工作目录中创建配置 ISO:
openshift-install image-based create config-image --dir ibi-config-iso-workdir/
$ openshift-install image-based create config-image --dir ibi-config-iso-workdir/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
INFO Adding NMConnection file <ens1f0.nmconnection> INFO Consuming Install Config from target directory INFO Consuming Image-based Config ISO configuration from target directory INFO Config-Image created in: ibi-config-iso-workdir/auth
INFO Adding NMConnection file <ens1f0.nmconnection> INFO Consuming Install Config from target directory INFO Consuming Image-based Config ISO configuration from target directory INFO Config-Image created in: ibi-config-iso-workdir/auth
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看工作目录中的输出:
输出示例
ibi-config-iso-workdir/ ├── auth │ ├── kubeadmin-password │ └── kubeconfig └── imagebasedconfig.iso
ibi-config-iso-workdir/ ├── auth │ ├── kubeadmin-password │ └── kubeconfig └── imagebasedconfig.iso
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
使用您首选的方法将
imagebasedconfig.iso
附加到预安装的主机,然后重新启动主机以完成配置过程并部署集群。
验证
当配置过程在主机上完成时,访问集群以验证其状态。
运行以下命令,将
kubeconfig
环境变量导出到 kubeconfig 文件中:export KUBECONFIG=ibi-config-iso-workdir/auth/kubeconfig
$ export KUBECONFIG=ibi-config-iso-workdir/auth/kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证集群是否响应:
oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME STATUS ROLES AGE VERSION node/sno-cluster-name.host.example.com Ready control-plane,master 5h15m v1.30.3
NAME STATUS ROLES AGE VERSION node/sno-cluster-name.host.example.com Ready control-plane,master 5h15m v1.30.3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
16.4.2.1.1. image-based-config.yaml 清单的规格参考 复制链接链接已复制到粘贴板!
以下内容介绍了 image-based-config.yaml
清单的规格。
openshift-install
程序使用 image-based-config.yaml
清单为基于镜像的单节点 OpenShift 部署创建特定于站点的配置 ISO。
规格 | 类型 | 描述 |
---|---|---|
|
| 为单节点 OpenShift 集群定义节点的名称。 |
规格 | 类型 | 描述 |
---|---|---|
|
| 指定主机的网络配置,例如:
如果需要静态网络,您必须在创建实时安装 ISO 的主机上安装 重要 接口的名称必须与操作系统中显示的实际 NIC 名称匹配。 |
|
| 指定所有集群主机的 NTP 源列表。这些 NTP 源会添加到集群中的任何现有 NTP 源中。您可以将主机名或 IP 地址用于 NTP 源。 |
|
| 指定用于 seed 集群的发行镜像的容器镜像 registry。 |
|
| 为单节点 OpenShift 节点指定自定义节点标签,例如: nodeLabels: node-role.kubernetes.io/edge: true environment: production
|
16.4.2.2. 为额外清单配置资源 复制链接链接已复制到粘贴板!
您可以选择为单节点 OpenShift 集群在基于镜像的部署中定义其他资源。
在具有相同工作目录中的 extra-manifests
文件夹中创建其他资源,该资源具有 install-config.yaml
和 基于镜像的-config.yaml
清单。
extra-manifests
目录中其他资源的文件名不能超过 30 个字符。长的文件名可能会导致部署失败。
16.4.2.2.1. 在 extra-manifests 文件夹中创建资源 复制链接链接已复制到粘贴板!
您可以在工作目录的 extra-manifests
文件夹中创建资源,以便在单节点 OpenShift 集群的基于镜像的部署中添加额外的清单。
以下示例将单根 I/O 虚拟化 (SR-IOV) 网络添加到部署中。
如果添加多个额外清单,且清单必须按照特定顺序应用,则必须为代表所需顺序的清单的文件名添加前缀。例如: 00-namespace.yaml
,01-sriov-extra-manifest.yaml
,等等。
先决条件
-
已使用
install-config.yaml
和image-based-config.yaml
清单创建了工作目录
流程
进入您的工作目录并创建
extra-manifests
文件夹:mkdir extra-manifests
$ mkdir extra-manifests
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
extra-manifests
文件夹中创建SriovNetworkNodePolicy
和SriovNetwork
资源:创建定义资源的 YAML 文件:
sriov-extra-manifest.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
在创建配置 ISO 时,您可以在工作目录中查看
.openshift_install_state.json
文件中的额外清单的引用:Copy to Clipboard Copied! Toggle word wrap Toggle overflow