6.3. 在断开连接的环境中在裸机上部署托管的 control plane
当您在裸机上置备托管的 control plane 时,您可以使用 Agent 平台。Kubernetes Operator 的 Agent 平台和多集群引擎协同工作,以启用断开连接的部署。Agent 平台使用中央基础架构管理服务将 worker 节点添加到托管的集群中。有关中央基础架构管理服务简介,请参阅 启用中央基础架构管理服务。
6.3.1. 裸机的断开连接的环境架构 复制链接链接已复制到粘贴板!
下图演示了断开连接的环境的示例架构:
- 配置基础架构服务,包括带有 TLS 支持、Web 服务器和 DNS 的 registry 证书部署,以确保断开连接的部署正常工作。
在
openshift-config
命名空间中创建配置映射。在本例中,配置映射名为registry-config
。配置映射的内容是 Registry CA 证书。配置映射的 data 字段必须包含以下键/值:-
键:
<registry_dns_domain_name>..<port>
,例如registry.hypershiftdomain.lab..5000:
。在指定端口时,请确保在 registry DNS 域名后放置..
。 值: 证书内容
有关创建配置映射的更多信息,请参阅为托管 control plane 的断开连接的安装配置 TLS 证书。
-
键:
-
修改
images.config.openshift.io
自定义资源(CR)规格,并添加名为additionalTrustedCA
的新字段,值为name: registry-config
。 创建一个包含两个数据字段的配置映射。一个字段包含
RAW
格式的registries.conf
文件,另一个字段包含 Registry CA,并命名为ca-bundle.crt
。配置映射属于multicluster-engine
命名空间,配置映射名称在其他对象中引用。如需配置映射的示例,请参阅以下示例配置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在 multicluster engine Operator 命名空间中,您要创建
multiclusterengine
CR,该 CR 启用 Agent 和hypershift-addon
附加组件。multicluster engine Operator 命名空间必须包含配置映射才能修改断开连接的部署中的行为。命名空间还包含multicluster-engine
、assisted-service
和hypershift-addon-manager
pod。 创建部署托管集群所需的以下对象:
- secret :Secret 包含 pull secret、SSH 密钥和 etcd 加密密钥。
- 配置映射:配置映射包含私有 registry 的 CA 证书。
-
HostedCluster
:HostedCluster
资源定义用户创建的集群的配置。 -
NodePool
:NodePool
资源标识引用用于数据平面的机器的节点池。
-
创建托管集群对象后,HyperShift Operator 会建立
HostedControlPlane
命名空间来容纳 control plane pod。命名空间还托管组件,如 Agents、裸机主机 (BMH)和InfraEnv
资源。之后,您可以创建InfraEnv
资源,并在 ISO 创建后创建 BMH 及其包含基板管理控制器(BMC)凭证的 secret。 -
openshift-machine-api
命名空间中的 Metal3 Operator 会检查新的 BMH。然后,Metal3 Operator 会尝试连接到 BMC 来使用 multicluster engine Operator 命名空间中的AgentServiceConfig
CR 指定的LiveISO
和RootFS
值来启动它们。 -
启动
HostedCluster
资源的 worker 节点后,会启动一个 Agent 容器。此代理与 Assisted Service 建立联系人,它会编配操作以完成部署。最初,您需要将NodePool
资源扩展到HostedCluster
资源的 worker 节点数量。Assisted Service 管理剩余的任务。 - 此时,您需要等待部署过程完成。
6.3.2. 在断开连接的环境中在裸机上部署托管 control plane 的要求 复制链接链接已复制到粘贴板!
要在断开连接的环境中配置托管的 control plane,您必须满足以下先决条件:
- CPU:提供的 CPU 数量决定了并发运行多少个托管集群。通常,每个节点使用 16 个 CPU 用于 3 个节点。对于最小开发,您可以对 3 个节点使用 12 个 CPU。
- Memory :RAM 量会影响可以托管的托管集群的数量。每个节点使用 48 GB RAM。对于最小开发,18 GB RAM 可能已足够。
Storage:为多集群引擎 Operator 使用 SSD 存储。
- 管理集群: 250 GB.
- Registry:所需的存储取决于托管的发行版本、操作器和镜像的数量。一个可接受的数字可能是 500 GB,最好与托管托管集群的磁盘分开。
- Web 服务器:所需的存储取决于托管的 ISO 和镜像的数量。可接受的数字可能为 500 GB。
生产环境: 对于生产环境,将管理集群、registry 和 Web 服务器分开在不同的磁盘上。本例演示了生产环境的可能配置:
- Registry: 2 TB
- 管理集群:500 GB
- Web 服务器:2 TB
6.3.3. 提取发行镜像摘要 复制链接链接已复制到粘贴板!
您可以使用标记的镜像提取 OpenShift Container Platform 发行镜像摘要。
流程
运行以下命令来获取镜像摘要:
oc adm release info <tagged_openshift_release_image> | grep "Pull From"
$ oc adm release info <tagged_openshift_release_image> | grep "Pull From"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<tagged_openshift_release_image>
替换为支持的 OpenShift Container Platform 版本标记的镜像,如quay.io/openshift-release-dev/ocp-release:4.14.0-x8_64
。输出示例
Pull From: quay.io/openshift-release-dev/ocp-release@sha256:69d1292f64a2b67227c5592c1a7d499c7d00376e498634ff8e1946bc9ccdddfe
Pull From: quay.io/openshift-release-dev/ocp-release@sha256:69d1292f64a2b67227c5592c1a7d499c7d00376e498634ff8e1946bc9ccdddfe
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.3.4. 裸机上的 DNS 配置 复制链接链接已复制到粘贴板!
托管集群的 API 服务器作为 NodePort
服务公开。必须存在 api.<hosted_cluster_name>.<base_domain>
的 DNS 条目,它指向可以访问 API 服务器的目标。
DNS 条目可以作为记录,指向运行托管 control plane 管理集群中的一个节点。该条目也可以指向部署的负载均衡器,将传入的流量重定向到入口 pod。
DNS 配置示例
在上例中,*.apps.example.krnl.es。IN A 192.168.122.23
是托管的集群中的节点,如果已经配置了负载均衡器,则是一个负载均衡器。
如果您要为 IPv6 网络上的断开连接的环境配置 DNS,则配置类似以下示例。
IPv6 网络的 DNS 配置示例
如果您要为双栈网络上的断开连接的环境配置 DNS,请务必包括 IPv4 和 IPv6 的条目。
双栈网络的 DNS 配置示例
6.3.5. 在断开连接的环境中为托管的 control plane 部署 registry 复制链接链接已复制到粘贴板!
对于开发环境,使用 Podman 容器部署小型自托管的 registry。对于生产环境,部署企业托管的 registry,如 Red Hat Quay、Nexus 或 Artifactory。
流程
要使用 Podman 部署小 registry,请完成以下步骤:
以特权用户身份,访问
${HOME}
目录并创建以下脚本:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
PULL_SECRET
的位置替换为您设置的适当位置。
将脚本文件命名为
registry.sh
并保存。运行脚本时,它会拉取以下信息:- registry 名称,基于 hypervisor 主机名
- 所需的凭证和用户访问详情
通过添加执行标记来调整权限,如下所示:
chmod u+x ${HOME}/registry.sh
$ chmod u+x ${HOME}/registry.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要在没有任何参数的情况下运行脚本,请输入以下命令:
${HOME}/registry.sh
$ ${HOME}/registry.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 脚本将启动服务器。该脚本使用
systemd
服务来管理目的。如果需要管理该脚本,您可以使用以下命令:
systemctl status
$ systemctl status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl start
$ systemctl start
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl stop
$ systemctl stop
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
registry 的根目录位于 /opt/registry
目录中,包含以下子目录:
-
certs
包含 TLS 证书。 -
auth
包含凭据。 -
data
包含 registry 镜像。 -
conf
包含 registry 配置。
6.3.6. 在断开连接的环境中为托管 control plane 设置管理集群 复制链接链接已复制到粘贴板!
要设置 OpenShift Container Platform 管理集群,您需要确保安装了 Kubernetes Operator 的多集群引擎。multicluster engine Operator 在跨供应商部署集群时会扮演重要角色。
先决条件
- 管理集群和目标裸机主机(BMH)的 Baseboard Management Controller (BMH)之间必须有双向连接。另外,您还可通过代理提供商遵循 Boot it Yourself 方法。
托管的集群必须能够解析和访问管理集群主机名和 3.0.
apps
主机名的 API 主机名。以下是管理集群和 3.0.apps
主机名的 API 主机名示例:-
api.management-cluster.internal.domain.com
-
console-openshift-console.apps.management-cluster.internal.domain.com
-
管理集群必须能够解析和访问托管集群的 API 和
3.0.apps
主机名。以下是托管集群和*.apps
主机名的 API 主机名示例:-
api.sno-hosted-cluster-1.internal.domain.com
-
console-openshift-console.apps.sno-hosted-cluster-1.internal.domain.com
-
流程
- 在 OpenShift Container Platform 集群上安装 multicluster engine Operator 2.4 或更高版本。您可以从 OpenShift Container Platform OperatorHub 将 multicluster engine Operator 安装为 Operator。HyperShift Operator 包含在多集群引擎 Operator 中。有关安装多集群引擎 Operator 的更多信息,请参阅 Red Hat Advanced Cluster Management 文档中的"安装和升级多集群引擎 operator"。
- 确保安装了 HyperShift Operator。HyperShift Operator 会自动包含在多集群引擎 Operator 中,但如果您需要手动安装它,请按照"手动为 local-cluster 启用 hypershift-addon 受管集群附加组件 中的步骤操作"。
后续步骤
接下来,配置 Web 服务器。
6.3.7. 在断开连接的环境中为托管 control plane 配置 web 服务器 复制链接链接已复制到粘贴板!
您需要配置额外的 web 服务器来托管与您要部署为托管集群的 OpenShift Container Platform 版本关联的 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像。
流程
要配置 Web 服务器,请完成以下步骤:
输入以下命令从您要使用的 OpenShift Container Platform 发行版本中提取
openshift-install
二进制文件:oc adm -a ${LOCAL_SECRET_JSON} release extract --command=openshift-install \ "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}"
$ oc adm -a ${LOCAL_SECRET_JSON} release extract --command=openshift-install \ "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下脚本:该脚本在
/opt/srv
目录中创建文件夹。文件夹包含用于置备 worker 节点的 RHCOS 镜像。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
下载完成后,容器将运行以托管 Web 服务器上的镜像。容器使用官方 HTTPd 镜像的一种变体,它也能够与 IPv6 网络一起使用。
6.3.8. 在断开连接的环境中为托管 control plane 配置镜像镜像 复制链接链接已复制到粘贴板!
镜像镜像(mirror)是从外部 registry (如 registry.redhat.com
或 quay.io
)获取镜像的过程,并将其存储在私有 registry 中。
在以下步骤中,使用 oc-mirror
工具,它是一个使用 ImageSetConfiguration
对象的二进制文件。在文件中,您可以指定以下信息:
-
要镜像的 OpenShift Container Platform 版本。版本位于
quay.io
中。 - 要镜像的额外 Operator。单独选择软件包。
- 要添加到存储库中的额外镜像。
先决条件
- 在启动镜像过程前,请确保 registry 服务器正在运行。
流程
要配置镜像镜像,请完成以下步骤:
-
确保
${HOME}/.docker/config.json
文件已使用您要从镜像(mirror)的 registry 更新,并使用您要将镜像推送到的私有 registry。 通过使用以下示例,创建一个
ImageSetConfiguration
对象以用于镜像。根据需要替换值,使其与您的环境匹配:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令启动镜像过程:
oc-mirror --v2 --config imagesetconfig.yaml \ --workspace file://mirror-file docker://<registry>
$ oc-mirror --v2 --config imagesetconfig.yaml \ --workspace file://mirror-file docker://<registry>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 镜像过程完成后,您有一个名为
mirror-file
的新文件夹,其中包含ImageDigestMirrorSet
(IDMS)、ImageTagMirrorSet
(ITMS)和要应用到托管的集群的目录源。通过配置
imagesetconfig.yaml
文件,对 OpenShift Container Platform 的每日或 CI 版本进行镜像,如下所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您有部分断开连接的环境,请输入以下命令将镜像从镜像集配置镜像到 registry:
oc mirror -c imagesetconfig.yaml \ --workspace file://<file_path> docker://<mirror_registry_url> --v2
$ oc mirror -c imagesetconfig.yaml \ --workspace file://<file_path> docker://<mirror_registry_url> --v2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如需更多信息,请参阅"在部分断开连接的环境中镜像镜像集"。
如果您有一个完全断开连接的环境,请执行以下步骤:
输入以下命令将指定镜像设置配置中的镜像镜像到磁盘:
oc mirror -c imagesetconfig.yaml file://<file_path> --v2
$ oc mirror -c imagesetconfig.yaml file://<file_path> --v2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如需更多信息,请参阅"完全断开连接的环境中镜像设置"。
输入以下命令处理磁盘上的镜像集文件,并将内容镜像到目标镜像 registry:
oc mirror -c imagesetconfig.yaml \ --from file://<file_path> docker://<mirror_registry_url> --v2
$ oc mirror -c imagesetconfig.yaml \ --from file://<file_path> docker://<mirror_registry_url> --v2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 按照 在断开连接的网络中安装 中的步骤来镜像最新的多集群引擎 Operator 镜像。
6.3.9. 在管理集群中应用对象 复制链接链接已复制到粘贴板!
镜像过程完成后,您需要在管理集群中应用两个对象:
-
ImageContentSourcePolicy
(ICSP) 或ImageDigestMirrorSet
(IDMS) - 目录源
使用 oc-mirror
工具时,输出工件位于名为 oc-mirror-workspace/results-XXXXXX/
的文件夹。
ICSP 或 IDMS 启动 MachineConfig
更改,它不会重启您的节点,而是在每个节点上重启 kubelet。节点标记为 READY
后,您需要应用新生成的目录源。
目录源在 openshift-marketplace
Operator 中启动操作,如下载目录镜像并处理它来检索该镜像中包含的所有 PackageManifests
。
流程
要检查新源,请使用新的
CatalogSource
作为源运行以下命令:oc get packagemanifest
$ oc get packagemanifest
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要应用工件,请完成以下步骤:
输入以下命令创建 ICSP 或 IDMS 工件:
oc apply -f oc-mirror-workspace/results-XXXXXX/imageContentSourcePolicy.yaml
$ oc apply -f oc-mirror-workspace/results-XXXXXX/imageContentSourcePolicy.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 等待节点就绪,然后输入以下命令:
oc apply -f catalogSource-XXXXXXXX-index.yaml
$ oc apply -f catalogSource-XXXXXXXX-index.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
镜像 OLM 目录并配置托管集群以指向镜像。
当您使用
management
(默认)OLMCatalogPlacement 模式时,用于 OLM 目录的镜像流不会自动满足管理集群中 ICSP 中的覆盖信息。-
如果使用原始名称和标签将 OLM 目录正确镜像到内部 registry,请将
hypershift.openshift.io/olm-catalogs-is-registry-overrides
注解添加到HostedCluster
资源。格式为"sr1=dr1,sr2=dr2"
,其中源 registry 字符串是一个键,目标 registry 是一个值。 要绕过 OLM 目录镜像流机制,请使用
HostedCluster
资源上的以下四个注解直接指定用于 OLM Operator 目录的四个镜像的地址:-
hypershift.openshift.io/certified-operators-catalog-image
-
hypershift.openshift.io/community-operators-catalog-image
-
hypershift.openshift.io/redhat-marketplace-catalog-image
-
hypershift.openshift.io/redhat-operators-catalog-image
-
-
如果使用原始名称和标签将 OLM 目录正确镜像到内部 registry,请将
在这种情况下,镜像流不会被创建,您必须在 Operator 更新中刷新内部镜像以拉取(pull)时更新注解值。
后续步骤
通过完成 为托管 control plane 断开连接的安装部署多集群引擎 Operator 中的步骤来部署多集群引擎 Operator。
6.3.10. 部署 AgentServiceConfig 资源 复制链接链接已复制到粘贴板!
AgentServiceConfig
自定义资源是 Assisted Service add-on 的基本组件,它是 multicluster engine Operator 的一部分。它负责裸机集群部署。启用附加组件后,您将部署 AgentServiceConfig
资源来配置附加组件。
除了配置 AgentServiceConfig
资源外,还需要包含额外的配置映射,以确保多集群引擎 Operator 在断开连接的环境中正常工作。
流程
通过添加以下配置映射来配置自定义 registry,其中包含自定义部署断开连接的详情:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
dns.base.domain.name
替换为 DNS 基本域名。
对象包含两个字段:
- Custom CAs:此字段包含加载到部署不同进程的证书颁发机构(CA)。
-
Registry:
Registries.conf
字段包含有关需要从镜像 registry 而不是原始源 registry 使用的镜像和命名空间的信息。
通过添加
AssistedServiceConfig
对象来配置 Assisted Service,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
metadata.annotations["unsupported.agent-install.openshift.io/assisted-service-configmap"]
注解引用 Operator 使用的配置映射名称来自定义行为。- 2
spec.mirrorRegistryRef.name
注解指向包含 Assisted Service Operator 使用断开连接的 registry 信息的配置映射。此配置映射在部署过程中添加这些资源。- 3
spec.osImages
字段包含可供此 Operator 部署的不同版本。这个字段是必须的。本例假设您已下载了RootFS
和LiveISO
文件。- 4
- 为您要部署的每个 OpenShift Container Platform 版本添加
cpuArchitecture
子部分。在本例中,cpuArchitecture
子部分包含在 4.14 和 4.15 中。 - 5
- 在
rootFSUrl
和url
字段中,将dns.base.domain.name
替换为 DNS 基域名称。
通过将所有对象串联到一个文件中,并将它们应用到管理集群,以部署它们。要做到这一点,请输入以下命令:
oc apply -f agentServiceConfig.yaml
$ oc apply -f agentServiceConfig.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 命令会触发两个容器集。
输出示例
assisted-image-service-0 1/1 Running 2 11d assisted-service-668b49548-9m7xw 2/2 Running 5 11d
assisted-image-service-0 1/1 Running 2 11d
1 assisted-service-668b49548-9m7xw 2/2 Running 5 11d
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
配置 TLS 证书。
6.3.11. 为托管 control plane 的断开连接的安装配置 TLS 证书 复制链接链接已复制到粘贴板!
为确保断开连接的部署中正常工作,您需要在管理集群中配置 registry CA 证书,并为托管集群配置 worker 节点。
6.3.11.1. 将 registry CA 添加到管理集群中 复制链接链接已复制到粘贴板!
要将 registry CA 添加到管理集群中,请完成以下步骤。
流程
创建类似以下示例的配置映射:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对集群范围的对象
image.config.openshift.io
进行补丁,使其包含以下规格:spec: additionalTrustedCA: - name: registry-config
spec: additionalTrustedCA: - name: registry-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 因此,control plane 节点可以从私有 registry 检索镜像,HyperShift Operator 可以为托管集群部署提取 OpenShift Container Platform 有效负载。
修补对象的过程可能需要几分钟才能完成。
6.3.11.2. 将 registry CA 添加到托管集群的 worker 节点 复制链接链接已复制到粘贴板!
要让托管的集群中的 data plane worker 可以从私有 registry 检索镜像,您需要将 registry CA 添加到 worker 节点。
流程
在
hc.spec.additionalTrustBundle
文件中,添加以下规格:spec: additionalTrustBundle: - name: user-ca-bundle
spec: additionalTrustBundle: - name: user-ca-bundle
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
user-ca-bundle
条目是您在下一步中创建的配置映射。
在创建
HostedCluster
对象的同一命名空间中,创建user-ca-bundle
配置映射。配置映射类似以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定创建
HostedCluster
对象的命名空间。
6.3.12. 在裸机上创建托管集群 复制链接链接已复制到粘贴板!
托管的集群是一个 OpenShift Container Platform 集群,其 control plane 和 API 端点托管在管理集群中。托管的集群包括控制平面和它的对应的数据平面。
6.3.12.1. 部署托管集群对象 复制链接链接已复制到粘贴板!
通常,HyperShift Operator 会创建 HostedControlPlane
命名空间。但是,在这种情况下,您要在 HyperShift Operator 开始协调 HostedCluster
对象前包括所有对象。然后,当 Operator 启动协调过程时,它会找到所有对象。
流程
使用有关命名空间的以下信息创建 YAML 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个 YAML 文件,其中包含以下有关配置映射和 secret 的信息,以包含在
HostedCluster
部署中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建包含 RBAC 角色的 YAML 文件,以便 Assisted Service 代理可以与托管的 control plane 位于同一个
HostedControlPlane
命名空间中,并仍然由集群 API 管理:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个 YAML 文件,其中包含有关
HostedCluster
对象的信息,根据需要替换值:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
HostedCluster
对象中添加注解,指向 OpenShift Container Platform 发行版本中的 HyperShift Operator 发行版本:输入以下命令来获取镜像有效负载:
oc adm release info \ registry.<dns.base.domain.name>:5000/openshift-release-dev/ocp-release:<4.x.y>-x86_64 \ | grep hypershift
$ oc adm release info \ registry.<dns.base.domain.name>:5000/openshift-release-dev/ocp-release:<4.x.y>-x86_64 \ | grep hypershift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
<dns.base.domain.name>
是 DNS 基本域名,<4.x.y>
是您要使用的支持的 OpenShift Container Platform 版本。输出示例
hypershift sha256:31149e3e5f8c5e5b5b100ff2d89975cf5f7a73801b2c06c639bf6648766117f8
hypershift sha256:31149e3e5f8c5e5b5b100ff2d89975cf5f7a73801b2c06c639bf6648766117f8
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 OpenShift Container Platform Images 命名空间,输入以下命令检查摘要:
podman pull registry.<dns.base.domain.name>:5000/openshift-release-dev/ocp-v4.0-art-dev@sha256:31149e3e5f8c5e5b5b100ff2d89975cf5f7a73801b2c06c639bf6648766117f8
podman pull registry.<dns.base.domain.name>:5000/openshift-release-dev/ocp-v4.0-art-dev@sha256:31149e3e5f8c5e5b5b100ff2d89975cf5f7a73801b2c06c639bf6648766117f8
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
<dns.base.domain.name>
是 DNS 基本域名。输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow HostedCluster
对象中设置的发行镜像必须使用摘要而不是标签;例如,quay.io/openshift-release-dev/ocp-release@sha256:e3ba11bd1e5e8ea5a0b36a75791c90f29afb0fdbe4125be4e48f69c76a5c47a0
。
通过将 YAML 文件串联到一个文件中,并将它们应用到管理集群来创建它们。要做到这一点,请输入以下命令:
oc apply -f 01-4.14-hosted_cluster-nodeport.yaml
$ oc apply -f 01-4.14-hosted_cluster-nodeport.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当托管集群可用时,输出类似以下示例。
输出示例
NAMESPACE NAME VERSION KUBECONFIG PROGRESS AVAILABLE PROGRESSING MESSAGE clusters hosted-dual hosted-admin-kubeconfig Partial True False The hosted control plane is available
NAMESPACE NAME VERSION KUBECONFIG PROGRESS AVAILABLE PROGRESSING MESSAGE clusters hosted-dual hosted-admin-kubeconfig Partial True False The hosted control plane is available
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.3.12.2. 为托管集群创建 NodePool 对象 复制链接链接已复制到粘贴板!
NodePool
是与托管集群关联的一组可扩展的 worker 节点。NodePool
机器架构在特定池中保持一致,独立于 control plane 的机器架构。
流程
使用有关
NodePool
对象的以下信息创建 YAML 文件,根据需要替换值:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<hosted_cluster_name>
替换为您的托管集群。 - 2
- 将
<hosted_cluster_namespace>
替换为托管集群命名空间的名称。 - 3
autoRepair
字段设置为false
,因为如果删除了该节点,则不会重新创建该节点。- 4
upgradeType
设置为InPlace
,这表示在升级过程中重复使用相同的裸机节点。- 5
- 此
NodePool
中包含的所有节点都基于以下 OpenShift Container Platform 版本:4.x.y-x86_64
。将<dns.base.domain.name>
值替换为您的 DNS 基本域名,并将4.x.y
值替换为您要使用的支持的 OpenShift Container Platform 版本。 - 6
- 您可以将
replicas
值设置为2
,以在托管集群中创建两个节点池副本。
运行以下命令来创建
NodePool
对象:oc apply -f 02-nodepool.yaml
$ oc apply -f 02-nodepool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAMESPACE NAME CLUSTER DESIRED NODES CURRENT NODES AUTOSCALING AUTOREPAIR VERSION UPDATINGVERSION UPDATINGCONFIG MESSAGE clusters hosted-dual hosted 0 False False 4.x.y-x86_64
NAMESPACE NAME CLUSTER DESIRED NODES CURRENT NODES AUTOSCALING AUTOREPAIR VERSION UPDATINGVERSION UPDATINGCONFIG MESSAGE clusters hosted-dual hosted 0 False False 4.x.y-x86_64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.3.12.3. 为托管集群创建 InfraEnv 资源 复制链接链接已复制到粘贴板!
InfraEnv
资源是一个 Assisted Service 对象,其中包含重要详情,如 pullSecretRef
和 sshAuthorizedKey
。这些详情用于创建为托管集群自定义的 Red Hat Enterprise Linux CoreOS (RHCOS) 引导镜像。
您可以托管多个 InfraEnv
资源,各自采用特定类型的主机。例如,您可能想要在具有更大 RAM 容量的主机间划分服务器场。
流程
使用以下有关
InfraEnv
资源的信息创建一个 YAML 文件,根据需要替换值:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
InfraEnv
资源:oc apply -f 03-infraenv.yaml
$ oc apply -f 03-infraenv.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAMESPACE NAME ISO CREATED AT clusters-hosted-dual hosted 2023-09-11T15:14:10Z
NAMESPACE NAME ISO CREATED AT clusters-hosted-dual hosted 2023-09-11T15:14:10Z
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.3.12.4. 为托管集群创建裸机主机 复制链接链接已复制到粘贴板!
裸机主机 是一个 openshift-machine-api
对象,其中包含物理和逻辑详情,以便它可以被 Metal3 Operator 识别。这些详细信息与其他 Assisted Service 对象关联,称为代理(agent)。
先决条件
- 在创建裸机主机和目标节点前,您必须让目标机器就绪。
- 您已在裸机基础架构上安装了 Red Hat Enterprise Linux CoreOS (RHCOS) 计算机器,以便在集群中使用。
流程
要创建裸机主机,请完成以下步骤:
使用以下信息创建 YAML 文件:有关为裸机主机输入的详情的更多信息,请参阅使用 BMO"在用户置备的集群中配置新主机"。
因为至少有一个 secret 包含裸机主机凭证,所以您需要为每个 worker 节点至少创建两个对象。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<hosted_cluster_name>
替换为您的托管集群。 - 2 5
- 将
<hosted_cluster_name>
替换为您的托管集群。将<hosted_cluster_namespace>
替换为托管集群命名空间的名称。 - 3
- 以 Base64 格式指定基板管理控制器(BMC)的密码。
- 4
- 以 Base64 格式指定 BMC 的用户名。
- 6
- 将
<hosted_cluster_name>
替换为您的托管集群。infraenvs.agent-install.openshift.io
字段充当 Assisted Installer 和BareMetalHost
对象之间的链接。 - 7
- 将
<hosted_cluster_name>
替换为您的托管集群。bmac.agent-install.openshift.io/hostname
字段表示部署期间采用的节点名称。 - 8
automatedCleaningMode
字段可防止 Metal3 Operator 擦除节点。- 9
disableCertificateVerification
字段设为true
,以从客户端绕过证书验证。- 10
- 将
<hosted_cluster_name>
替换为您的托管集群。address
字段表示 worker 节点的 BMC 地址。 - 11
- 将
<hosted_cluster_name>
替换为您的托管集群。credentialsName
字段指向存储用户和密码凭证的 secret。 - 12
bootMACAddress
字段指示节点从其启动的接口 MAC 地址。- 13
online
字段定义在BareMetalHost
对象创建后节点的状态。
输入以下命令部署
BareMetalHost
对象:oc apply -f 04-bmh.yaml
$ oc apply -f 04-bmh.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在此过程中,您可以查看以下输出:
此输出显示进程正在尝试访问节点:
输出示例
NAMESPACE NAME STATE CONSUMER ONLINE ERROR AGE clusters-hosted hosted-worker0 registering true 2s clusters-hosted hosted-worker1 registering true 2s clusters-hosted hosted-worker2 registering true 2s
NAMESPACE NAME STATE CONSUMER ONLINE ERROR AGE clusters-hosted hosted-worker0 registering true 2s clusters-hosted hosted-worker1 registering true 2s clusters-hosted hosted-worker2 registering true 2s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此输出显示节点正在启动:
输出示例
NAMESPACE NAME STATE CONSUMER ONLINE ERROR AGE clusters-hosted hosted-worker0 provisioning true 16s clusters-hosted hosted-worker1 provisioning true 16s clusters-hosted hosted-worker2 provisioning true 16s
NAMESPACE NAME STATE CONSUMER ONLINE ERROR AGE clusters-hosted hosted-worker0 provisioning true 16s clusters-hosted hosted-worker1 provisioning true 16s clusters-hosted hosted-worker2 provisioning true 16s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此输出显示节点成功启动:
输出示例
NAMESPACE NAME STATE CONSUMER ONLINE ERROR AGE clusters-hosted hosted-worker0 provisioned true 67s clusters-hosted hosted-worker1 provisioned true 67s clusters-hosted hosted-worker2 provisioned true 67s
NAMESPACE NAME STATE CONSUMER ONLINE ERROR AGE clusters-hosted hosted-worker0 provisioned true 67s clusters-hosted hosted-worker1 provisioned true 67s clusters-hosted hosted-worker2 provisioned true 67s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
节点启动后,注意命名空间中的代理,如下例所示:
输出示例
NAMESPACE NAME CLUSTER APPROVED ROLE STAGE clusters-hosted aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0411 true auto-assign clusters-hosted aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0412 true auto-assign clusters-hosted aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0413 true auto-assign
NAMESPACE NAME CLUSTER APPROVED ROLE STAGE clusters-hosted aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0411 true auto-assign clusters-hosted aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0412 true auto-assign clusters-hosted aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0413 true auto-assign
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 代理代表可用于安装的节点。要将节点分配给托管集群,请扩展节点池。
6.3.12.5. 扩展节点池 复制链接链接已复制到粘贴板!
创建裸机主机后,其状态会从 Registering
变为 Provisioning
再变为 Provisioned
。节点以代理的 LiveISO
开头,以及名为 agent
的默认 pod。该代理负责从 Assisted Service Operator 接收说明来安装 OpenShift Container Platform 有效负载。
流程
要扩展节点池,请输入以下命令:
oc -n <hosted_cluster_namespace> scale nodepool <hosted_cluster_name> \ --replicas 3
$ oc -n <hosted_cluster_namespace> scale nodepool <hosted_cluster_name> \ --replicas 3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
-
<hosted_cluster_namespace>
是托管集群命名空间的名称。 -
<hosted_cluster_name>
是托管集群的名称。
-
在扩展过程完成后,请注意代理被分配给托管集群:
输出示例
NAMESPACE NAME CLUSTER APPROVED ROLE STAGE clusters-hosted aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0411 hosted true auto-assign clusters-hosted aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0412 hosted true auto-assign clusters-hosted aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0413 hosted true auto-assign
NAMESPACE NAME CLUSTER APPROVED ROLE STAGE clusters-hosted aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0411 hosted true auto-assign clusters-hosted aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0412 hosted true auto-assign clusters-hosted aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0413 hosted true auto-assign
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另请注意,节点池副本已设置:
输出示例
NAMESPACE NAME CLUSTER DESIRED NODES CURRENT NODES AUTOSCALING AUTOREPAIR VERSION UPDATINGVERSION UPDATINGCONFIG MESSAGE clusters hosted hosted 3 False False <4.x.y>-x86_64 Minimum availability requires 3 replicas, current 0 available
NAMESPACE NAME CLUSTER DESIRED NODES CURRENT NODES AUTOSCALING AUTOREPAIR VERSION UPDATINGVERSION UPDATINGCONFIG MESSAGE clusters hosted hosted 3 False False <4.x.y>-x86_64 Minimum availability requires 3 replicas, current 0 available
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<4.x.y>
替换为您要使用支持的 OpenShift Container Platform 版本。- 等待节点加入集群。在此过程中,代理会为其阶段和状态提供更新。