1.5. 集群生命周期简介
multicluster engine operator 是集群生命周期 Operator,它为 OpenShift Container Platform 和 Red Hat Advanced Cluster Management hub 集群提供集群管理功能。multicluster engine operator 是一个软件 Operator,它增强了集群集管理,并支持跨云和数据中心的 OpenShift Container Platform 集群生命周期管理。您可以在没有 Red Hat Advanced Cluster Management 的情况下使用 multicluster engine operator。Red Hat Advanced Cluster Management 还自动安装多集群引擎 operator,并提供进一步的多集群功能。
请参阅以下文档:
1.5.1. 集群生命周期架构
集群生命周期可以识别两种类型的集群:hub clusters 和 managed clusters。
hub 集群是带有 multicluster engine operator 的 OpenShift Container Platform (或 Red Hat Advanced Cluster Management)主集群。您可以使用 hub 集群创建、管理和监控其他 Kubernetes 集群。您可以使用 hub 集群创建集群,同时也可以导入现有集群由 hub 集群管理。
在创建受管集群时,集群会使用 Hive 资源的 Red Hat OpenShift Container Platform 集群安装程序创建集群。您可以通过阅读 OpenShift Container Platform 文档中的 OpenShift Container Platform 安装概述来了解更多有关使用 OpenShift Container Platform 安装程序安装 集群的过程的信息。
下图显示了为集群管理的 multicluster engine 安装的组件:
集群生命周期管理架构的组件包括以下项目:
1.5.1.1. hub 集群
- 受管集群导入控制器将 klusterlet Operator 部署到受管集群。
- Hive 控制器使用 Kubernetes operator 的多集群引擎置备您创建的集群。Hive Controller 还销毁由 Kubernetes operator 的多集群引擎创建的受管集群。
- 集群 curator 控制器将 Ansible 作业创建为 pre-hook 或 post-hook,以便在创建或升级受管集群时配置集群基础架构环境。
- 当在 hub 集群中启用了受管集群附加组件时,会在 hub 集群中部署其 附加组件 hub 控制器。附加组件 hub 控制器将 附加组件代理 部署到受管集群。
1.5.1.2. 受管集群(managed cluster)
- klusterlet Operator 在受管集群中部署注册和工作控制器。
Registration Agent 将受管集群和受管集群附加组件注册到 hub 集群。Registration Agent 还维护受管集群和受管集群附加组件的状态。Clusterrole 中会自动创建以下权限,以允许受管集群访问 hub 集群:
- 允许代理获取或更新 hub 集群管理的所有权集群
- 允许代理更新 hub 集群管理的拥有集群状态
- 允许代理轮转其证书
-
允许代理
获取
或更新
coordination.k8s.io
租期 -
允许代理
获取其
受管集群附加组件 - 允许代理更新其受管集群附加组件的状态
- 工作代理将 Add-on Agent 应用到受管集群。允许受管集群访问 hub 集群的权限在 Clusterrole 中自动创建,并允许代理将事件发送到 hub 集群。
要继续添加和管理集群,请参阅 集群生命周期简介。
1.5.2. 发行镜像
当使用 multicluster engine operator 在供应商处创建集群时,您必须指定用于新集群的发行镜像。发行镜像指定使用哪个版本的 Red Hat OpenShift Container Platform 来构建集群。默认情况下,OpenShift Container Platform 使用 clusterImageSets
资源来获取支持的发行镜像列表。
acm-hive-openshift-releases GitHub 仓库 包含 OpenShift Container Platform 支持的 clusterImageSets
的 YAML 文件。此 Git 存储库的内容使用目录结构来根据 OpenShift Container Platform 版本和发行频道值( fast
,stable
,candidate
)分隔镜像。Git 存储库中的分支映射到 OpenShift Container Platform 发行版本,每个分支都包含对应 OpenShift Container Platform 发行版本支持的 clusterImageSets
YAML 文件。
在 multicluster engine operator 中,在 hub 集群上运行的集群镜像设置控制器。此控制器按设置间隔查询 acm-hive-openshift-releases GitHub 仓库,用于新的 clusterImageSets
YAML 文件。默认情况下,控制器与 backplane-2.2
分支中的 fast
频道同步。
您可以使用以下选项配置 ClusterImageSets
。
选项 1: 指定要在控制台创建集群时使用的特定
ClusterImageSet
的镜像引用。您指定的每个新条目都会保留,并可用于将来的所有集群置备。请参见以下示例条目:quay.io/openshift-release-dev/ocp-release:4.12.8-x86_64
-
选项 2: 手动创建并应用来自
acm-hive-openshift-releases
GitHub 仓库的ClusterImageSets
YAML 文件。 -
选项 3: 遵循 cluster-image-set-controller GitHub 仓库中的
README.md
,启用对来自 fork 的 GitHub 仓库的ClusterImageSets
的自动更新。
集群镜像集控制器可以配置为使用其他 Git 存储库同步 ClusterImageSets
。控制器从 multicluster-engine
命名空间中的 cluster-image-set-git-repo
ConfigMap 读取 Git 存储库配置。您可以使用此 ConfigMap 来暂停控制器同步 ClusterImageSets
。这可以通过在 gitRepoUrl
字段中指定不存在的/invalid URL 来实现,如下所示。
apiVersion: v1 kind: ConfigMap metadata: name: cluster-image-set-git-repo namespace: multicluster-engine data: gitRepoUrl: https://github.com/stolostron/bad-acm-hive-openshift-releases.git gitRepoBranch: backplane-2.2 gitRepoPath: clusterImageSets channel: fast
注:只有带有标签为: visible: 'true'
的发行镜像才可以在控制台中创建集群时选择。ClusterImageSet
资源中的此标签示例在以下内容中提供:
apiVersion: config.openshift.io/v1 kind: ClusterImageSet metadata: labels: channel: fast visible: 'true' name: img4.12.8-x86-64-appsub spec: releaseImage: quay.io/openshift-release-dev/ocp-release:4.12.8-x86_64
存储了额外的发行镜像,但无法在控制台中看到。要查看所有可用的发行镜像,请运行 kubectl get clusterimageset
。
继续阅读以了解更多有关发行镜像的信息:
1.5.2.1. 指定发行镜像
当使用 multicluster engine operator 在供应商处创建集群时,您必须指定用于新集群的发行镜像。发行镜像指定使用哪个版本的 Red Hat OpenShift Container Platform 来构建集群。默认情况下,OpenShift Container Platform 使用 clusterImageSets
资源来获取支持的发行镜像列表。
找到 ClusterImageSets配置 ClusterImageSets创建发行镜像来在不同构架中部署集群
1.5.2.1.1. 查找 ClusterImageSets
引用发行镜像的文件是在 acm-hive-openshift-releases GitHub 仓库 GitHub 仓库中维护的 YAML 文件。Red Hat Advanced Cluster Management 使用这些文件在控制台中创建可用发行镜像的列表。这包括 OpenShift Container Platform 的最新快速频道镜像。
控制台仅显示三个 OpenShift Container Platform 最新版本的最新发行镜像。例如,您可能在控制台选项中看到以下发行镜像:
- quay.io/openshift-release-dev/ocp-release:4.6.23-x86_64
- quay.io/openshift-release-dev/ocp-release:4.10.1-x86_64
控制台中只有最新版本可促进创建带有最新发行镜像的集群。在某些情况下,您可能需要创建特定版本的集群,因此还会继续提供老版本。
注: 在控制台中创建集群时,只有具有 visible: 'true'
标签的发行镜像才可以选择。ClusterImageSet
资源中的此标签示例在以下内容中提供:
apiVersion: config.openshift.io/v1 kind: ClusterImageSet metadata: labels: channel: fast visible: 'true' name: img4.10.1-x86-64-appsub spec: releaseImage: quay.io/openshift-release-dev/ocp-release:4.10.1-x86_64
存储了额外的发行镜像,但无法在控制台中看到。要查看所有可用发行镜像,请在 CLI 中运行 kubectl get clusterimageset
。
存储库包含 clusterImageSets
目录,这是使用发行镜像时使用的目录。clusterImageSets
目录包含以下目录:
- Fast : 包含引用每个受支持 OpenShift Container Platform 版本的最新发行镜像版本的文件。此目录中的发行镜像经过测试、验证和支持。
Releases : 包含引用每个 OpenShift Container Platform 版本(table、fast 和 candidate 频道)的所有发行镜像的文件 请注意:这些版本并没有经过测试并确定是稳定的。
- Stable : 包含引用每个受支持 OpenShift Container Platform 版本的最新两个稳定发行镜像版本的文件。
注: 默认情况下,当前发行镜像列表被更新一次。升级产品后,列表最多可能需要一小时,以反映该产品的新版本的建议发行镜像版本。
1.5.2.1.2. 配置 ClusterImageSets
您可以使用以下选项配置 ClusterImageSets
。
选项 1: 指定要在控制台创建集群时使用的特定
ClusterImageSet
的镜像引用。您指定的每个新条目都会保留,并可用于将来的所有集群置备。请参见以下示例条目:quay.io/openshift-release-dev/ocp-release:4.6.8-x86_64
-
选项 2: 手动创建并应用来自
acm-hive-openshift-releases
GitHub 仓库的ClusterImageSets
YAML 文件。 -
选项 3: 遵循 cluster-image-set-controller GitHub 仓库中的
README.md
,启用对来自 fork 的 GitHub 仓库的ClusterImageSets
的自动更新。
1.5.2.1.3. 创建发行镜像以在不同构架中部署集群
您可以通过手动创建包含这两个架构文件的发行镜像,在与 hub 集群架构不同的架构中创建集群。
例如,您可以从 ppc64le
、aarch64
或 s390x
架构上运行的 hub 集群创建一个 x86_64
集群。如果使用两组文件创建发行镜像,集群创建成功,因为新发行镜像启用 OpenShift Container Platform 发行 registry 来提供多架构镜像清单。
OpenShift Container Platform 4.11 及更新的版本默认支持多个架构。您可以使用以下 clusterImageSet
来置备集群:
apiVersion: hive.openshift.io/v1 kind: ClusterImageSet metadata: labels: channel: fast visible: 'true' name: img4.12.0-multi-appsub spec: releaseImage: quay.io/openshift-release-dev/ocp-release:4.12.0-multi
要为不支持多个架构的 OpenShift Container Platform 镜像创建发行镜像,请完成类似以下架构类型的步骤:
在 OpenShift Container Platform release registry 中,创建一个 清单列表,其中包含
x86_64
、s390x
、aarch64
和ppc64le
发行镜像。使用以下命令,从 Quay 仓库拉取环境中这两个架构的清单列表:
podman pull quay.io/openshift-release-dev/ocp-release:4.10.1-x86_64 podman pull quay.io/openshift-release-dev/ocp-release:4.10.1-ppc64le podman pull quay.io/openshift-release-dev/ocp-release:4.10.1-s390x podman pull quay.io/openshift-release-dev/ocp-release:4.10.1-aarch64
登录到维护镜像的私有存储库:
podman login <private-repo>
使用存储库的路径替换
private-repo
。运行以下命令,将发行镜像清单添加到私有存储库中:
podman push quay.io/openshift-release-dev/ocp-release:4.10.1-x86_64 <private-repo>/ocp-release:4.10.1-x86_64 podman push quay.io/openshift-release-dev/ocp-release:4.10.1-ppc64le <private-repo>/ocp-release:4.10.1-ppc64le podman push quay.io/openshift-release-dev/ocp-release:4.10.1-s390x <private-repo>/ocp-release:4.10.1-s390x podman push quay.io/openshift-release-dev/ocp-release:4.10.1-aarch64 <private-repo>/ocp-release:4.10.1-aarch64
使用存储库的路径替换
private-repo
。为新信息创建清单:
podman manifest create mymanifest
将两个发行镜像的引用添加到清单列表中:
podman manifest add mymanifest <private-repo>/ocp-release:4.10.1-x86_64 podman manifest add mymanifest <private-repo>/ocp-release:4.10.1-ppc64le podman manifest add mymanifest <private-repo>/ocp-release:4.10.1-s390x podman manifest add mymanifest <private-repo>/ocp-release:4.10.1-aarch64
使用存储库的路径替换
private-repo
。将清单列表中的列表与现有清单合并:
podman manifest push mymanifest docker://<private-repo>/ocp-release:4.10.1
使用存储库的路径替换
private-repo
。
在 hub 集群中,创建一个发行版本镜像来引用存储库中的清单。
创建一个 YAML 文件,其中包含类似以下示例的信息:
apiVersion: hive.openshift.io/v1 kind: ClusterImageSet metadata: labels: channel: fast visible: "true" name: img4.10.1-appsub spec: releaseImage: <private-repo>/ocp-release:4.10.1
使用存储库的路径替换
private-repo
。在 hub 集群中运行以下命令以应用更改:
oc apply -f <file-name>.yaml
将
file-name
替换为您刚才创建的 YAML 文件的名称。
- 在创建 OpenShift Container Platform 集群时选择新的发行镜像。
- 如果使用 Red Hat Advanced Cluster Management 控制台部署受管集群,在集群创建过程中在 Architecture 字段中指定受管集群的架构。
创建流程使用合并的发行镜像来创建集群。
1.5.2.2. 连接时维护自定义的发行镜像列表
您可能想要在所有集群中使用相同的发行镜像。为简化操作,您可以创建自己的自定义列表,在其中包含创建集群时可用的发行镜像。完成以下步骤以管理可用发行镜像:
- 对 acm-hive-openshift-releases GitHub 仓库 2.7 分支进行分叉(fork )。
-
为创建集群时可用的镜像添加 YAML 文件。使用 Git 控制台或终端将镜像添加到
./clusterImageSets/stable/
或./clusterImageSets/fast/
目录中。 -
在
multicluster-engine
命名空间中创建一个名为cluster-image-set-git-repo
的ConfigMap
。请参见以下示例:
apiVersion: v1 kind: ConfigMap metadata: name: cluster-image-set-git-repo namespace: multicluster-engine data: gitRepoUrl: <forked acm-hive-openshift-releases repository URL> gitRepoBranch: backplane-2.2 gitRepoPath: clusterImageSets channel: <fast or stable>
您可以按照以下流程将更改合并到已分叉的存储库,从主存储库检索可用的 YAML 文件:
- 将更改提交并合并到您的已分叉仓库。
-
要在克隆
acm-hive-openshift-releases
仓库后同步 fast 发行镜像列表,请将cluster-image-set-git-repo
ConfigMap
中的 channel 字段的值更新为fast
。 -
要同步并显示 stable 发行镜像,请将
cluster-image-set-git-repo
ConfigMap
中的 channel 字段的值更新为stable
。
更新 ConfigMap
后,可用稳定镜像列表会在约一分钟内更新为当前可用镜像。默认情况下,Red Hat Advanced Cluster Management 会预加载几个 ClusterImageSets。
您可以使用以下命令列出可用内容并删除默认值。将
<clusterImageSet_NAME
> 替换为正确的名称:oc get clusterImageSets oc delete clusterImageSet <clusterImageSet_NAME>
在创建集群时,在控制台中查看当前可用发行镜像的列表。
有关通过 ConfigMap
提供的其他字段的信息,请查看 cluster-image-set-controller GitHub 仓库 README。
1.5.2.3. 断开连接时维护自定义的发行镜像列表
在某些情况下,当节点集群没有互联网连接时,您需要维护一个自定义的发行镜像列表。您可以创建自己的自定义列表,在其中包含创建集群时可用的发行镜像。完成以下步骤以在断开连接的情况下管理可用发行镜像:
- 在连接的系统中时,进入 acm-hive-openshift-releases GitHub 仓库,以访问可用于版本 2.7 的集群镜像集。
-
将
clusterImageSets
目录复制到可以访问断开连接的多集群引擎 operator 集群的系统中。 通过完成以下步骤,添加受管集群和带有集群镜像的断开连接的存储库之间的映射:
-
对于 OpenShift Container Platform 受管集群,请参阅配置镜像 registry 存储库镜像,以了解有关使用
ImageContentSourcePolicy
对象完成映射的信息。 -
对于不是 OpenShift Container Platform 集群的受管集群,请使用
ManageClusterImageRegistry
自定义资源定义来覆盖镜像集的位置。如需有关如何 为映射覆盖集群的信息,请参阅指定受管集群中的 registry 镜像。
-
对于 OpenShift Container Platform 受管集群,请参阅配置镜像 registry 存储库镜像,以了解有关使用
-
使用控制台或 CLI 为您希望在创建集群时可用的镜像添加 YAML 文件,以手动添加
clusterImageSet
YAML 内容。 修改 OpenShift Container Platform 发行镜像的
clusterImageSet
YAML 文件,以引用存储镜像的正确离线存储库。您的更新类似以下示例,其中spec.releaseImage
指的是您要使用的镜像 registry:apiVersion: hive.openshift.io/v1 kind: ClusterImageSet metadata: labels: channel: fast name: img4.12.8-x86-64-appsub spec: releaseImage: IMAGE_REGISTRY_IPADDRESS_or_DNSNAME/REPO_PATH/ocp-release:4.12.8-x86_64
确保在 YAML 文件中引用的离线镜像 registry 中载入镜像。
通过为每个
YAML
文件输入以下命令来创建每个 clusterImageSets:oc create -f <clusterImageSet_FILE>
将
clusterImageSet_FILE
替换为集群镜像集文件的名称。例如:oc create -f img4.11.9-x86_64.yaml
为要添加的每个资源运行此命令后,可用发行镜像列表可用。
-
另外,您还可以将镜像 URL 直接粘贴到创建集群控制台中。如果镜像 URL 不存在,则添加镜像 URL 会创建新的
clusterImageSets
。 - 在创建集群时,在控制台中查看当前可用发行镜像的列表。
1.5.3. 主机清单简介
主机清单管理和内部集群安装可以使用 multicluster engine operator 中央基础架构管理功能。中央基础架构管理作为 hub 集群上的 operator 运行 Assisted Installer (也称为基础架构 operator)。
您可以使用控制台创建主机清单,这是可用于创建内部 OpenShift Container Platform 集群的裸机或虚拟机池。这些集群可以独立使用 control plane 或 托管的 control plane 的专用机器,其中 control plane 作为 hub 集群上的 pod 运行。
您可以使用 Zero Touch Provisioning (ZTP)使用 console、API 或 GitOps 安装独立集群。如需有关 ZTP 的更多信息,请参阅 Red Hat OpenShift Container Platform 文档中的在断开连接的环境中安装 GitOps ZTP。
机器在发现镜像引导后加入主机清单。Discovery Image 是一个包含以下内容的 Red Hat CoreOS live 镜像:
- 执行发现、验证和安装任务的代理。
- 用于访问 hub 集群上的服务所需的配置,包括端点、令牌和静态网络配置(如果适用)。
您通常为每个基础架构环境有一个发现镜像,这是一组共享一组通用属性的主机。InfraEnv
自定义资源定义代表此基础架构环境和关联的发现镜像。使用的镜像基于 OpenShift Container Platform 版本,该版本决定了所选的操作系统版本。
主机引导且代理联系该服务后,服务会在代表该主机的 hub 集群上创建一个新的 Agent
自定义资源。Agent
资源组成主机清单。
稍后,您可以在清单中安装主机作为 OpenShift 节点。代理将操作系统写入磁盘,以及必要的配置,并重新启动主机。
继续阅读以了解更多有关主机清单和中央基础架构管理的信息:
1.5.3.1. 启用中央基础架构管理服务
中央基础架构管理服务由 multicluster engine operator 提供,并部署 OpenShift Container Platform 集群。当您在 hub 集群上启用 MultiClusterHub Operator 时,中央基础架构管理会自动部署,但您必须手动启用该服务。
1.5.3.1.1. 先决条件
在启用中央基础架构管理服务前,请查看以下先决条件:
- 您必须在 OpenShift Container Platform 4.10 或更高版本上部署了 hub 集群,并带有支持的 Red Hat Advanced Cluster Management for Kubernetes 版本。
- 您需要对 hub 集群(连接)或连接到连接到互联网(断开连接)的内部或镜像 registry 的连接,以检索创建环境所需的镜像。
- 您必须为裸机置备打开所需的端口。请参阅 OpenShift Container Platform 文档中的 确保开放所需端口。
- 您需要裸机主机自定义资源定义。
- 您需要 OpenShift Container Platform pull secret。如需更多信息,请参阅使用镜像 pull secret。
- 您需要一个配置的默认存储类。
- 对于断开连接的环境,在 OpenShift Container Platform 文档中的网络边缘 完成集群的步骤。
1.5.3.1.2. 创建裸机主机自定义资源定义
在启用中央基础架构管理服务前,您需要裸机主机自定义资源定义。
运行以下命令,检查是否已有一个裸机主机自定义资源定义:
oc get crd baremetalhosts.metal3.io
- 如果您有裸机主机自定义资源定义,输出会显示创建资源的日期。
如果您没有资源,您会收到类似如下的错误:
Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "baremetalhosts.metal3.io" not found
如果您没有裸机主机自定义资源定义,请下载 metal3.io_baremetalhosts.yaml 文件,并通过运行以下命令来应用内容来创建资源:
oc apply -f
1.5.3.1.3. 创建或修改 置备 资源
在启用中央基础架构管理服务前,您需要 置备
资源。
运行以下命令,检查您是否有
Provisioning
资源:oc get provisioning
-
如果您已经有一个
Provisioning
资源,请继续 修改Provisioning
资源。 -
如果您没有
Provisioning
资源,您会收到No resources found
错误。继续 创建Provisioning
资源。
-
如果您已经有一个
1.5.3.1.3.1. 修改 置备 资源
如果您已经有一个 Provisioning
资源,则必须在以下平台之一上安装了 hub 集群,修改资源:
- 裸机
- Red Hat OpenStack Platform
- VMware vSphere
-
用户置备的基础架构(UPI)方法,平台为
None
如果您的 hub 集群安装在不同的平台上,请继续 在断开连接的环境中启用中央基础架构管理,或者在连接的环境中启用中央基础架构管理。
运行以下命令,修改
Provisioning
资源以允许 Bare Metal Operator 监视所有命名空间:oc patch provisioning provisioning-configuration --type merge -p '{"spec":{"watchAllNamespaces": true }}'
1.5.3.1.3.2. 创建 置备 资源
如果您没有 Provisioning
资源,请完成以下步骤:
通过添加以下 YAML 内容来创建
Provisioning
资源:apiVersion: metal3.io/v1alpha1 kind: Provisioning metadata: name: provisioning-configuration spec: provisioningNetwork: "Disabled" watchAllNamespaces: true
运行以下命令来应用内容:
oc apply -f
1.5.3.1.4. 在断开连接的环境中启用中央基础架构管理
要在断开连接的环境中启用中央基础架构管理,请完成以下步骤:
在与基础架构 Operator 相同的命名空间中创建
ConfigMap
,为您的镜像 registry 指定ca-bundle.crt
和registry.conf
的值。您的文件ConfigMap
可能类似以下示例:apiVersion: v1 kind: ConfigMap metadata: name: <mirror-config> namespace: multicluster-engine labels: app: assisted-service data: ca-bundle.crt: | <certificate-content> registries.conf: | unqualified-search-registries = ["registry.access.redhat.com", "docker.io"] [[registry]] prefix = "" location = "registry.redhat.io/multicluster-engine" mirror-by-digest-only = true [[registry.mirror]] location = "mirror.registry.com:5000/multicluster-engine"
unqualified-search-registries
列表中的 registry 会自动添加到PUBLIC_CONTAINER_REGISTRIES
环境变量中的身份验证忽略列表中。当验证受管集群的 pull secret 时,指定的 registry 不需要身份验证。通过在
agent_service_config.yaml
文件中保存以下 YAML 内容来创建AgentServiceConfig
自定义资源:apiVersion: agent-install.openshift.io/v1beta1 kind: AgentServiceConfig metadata: name: agent spec: databaseStorage: accessModes: - ReadWriteOnce resources: requests: storage: <db_volume_size> filesystemStorage: accessModes: - ReadWriteOnce resources: requests: storage: <fs_volume_size> mirrorRegistryRef: name: <mirror_config> 1 unauthenticatedRegistries: - <unauthenticated_registry> 2 imageStorage: accessModes: - ReadWriteOnce resources: requests: storage: <img_volume_size> 3 osImages: - openshiftVersion: "<ocp_version>" 4 version: "<ocp_release_version>" 5 url: "<iso_url>" 6 cpuArchitecture: "x86_64"
- 1
- 将
mirror_config
替换为包含您的镜像 registry 配置详情的ConfigMap
名称。 - 2
- 如果您使用不需要身份验证的镜像 registry,请包含可选的
unauthenticated_registry
参数。此列表上的条目不会被验证,或者需要在 pull secret 中有一个条目。 - 3
- 将
img_volume_size
替换为imageStorage
字段的卷大小,如每个操作系统镜像的10Gi
。最小值为10Gi
,但建议的值至少为50Gi
。这个值指定为集群镜像分配多少存储。您需要为每个运行的 Red Hat Enterprise Linux CoreOS 实例提供 1 GB 的镜像存储。如果 Red Hat Enterprise Linux CoreOS 有多个集群和实例,您可能需要使用更高的值。 - 4
- 将
ocp_version
替换为要安装的 OpenShift Container Platform 版本,如4.13
。 - 5
- 将
ocp_release_version
替换为特定的安装版本,例如:49.83.202103251640-0
。 - 6
- 使用 ISO url 替换
iso_url
,例如https://mirror.openshift.com/pub/openshift-v4/x86_64/dependencies/rhcos/4.10/4.10.3/rhcos-4.10.3-x86_64-live.x86_64.iso
。您可以在 4.10.3 依赖项 中找到其他值。
重要:如果您使用更新的绑定功能以及 AgentServiceConfig
自定义资源中的 spec.osImages
发行版本是 4.13 或更高版本,则您在创建集群时使用的 OpenShift Container Platform 发行镜像必须是 4.13 或更高版本。版本 4.13 及更新版本的 Red Hat Enterprise Linux CoreOS 镜像与版本 4.13 之前的版本不兼容。
您可以通过检查 assisted-service
和 assisted-image-service
部署,并验证您的中央基础架构管理服务是否健康,并确保其 pod 已准备就绪并在运行。
1.5.3.1.5. 在连接的环境中启用中央基础架构管理
要在连接的环境中启用中央基础架构管理,通过在 agent_service_config.yaml
文件中保存以下 YAML 内容来创建 AgentServiceConfig
自定义资源:
apiVersion: agent-install.openshift.io/v1beta1 kind: AgentServiceConfig metadata: name: agent spec: databaseStorage: accessModes: - ReadWriteOnce resources: requests: storage: <db_volume_size> 1 filesystemStorage: accessModes: - ReadWriteOnce resources: requests: storage: <fs_volume_size> 2 imageStorage: accessModes: - ReadWriteOnce resources: requests: storage: <img_volume_size> 3
- 1
- 使用
databaseStorage
字段的卷大小替换db_volume_size
,如10Gi
。这个值指定为存储集群分配的存储量,如数据库表和数据库视图。所需的最小值为1Gi
。如果有多个集群,您可能需要使用较高的值。 - 2
- 将
fs_volume_size
替换为filesystemStorage
字段的卷大小,例如,每个集群200M
和每个支持的 OpenShift Container Platform 版本2-3Gi
。所需的最小值为1Gi
,但推荐的值为至少100Gi
。这个值指定为存储集群的日志、清单和kubeconfig
文件分配了多少存储。如果有多个集群,您可能需要使用较高的值。 - 3
- 将
img_volume_size
替换为imageStorage
字段的卷大小,如每个操作系统镜像的10Gi
。最小值为10Gi
,但建议的值至少为50Gi
。这个值指定为集群镜像分配多少存储。您需要为每个运行的 Red Hat Enterprise Linux CoreOS 实例提供 1 GB 的镜像存储。如果 Red Hat Enterprise Linux CoreOS 有多个集群和实例,您可能需要使用更高的值。
您的中央基础架构管理服务已配置。您可以通过检查 assisted-service
和 assisted-image-service
部署,确定 pod 已就绪并在运行,来验证其状态是否正常。
1.5.3.1.6. 其他资源
- 如需有关零接触置备的更多信息,请参阅 OpenShift Container Platform 文档中的 网络边缘集群。
- 请参阅使用镜像 pull secret
1.5.3.2. 在 Amazon Web Services 上启用中央基础架构管理
如果您在 Amazon Web Services 上运行 hub 集群并希望启用中央基础架构管理服务,请在 启用中央基础架构管理服务 后完成以下步骤:
确保您已在 hub 集群中登录,并通过运行以下命令来查找在
assisted-image-service
上配置的唯一域:oc get routes --all-namespaces | grep assisted-image-service
您的域可能类似以下示例:
assisted-image-service-multicluster-engine.apps.<yourdomain>.com
确保您已在 hub 集群中登录,并使用
NLB
type
参数创建带有唯一域的新IngressController
。请参见以下示例:apiVersion: operator.openshift.io/v1 kind: IngressController metadata: name: ingress-controller-with-nlb namespace: openshift-ingress-operator spec: domain: nlb-apps.<domain>.com routeSelector: matchLabels: router-type: nlb endpointPublishingStrategy: type: LoadBalancerService loadBalancer: scope: External providerParameters: type: AWS aws: type: NLB
-
将
<yourdomain>
添加到IngressController
中的domain
参数,方法是使用<yourdomain>
替换nlb-apps.<domain>.com
的<domain>
。 运行以下命令来应用新的
IngressController
:oc apply -f ingresscontroller.yaml
通过完成以下步骤,确保新
IngressController
的spec.domain
参数的值不与现有IngressController
冲突:运行以下命令列出所有
IngressController
:oc get ingresscontroller -n openshift-ingress-operator
在每个
IngressController
上运行以下命令,除了您刚才创建的ingress-controller-with-nlb
外:oc edit ingresscontroller <name> -n openshift-ingress-operator
如果缺少
spec.domain
报告,请添加一个与集群中公开的所有路由匹配的默认域,但nlb-apps.<domain>.com
除外。如果提供了
spec.domain
报告,请确保从指定范围中排除nlb-apps.<domain>.com
路由。
运行以下命令来编辑
assisted-image-service
路由以使用nlb-apps
位置:oc edit route assisted-image-service -n <namespace>
默认命名空间是您安装 multicluster engine operator 的位置。
在
assisted-image-service
路由中添加以下行:metadata: labels: router-type: nlb name: assisted-image-service
在
assisted-image-service
路由中,找到spec.host
的 URL 值。URL 可能类似以下示例:assisted-image-service-multicluster-engine.apps.<yourdomain>.com
-
将 URL 中的
apps
替换为nlb-apps
,以匹配新IngressController
中配置的域。 要验证 Amazon Web Services 上是否启用了中央基础架构管理服务,请运行以下命令来验证 pod 是否健康:
oc get pods -n multicluster-engine | grep assist
-
创建新主机清单,并确保下载 URL 使用新的
nlb-apps
URL。
1.5.3.3. 使用控制台创建主机清单
您可以创建一个主机清单(基础架构环境)来发现您可以在其上安装 OpenShift Container Platform 集群的物理或虚拟集群。
1.5.3.3.1. 先决条件
- 您必须启用中央基础架构管理服务。如需更多信息 ,请参阅启用中央基础架构管理服务。
1.5.3.3.2. 创建主机清单
完成以下步骤,使用控制台创建主机清单:
- 在控制台中,导航到 Infrastructure > Host inventory,再点 Create infrastructure environment。
在主机清单设置中添加以下信息:
-
名称 :您的基础架构环境的唯一名称。使用控制台创建基础架构环境也会使用您选择的名称为
InfraEnv
资源创建新命名空间。如果您使用命令行界面创建InfraEnv
资源并希望在控制台中监控资源,请为您的命名空间和InfraEnv
使用相同的名称。 - Network type:指定您添加到基础架构环境中的主机是否使用 DHCP 或静态网络。静态网络配置需要额外的步骤。
- location :指定主机的地理位置。地理位置可用于定义主机所在的数据中心。
- Labels:可选字段,您可以在其中向使用此基础架构环境发现的主机添加标签。指定的位置会自动添加到标签列表中。
- 基础架构供应商凭证 :选择基础架构供应商凭证会使用凭证中的信息自动填充 pull secret 和 SSH 公钥字段。如需更多信息,请参阅 为内部环境创建凭证。
- pull secret:用于访问 OpenShift Container Platform 资源的 OpenShift Container Platform pull secret。如果您选择了一个基础架构供应商凭证,则会自动填充此字段。
-
SSH 公钥:实现与主机安全通信的 SSH 密钥。您可以使用它来连接到主机以进行故障排除。安装集群后,无法再使用 SSH 密钥连接到主机。密钥通常位于您的
id_rsa.pub
文件中。默认文件路径为~/.ssh/id_rsa.pub
。如果您选择了包含 SSH 公钥值的基础架构供应商凭证,则会自动填充此字段。 如果要为主机启用代理设置,请选择要启用它的设置,并输入以下信息:
- HTTP 代理 URL: HTTP 请求的代理 URL。
- HTTPS 代理 URL: HTTP 请求的代理 URL。URL 必须以 HTTP 开头。不支持 HTTPS。如果没有提供值,则默认将 HTTP 代理 URL 用于 HTTP 和 HTTPS 连接。
-
无代理域 :您不想将代理与逗号分开的域列表。使用一个句点(
.
)启动域名,以包含该域中的所有子域。添加一个星号(*
)来绕过所有目的地的代理。
- (可选)通过提供以逗号分隔的 NTP 池或服务器的 IP 或域名列表来添加您自己的网络时间协议(NTP)源。
-
名称 :您的基础架构环境的唯一名称。使用控制台创建基础架构环境也会使用您选择的名称为
如果您需要控制台中不可用的高级配置选项,请使用命令行界面继续 创建主机清单。
如果您不需要高级配置选项,则可以继续配置静态网络(如果需要),并开始将主机添加到基础架构环境中。
1.5.3.3.3. 访问主机清单
要访问主机清单,请在控制台中选择 Infrastructure > Host inventory。从列表中选择您的基础架构环境,以查看详情和主机。
1.5.3.3.4. 其他资源
1.5.3.4. 使用命令行界面创建主机清单
您可以创建一个主机清单(基础架构环境)来发现您可以在其上安装 OpenShift Container Platform 集群的物理或虚拟集群。使用命令行界面而不是控制台进行自动化部署或以下高级配置选项:
- 自动将发现的主机绑定到现有集群定义
- 覆盖发现镜像的 ignition 配置
- 控制 iPXE 行为
- 修改发现镜像的内核参数
- 在发现阶段传递您希望主机信任的额外证书
- 选择要引导的 Red Hat CoreOS 版本,用于测试不是最新版本的默认选项
1.5.3.4.1. 前提条件
- 您必须启用中央基础架构管理服务。如需更多信息 ,请参阅启用中央基础架构管理服务。
1.5.3.4.2. 创建主机清单
完成以下步骤,使用命令行界面创建主机清单(基础架构环境):
运行以下命令登录到您的 hub 集群:
oc login
为资源创建命名空间。
创建
namespace.yaml
文件并添加以下内容:apiVersion: v1 kind: Namespace metadata: name: <your_namespace> 1
- 1
- 在控制台中使用命名空间和基础架构环境相同的名称来监控您的清单。
运行以下命令来应用 YAML 内容:
oc apply -f namespace.yaml
创建包含 OpenShift Container Platform pull secret 的
Secret
自定义资源。创建基础架构环境。
创建
infra-env.yaml
文件并添加以下内容。根据需要替换值:apiVersion: agent-install.openshift.io/v1beta1 kind: InfraEnv metadata: name: myinfraenv namespace: <your_namespace> spec: proxy: httpProxy: <http://user:password@ipaddr:port> httpsProxy: <http://user:password@ipaddr:port> noProxy: additionalNTPSources: sshAuthorizedKey: pullSecretRef: name: <name> agentLabels: <key>: <value> nmStateConfigLabelSelector: matchLabels: <key>: <value> clusterRef: name: <cluster_name> namespace: <project_name> ignitionConfigOverride: '{"ignition": {"version": "3.1.0"}, …}' cpuArchitecture: x86_64 ipxeScriptType: DiscoveryImageAlways kernelArguments: - operation: append value: audit=0 additionalTrustBundle: <bundle> osImageVersion: <version>
字段 | 可选或必需的 | 描述 |
---|---|---|
| 选填 |
定义使用 |
| 选填 |
HTTP 请求的代理的 URL。URL 必须以 |
| 选填 |
HTTP 请求的代理的 URL。URL 必须以 |
| 选填 | 您不想将代理与逗号分开的域和 CIDR 列表。 |
| 选填 | 要添加到所有主机的网络时间协议(NTP)源(主机名或 IP)的列表。它们添加到使用其他选项(如 DHCP)配置的 NTP 源中。 |
| 选填 | 添加到所有主机的 SSH 公钥,以便在发现阶段进行调试。发现阶段是主机引导发现镜像时。 |
| 必需 | 包含 pull secret 的 Kubernetes secret 名称。 |
| 选填 |
自动添加到 |
| 选填 |
整合主机的高级网络配置,如静态 IP、网桥和绑定。主机网络配置在一个或多个 |
| 选填 |
引用描述独立内部集群的现有 |
| 选填 |
修改 Red Hat CoreOS live 镜像的 ignition 配置,如添加文件。如果需要,请确保只使用 |
| 选填 | 选择以下支持的 CPU 架构之一:x86_64、aarch64、ppc64le 或 s390x。默认值为 x86_64。 |
| 选填 |
当设置为 |
| 选填 |
允许在发现镜像引导时修改内核参数。 |
| 选填 |
如果主机位于带有重新加密 man-in-the-middle (MITM)代理的网络中,或者主机需要信任证书进行其他目的,则需要 PEM 编码的 X.509 证书捆绑包。 |
| 选填 |
用于 |
运行以下命令来应用 YAML 内容:
oc apply -f infra-env.yaml
要验证您的主机清单是否已创建,请使用以下命令检查状态:
oc describe infraenv myinfraenv -n <your_namespace>
请参阅以下显著属性列表:
-
条件
:指示镜像是否被成功创建的标准 Kubernetes 条件。 -
isoDownloadURL
:下载发现镜像的 URL。 -
createdTime
:镜像最后一次创建的时间。如果您修改了InfraEnv
,请确保在下载新镜像前更新时间戳。
注: 如果您修改 InfraEnv
资源,请通过查看 createdTime
属性来确保 InfraEnv
已创建新的 Discovery 镜像。如果您已经引导主机,请使用最新的发现镜像再次引导它们。
如果需要,可以继续配置静态网络,并开始将主机添加到基础架构环境中。
1.5.3.4.3. 其他资源
- 请参阅启用中央基础架构管理服务
- 使用控制台返回到 创建主机清单
1.5.3.5. 为基础架构环境配置高级网络
对于在单个接口上需要 DHCP 之外的网络的主机,您必须配置高级网络。所需的配置包括创建一个或多个 NMStateConfig
资源实例,用于描述一个或多个主机的网络。
每个 NMStateConfig
资源都必须包含一个与 InfraEnv
资源中的 nmStateConfigLabelSelector
匹配的标签。请参阅使用命令行界面创建主机清单, 以了解更多有关 nmStateConfigLabelSelector
的信息。
Discovery Image 包含在所有引用的 NMStateConfig
资源中定义的网络配置。引导后,每个主机会将每个配置与其网络接口进行比较,并应用适当的配置。
1.5.3.5.1. 先决条件
- 您必须启用中央基础架构管理服务。
- 您必须创建主机清单。
1.5.3.5.2. 使用命令行界面配置高级网络
要使用命令行界面为您的基础架构环境配置高级网络,请完成以下步骤:
创建名为
nmstateconfig.yaml
的文件,并添加类似于以下模板的内容。根据需要替换值:apiVersion: agent-install.openshift.io/v1beta1 kind: NMStateConfig metadata: name: mynmstateconfig namespace: <your-infraenv-namespace> labels: some-key: <some-value> spec: config: interfaces: - name: eth0 type: ethernet state: up mac-address: 02:00:00:80:12:14 ipv4: enabled: true address: - ip: 192.168.111.30 prefix-length: 24 dhcp: false - name: eth1 type: ethernet state: up mac-address: 02:00:00:80:12:15 ipv4: enabled: true address: - ip: 192.168.140.30 prefix-length: 24 dhcp: false dns-resolver: config: server: - 192.168.126.1 routes: config: - destination: 0.0.0.0/0 next-hop-address: 192.168.111.1 next-hop-interface: eth1 table-id: 254 - destination: 0.0.0.0/0 next-hop-address: 192.168.140.1 next-hop-interface: eth1 table-id: 254 interfaces: - name: "eth0" macAddress: "02:00:00:80:12:14" - name: "eth1" macAddress: "02:00:00:80:12:15"
字段 | 可选或必需的 | 描述 |
---|---|---|
| 必需 | 使用与您要配置的主机或主机相关的名称。 |
| 必需 |
命名空间必须与 |
| 必需 |
在 |
| 选填 |
描述 |
| 选填 |
描述主机上指定 |
注: 当您更新任何 InfraEnv
属性或更改与其标签选择器匹配的 NMStateConfig
资源时,Image Service 会自动创建一个新镜像。如果在创建 InfraEnv
资源后添加 NMStateConfig
资源,请通过检查 InfraEnv
中的 createdTime
属性来确保 InfraEnv
创建一个新的 Discovery 镜像。如果您已经引导主机,请使用最新的发现镜像再次引导它们。
运行以下命令来应用 YAML 内容:
oc apply -f nmstateconfig.yaml
1.5.3.5.3. 其他资源
1.5.3.6. 使用 Discovery 镜像将主机添加到主机清单中
创建主机清单(基础架构环境)后,您可以发现主机并将其添加到清单中。要将主机添加到清单,请选择下载 ISO 并将其附加到每台服务器的方法。例如,您可以使用虚拟介质下载 ISO,或者将 ISO 写入 USB 驱动器。
重要: 要防止安装失败,请在安装过程中保留发现 ISO 介质连接到该设备,并将每个主机设置为从设备引导。
1.5.3.6.1. 先决条件
- 您必须启用中央基础架构管理服务。如需更多信息 ,请参阅启用中央基础架构管理服务。
- 您必须创建主机清单。如需更多信息 ,请参阅使用控制台创建主机清单。
1.5.3.6.2. 使用控制台添加主机
通过完成以下步骤下载 ISO:
- 在控制台中选择 Infrastructure > Host inventory。
- 从列表中选择您的基础架构环境。
- 单击 Add hosts 并选择 With Discovery ISO。
现在,您会看到下载 ISO 的 URL。引导的主机会出现在主机清单表中。显示主机可能需要几分钟时间。您必须批准每个主机,然后才能使用它。您可以通过单击 Actions 并选择 Approve 来从清单表中选择主机。
1.5.3.6.3. 使用命令行界面添加主机
您可以在 InfraEnv
资源状态中的 isoDownloadURL
属性中看到下载 ISO 的 URL。如需有关 InfraEnv
资源的更多信息,请参阅使用命令行界面创建主机清单。
每个引导的主机在同一命名空间中创建一个 Agent
资源。您必须批准每个主机,然后才能使用它。
1.5.3.6.4. 其他资源
1.5.3.7. 自动将裸机主机添加到主机清单中
创建主机清单(基础架构环境)后,您可以发现主机并将其添加到清单中。您可以通过为每个主机创建 BareMetalHost
资源和相关 BMC secret,使裸机 Operator 与每个裸机主机的 Baseboard Management Controller (BMC)通信来自动引导基础架构环境的发现镜像。自动化由 BareMetalHost
上的标签设置,该标签引用您的基础架构环境。
自动化执行以下操作:
- 使用基础架构环境代表的发现镜像引导每个裸机主机
- 在更新基础架构环境或任何关联的网络配置时,使用最新发现镜像重启每个主机
-
在发现时将每个
Agent
资源与对应的BareMetalHost
资源关联 -
根据
BareMetalHost
的信息更新Agent
资源属性,如主机名、角色和安装磁盘 -
批准将
代理
用作集群节点
1.5.3.7.1. 先决条件
- 您必须启用中央基础架构管理服务。
- 您必须创建主机清单。
1.5.3.7.2. 使用控制台添加裸机主机
完成以下步骤,使用控制台自动将裸机主机添加到主机清单中:
- 在控制台中选择 Infrastructure > Host inventory。
- 从列表中选择您的基础架构环境。
- 点 Add hosts 并选择 With BMC Form。
- 添加所需信息并点 Create。
1.5.3.7.3. 使用命令行界面添加裸机主机
完成以下步骤,使用命令行界面自动将裸机主机添加到主机清单中。
通过应用以下 YAML 内容并在需要时替换值来创建 BMC secret:
apiVersion: v1 kind: Secret metadata: name: <bmc-secret-name> namespace: <your_infraenv_namespace> 1 type: Opaque data: username: <username> password: <password>
- 1
- 命名空间必须与
InfraEnv
的命名空间相同。
通过应用以下 YAML 内容并替换所需的值来创建裸机主机:
apiVersion: metal3.io/v1alpha1 kind: BareMetalHost metadata: name: <bmh-name> namespace: <your_infraenv_namespace> 1 annotations: inspect.metal3.io: disabled labels: infraenvs.agent-install.openshift.io: <your-infraenv> 2 spec: online: true automatedCleaningMode: disabled 3 bootMACAddress: <your-mac-address> 4 bmc: address: <machine-address> 5 credentialsName: <bmc-secret-name> 6 rootDeviceHints: deviceName: /dev/sda 7
- 1
- 命名空间必须与
InfraEnv
的命名空间相同。 - 2
- 名称必须与
InfrEnv
的名称匹配,并存在于同一命名空间中。 - 3
- 如果没有设置值,则会自动使用
metadata
值。 - 4
- 确保 MAC 地址与主机上一个交集的 MAC 地址匹配。
- 5
- 使用 BMC 的地址。如需更多信息,请参阅带外管理 IP 地址的端口访问。
- 6
- 确保
credentialsName
值与您创建的 BMC secret 的名称匹配。 - 7
- 可选: 选择安装磁盘。有关可用根设备提示,请参阅 BareMetalHost spec。使用 Discovery 镜像引导主机并创建对应的
Agent
资源后,会根据提示设置安装磁盘。
打开主机后,镜像将开始下载。这可能需要几分钟时间。当发现主机时,会自动创建 Agent
自定义资源。
1.5.3.7.4. 其他资源
- 如需有关零接触置备的更多信息,请参阅 OpenShift Container Platform 文档中的 网络边缘集群。
- 要了解使用裸机主机所需的端口,请参阅 OpenShift Container Platform 文档中的 带外管理 IP 地址的端口。
- 要了解 root 设备提示,请参阅 OpenShift Container Platform 文档中的 BareMetalHost spec。
- 请参阅使用镜像 pull secret
- 请参阅为内部环境创建凭证
1.5.3.8. 管理主机清单
您可以使用控制台管理主机清单并编辑现有主机,或使用命令行界面并编辑 Agent
资源。
1.5.3.8.1. 使用控制台管理主机清单
使用 Discovery ISO 成功引导的每个主机都显示为主机清单中的一行。您可以使用控制台编辑和管理主机。如果手动引导主机且没有使用裸机 Operator 自动化,则必须在控制台中批准主机,然后才能使用它。准备好作为 OpenShift 节点安装的主机具有 Available
状态。
1.5.3.8.2. 使用命令行界面管理主机清单
Agent
资源代表每个主机。您可以在 Agent
资源中设置以下属性:
clusterDeploymentName
如果要将主机安装为集群中的节点,请将此属性设置为要使用的
ClusterDeployment
的命名空间和名称。可选:
role
设置集群中主机的角色。可能的值有
master
、worker
和auto-assign
。默认值为auto-assign
。hostname
设置主机的主机名。可选:如果主机被自动分配一个有效的主机名,例如使用 DHCP。
已批准
指明主机是否可以作为 OpenShift 节点安装。此属性是一个布尔值,默认值为
False
。如果手动引导主机且没有使用裸机 Operator 自动化,则必须在安装主机前将此属性设置为True
。installation_disk_id
您所选的安装磁盘的 ID 在主机的清单中可见。
installerArgs
包含主机的 coreos-installer 参数覆盖的 JSON 格式字符串。您可以使用此属性修改内核参数。请参见以下示例语法:
["--append-karg", "ip=192.0.2.2::192.0.2.254:255.255.255.0:core0.example.com:enp1s0:none", "--save-partindex", "4"]
ignitionConfigOverrides
包含主机的 ignition 配置覆盖的 JSON 格式字符串。您可以使用 ignition 将文件添加到主机中。请参见以下示例语法:
{"ignition": "version": "3.1.0"}, "storage": {"files": [{"path": "/tmp/example", "contents": {"source": "data:text/plain;base64,aGVscGltdHJhcHBlZGluYXN3YWdnZXJzcGVj"}}]}}
nodeLabels
安装主机后应用到节点的标签列表。
Agent
资源的状态具有以下属性:role
设置集群中主机的角色。如果您之前在
Agent
资源中设置了角色
,则该值会出现在状态
中。清单(inventory)
包含在主机发现上运行的代理的主机属性。
progress
主机安装进度。
ntpSources
主机配置的网络时间协议(NTP)源。
conditions
包含以下标准 Kubernetes 条件,带有
True
或False
值:-
SpecSynced :如果所有指定属性都成功应用,则为
True
。如果遇到
一些错误,则为 false。 -
connected :如果代理连接到安装服务,则为
True
。如果代理在一段时间内没有联系安装服务,则为 false。 -
requirementsMet: 如果主机准备好开始安装,则为
True
。 -
validated: 如果所有主机验证都通过,则为
True
。 -
installed :如果主机作为 OpenShift 节点安装,则为
True
。 -
bound: 如果主机绑定到集群,则为
True
。 -
cleanup:如果删除
Agent
resouce 的请求失败,则为False
。
-
SpecSynced :如果所有指定属性都成功应用,则为
debugInfo
包含用于下载安装日志和事件的 URL。
validationsInfo
包含有关代理在发现主机后运行的验证信息,以确保安装成功。如果值为
False
,则进行故障排除。installation_disk_id
您所选的安装磁盘的 ID 在主机的清单中可见。
1.5.3.8.3. 其他资源
- 请参阅 访问主机清单
- 请参阅 coreos-installer install
1.5.4. 创建集群
了解如何使用多集群引擎 operator 在云供应商中创建 Red Hat OpenShift Container Platform 集群。
multicluster engine operator 使用 OpenShift Container Platform 提供的 Hive operator 为除内部集群和托管 control plane 以外的所有供应商置备集群。在置备内部集群时,多集群引擎 operator 使用 OpenShift Container Platform 提供的中央基础架构管理和辅助安装程序功能。托管 control plane 托管的集群使用 HyperShift operator 置备。
1.5.4.1. 使用 CLI 创建集群
Kubernetes 的多集群引擎使用内部 Hive 组件创建 Red Hat OpenShift Container Platform 集群。请参阅以下信息以了解如何创建集群。
1.5.4.1.1. 先决条件
在创建集群前,您必须克隆 clusterImageSets 存储库,并将其应用到 hub 集群。请参见以下步骤:
运行以下命令来克隆:
git clone https://github.com/stolostron/acm-hive-openshift-releases.git cd acm-hive-openshift-releases git checkout origin/backplane-2.2
运行以下命令将其应用到 hub 集群:
find clusterImageSets/fast -type d -exec oc apply -f {} \; 2> /dev/null
在创建集群时选择 Red Hat OpenShift Container Platform 发行镜像。
1.5.4.1.2. 使用 ClusterDeployment 创建集群
ClusterDeployment
是一个 Hive 自定义资源,用于控制集群的生命周期。
按照 使用 Hive 文档创建 ClusterDeployment
自定义资源并创建单个集群。
1.5.4.1.3. 使用 ClusterPool 创建集群
ClusterPool
也是用于创建多个集群的 Hive 自定义资源。
按照 Cluster Pools 文档,使用 Hive ClusterPool
API 创建集群。
1.5.4.2. 在集群创建过程中配置额外清单
您可以在创建集群的过程中配置额外的 Kubernetes 资源清单。如果您需要为配置网络或设置负载均衡器等场景配置额外清单,这可以提供帮助。
在创建集群前,您需要添加对 ClusterDeployment
资源的引用,该资源指定包含其他资源清单的 ConfigMap
。
注: ClusterDeployment
资源和 ConfigMap
必须位于同一命名空间中。以下示例演示了您的内容看起来如何。
带有资源清单的 ConfigMap
包含具有另一个
ConfigMap
资源的清单的ConfigMap
。资源清单ConfigMap
可以包含多个键,并在data.<resource_name>\.yaml
模式中添加资源配置。kind: ConfigMap apiVersion: v1 metadata: name: <my-baremetal-cluster-install-manifests> namespace: <mynamespace> data: 99_metal3-config.yaml: | kind: ConfigMap apiVersion: v1 metadata: name: metal3-config namespace: openshift-machine-api data: http_port: "6180" provisioning_interface: "enp1s0" provisioning_ip: "172.00.0.3/24" dhcp_range: "172.00.0.10,172.00.0.100" deploy_kernel_url: "http://172.00.0.3:6180/images/ironic-python-agent.kernel" deploy_ramdisk_url: "http://172.00.0.3:6180/images/ironic-python-agent.initramfs" ironic_endpoint: "http://172.00.0.3:6385/v1/" ironic_inspector_endpoint: "http://172.00.0.3:5150/v1/" cache_url: "http://192.168.111.1/images" rhcos_image_url: "https://releases-art-rhcos.svc.ci.openshift.org/art/storage/releases/rhcos-4.3/43.81.201911192044.0/x86_64/rhcos-43.81.201911192044.0-openstack.x86_64.qcow2.gz"
使用引用的资源清单
ConfigMap
的 ClusterDeployment资源清单
ConfigMap
在spec.provisioning.manifestsConfigMapRef
下引用。apiVersion: hive.openshift.io/v1 kind: ClusterDeployment metadata: name: <my-baremetal-cluster> namespace: <mynamespace> annotations: hive.openshift.io/try-install-once: "true" spec: baseDomain: test.example.com clusterName: <my-baremetal-cluster> controlPlaneConfig: servingCertificates: {} platform: baremetal: libvirtSSHPrivateKeySecretRef: name: provisioning-host-ssh-private-key provisioning: installConfigSecretRef: name: <my-baremetal-cluster-install-config> sshPrivateKeySecretRef: name: <my-baremetal-hosts-ssh-private-key> manifestsConfigMapRef: name: <my-baremetal-cluster-install-manifests> imageSetRef: name: <my-clusterimageset> sshKnownHosts: - "10.1.8.90 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXvVVVKUYVkuyvkuygkuyTCYTytfkufTYAAAAIbmlzdHAyNTYAAABBBKWjJRzeUVuZs4yxSy4eu45xiANFIIbwE3e1aPzGD58x/NX7Yf+S8eFKq4RrsfSaK2hVJyJjvVIhUsU9z2sBJP8=" pullSecretRef: name: <my-baremetal-cluster-pull-secret>
1.5.4.3. 在 Amazon Web Services 上创建集群
您可以使用 multicluster engine operator 控制台在 Amazon Web Services (AWS)上创建 Red Hat OpenShift Container Platform 集群。
在创建集群时,创建过程使用 Hive 资源中的 OpenShift Container Platform 安装程序。如果在完成此步骤后集群创建有疑问,请参阅 OpenShift Container Platform 文档中的在 AWS 上安装 有关流程的更多信息。
1.5.4.3.1. 先决条件
在 AWS 上创建集群前请查看以下先决条件:
- 您必须已部署 hub 集群。
- 您需要 AWS 凭证。如需更多信息,请参阅为 Amazon Web Services 创建凭证。
- 您在 AWS 中需要配置的域。有关如何配置域的说明,请参阅配置 AWS 帐户。
- 您需要具有 Amazon Web Services (AWS) 登录凭证,其中包括用户名、密码、访问密钥 ID 和 secret 访问密钥。请参阅了解和获取您的安全凭证。
您必须具有 OpenShift Container Platform 镜像 pull secret。请参阅使用镜像 pull secret。
注: 如果您在云供应商上更改云供应商访问密钥,您还需要在控制台中手动更新云供应商的对应凭证。当凭证在托管受管集群的云供应商过期并尝试删除受管集群时,需要此项。
1.5.4.3.2. 创建 AWS 集群
请参阅以下有关创建 AWS 集群的重要信息:
-
当您在创建集群前查看信息并选择性地自定义它时,您可以选择 YAML: On 查看面板中的
install-config.yaml
文件内容。如果有更新,您可以使用自定义设置编辑 YAML 文件。 - 当您创建集群时,控制器会为集群和资源创建一个命名空间。确保只在该命名空间中包含该集群实例的资源。
- 销毁集群 会删除命名空间和所有资源。
-
如果要将集群添加到现有的集群集中,则需要在集群设置上具有正确的权限来添加它。如果在创建集群时没有
cluster-admin
权限,则必须选择一个具有clusterset-admin
权限的集群集。 -
如果您在指定的集群集中没有正确的权限,集群创建会失败。如果您没有任何集群集选项,请联络您的集群管理员,为集群集提供
clusterset-admin
权限。 -
每个受管集群都必须与受管集群集关联。如果您没有将受管集群分配给
ManagedClusterSet
,则会自动添加到default
受管集群集中。 - 如果已有与您使用 AWS 帐户配置的所选凭证关联的基本 DNS 域,则该值会在字段中填充。您可以修改它的值来覆盖它。此名称用于集群的主机名。
- 发行镜像标识用于创建集群的 OpenShift Container Platform 镜像的版本。从可用的镜像列表中选择镜像。如果要使用的镜像不可用,您可以输入您要使用的镜像的 URL。
节点池包括 control plane 池和 worker 池。control plane 节点共享集群活动的管理。该信息包括以下字段:
- region :指定您要节点池的区域。
- CPU 架构 :如果受管集群的架构类型与 hub 集群的架构不同,请为池中机器的说明集合架构输入一个值。有效值为 amd64, ppc64le, s390x, 和 arm64。
- Zones:指定您要运行 control plane 池的位置。您可以为更分布式的 control plane 节点选择区域中的多个区。距离更近的区域可能会提供更快的性能,但距离更远的区域可能更为分散。
- 实例类型:指定 control plane 节点的实例类型。您可以在实例创建后更改实例的类型和大小。
- 根存储:指定要为集群分配的 root 存储量。
您可以在 worker 池中创建零个或多个 worker 节点,以运行集群的容器工作负载。这可以位于单个 worker 池中,也可以分布到多个 worker 池中。如果指定了零个 worker 节点,control plane 节点也充当 worker 节点。可选信息包括以下字段:
- Zones:指定您要运行 worker 池的位置。您可以为更加分散的节点组群选择区域中的多个区。距离更近的区域可能会提供更快的性能,但距离更远的区域可能更为分散。
- 实例类型:指定 worker 池的实例类型。您可以在实例创建后更改实例的类型和大小。
- 节点数:指定 worker 池的节点计数。定义 worker 池时需要此设置。
- 根存储:指定分配给 worker 池的根存储量。定义 worker 池时需要此设置。
- 集群需要网络详情,并使用 IPv6 需要多个网络。您可以通过点 Add network 来添加额外网络。
凭证中提供的代理信息会自动添加到代理字段中。您可以使用信息原样,覆盖这些信息,或者在要启用代理时添加信息。以下列表包含创建代理所需的信息:
-
HTTP proxy:指定应用作
HTTP
流量的代理的 URL。 -
HTTPS 代理:指定用于
HTTPS
流量的安全代理 URL。如果没有提供值,则使用相同的值HTTP Proxy URL
,用于HTTP
和HTTPS
。 -
没有代理站点:应绕过代理的、以逗号分隔的站点列表。使用一个句点 (
.
) 开始的域名,包含该域中的所有子域。添加一个星号*
以绕过所有目的地的代理。 - 其他信任捆绑包:代理 HTTPS 连接所需的一个或多个额外 CA 证书。
-
HTTP proxy:指定应用作
1.5.4.3.3. 使用控制台创建集群
要创建新集群,请参阅以下步骤。如果您希望导入一个现有的集群,请参阅将目标受管集群导入到 hub 集群。
注: 您不必运行随集群提供的集群详情的 oc
命令。创建集群时,它由 multicluster engine operator 管理自动配置。
- 进入 Infrastructure > Clusters。
- 在 Clusters 页面上。点 Cluster > Create cluster 并完成控制台中的步骤。
- 可选: 在控制台中输入信息时,选择 YAML: On 查看内容更新。
如果您需要创建凭证,请参阅为 Amazon Web Services 创建凭证。
集群的主机名用于集群的主机名。
1.5.4.3.4. 其他资源
- 在创建 AWS GovCloud 集群时使用 AWS 私有配置信息。有关 在该环境中创建集群的信息,请参阅在 Amazon Web Services GovCloud 上创建集群。
- 如需更多信息 ,请参阅配置 AWS 帐户。
- 有关 发行镜像的更多信息,请参阅指定 发行镜像。
- 通过访问您的云供应商站点(如 AWS 通用实例)查找有关支持的即时类型的更多信息。
1.5.4.4. 在 Amazon Web Services GovCloud 上创建集群
您可以使用控制台在 Amazon Web Services (AWS)或 AWS GovCloud 上创建 Red Hat OpenShift Container Platform 集群。此流程解释了如何在 AWS GovCloud 上创建集群。有关在 AWS 上创建集群的说明,请参阅在 Amazon Web Services 上创建集群。
AWS GovCloud 提供满足在云上存储政府文档的额外要求的云服务。在 AWS GovCloud 上创建集群时,您必须完成额外的步骤来准备您的环境。
在创建集群时,创建过程使用 Hive 资源中的 OpenShift Container Platform 安装程序。如果在完成此步骤后集群创建有疑问,请参阅 OpenShift Container Platform 文档中的在 AWS 上安装集群到政府区域,以了解有关流程的更多信息。以下小节提供了在 AWS GovCloud 上创建集群的步骤:
1.5.4.4.1. 先决条件
创建 AWS GovCloud 集群前必须满足以下先决条件:
- 您必须具有 AWS 登录凭证,其中包括用户名、密码、访问密钥 ID 和 secret 访问密钥。请参阅了解和获取您的安全凭证。
- 您需要 AWS 凭证。如需更多信息,请参阅为 Amazon Web Services 创建凭证。
- 您在 AWS 中需要配置的域。有关如何配置域的说明,请参阅配置 AWS 帐户。
- 您必须具有 OpenShift Container Platform 镜像 pull secret。请参阅使用镜像 pull secret。
- 您必须有一个带有 hub 集群的现有 Red Hat OpenShift Container Platform 集群的 Amazon Virtual Private Cloud (VPC)。此 VPC 必须与用于受管集群资源或受管集群服务端点的 VPC 不同。
- 您需要部署受管集群资源的 VPC。这不能与用于 hub 集群或受管集群服务端点的 VPC 相同。
- 您需要一个或多个提供受管集群服务端点的 VPC。这不能与用于 hub 集群或受管集群的 VPC 相同。
- 确保由无类别域间路由(CIDR)指定的 VPC IP 地址不会重叠。
-
您需要一个
HiveConfig
自定义资源来引用 Hive 命名空间中的凭证。此自定义资源必须有权访问您为受管集群服务端点创建的 VPC 上创建资源。
注: 如果您在云供应商上更改云供应商访问密钥,您还需要在 multicluster engine operator 控制台中手动更新云供应商的对应凭证。当凭证在托管受管集群的云供应商过期并尝试删除受管集群时,需要此项。
1.5.4.4.2. 配置 Hive 以在 AWS GovCloud 上部署
在 AWS GovCloud 上创建集群时与在标准 AWS 上创建集群时,您必须完成一些额外的步骤,以便在 AWS GovCloud 上为集群准备 AWS PrivateLink。
1.5.4.4.2.1. 为资源和端点创建 VPC
如先决条件中所示,除了包含 hub 集群的 VPC 外,还需要两个 VPC。有关创建 VPC 的具体步骤,请参阅 Amazon Web Services 文档中的创建 VPC。
- 使用专用子网为受管集群创建 VPC。
- 使用专用子网为受管集群服务端点创建一个或多个 VPC。区域中的每个 VPC 限制为 255 个 VPC 端点,因此您需要多个 VPC 来支持该区域中的 255 个集群。
对于每个 VPC,在区域的所有支持的可用区中创建子网。由于控制器要求,每个子网必须至少有 255 个可用 IP 地址。
以下示例演示了如何为在
us-gov-east-1
区域中有 6 个可用区的 VPC 来构建子网:vpc-1 (us-gov-east-1) : 10.0.0.0/20 subnet-11 (us-gov-east-1a): 10.0.0.0/23 subnet-12 (us-gov-east-1b): 10.0.2.0/23 subnet-13 (us-gov-east-1c): 10.0.4.0/23 subnet-12 (us-gov-east-1d): 10.0.8.0/23 subnet-12 (us-gov-east-1e): 10.0.10.0/23 subnet-12 (us-gov-east-1f): 10.0.12.0/2
vpc-2 (us-gov-east-1) : 10.0.16.0/20 subnet-21 (us-gov-east-1a): 10.0.16.0/23 subnet-22 (us-gov-east-1b): 10.0.18.0/23 subnet-23 (us-gov-east-1c): 10.0.20.0/23 subnet-24 (us-gov-east-1d): 10.0.22.0/23 subnet-25 (us-gov-east-1e): 10.0.24.0/23 subnet-26 (us-gov-east-1f): 10.0.28.0/23
- 确保所有 hub 环境(hub 集群 VPC)都有与您为使用对等、传输网关和所有 DNS 设置创建的 VPC 创建的 VPC 的网络连接。
- 收集解决 AWS PrivateLink 的 DNS 设置所需的 VPC 列表,这是 AWS GovCloud 连接所需的。这包括您要配置的 multicluster engine operator 实例的 VPC,并可以包含所有存在 Hive 控制器的 VPC 列表。
1.5.4.4.2.2. 为 VPC 端点配置安全组
AWS 中的每个 VPC 端点都附加了一个安全组来控制对端点的访问。当 Hive 创建 VPC 端点时,它没有指定安全组。VPC 的默认安全组附加到 VPC 端点。VPC 的默认安全组必须具有规则,以允许从 Hive 安装程序 pod 创建 VPC 端点的流量。详情请参阅 AWS 文档中的使用端点策略控制对 VPC 端点的访问。
例如,如果 Hive 在 hive-vpc (10.1.0.0/16)
中运行,则 VPC 端点在创建 VPC 端点的默认安全组中必须有一个规则,它允许从 10.1.0.0/16
进行入口。
1.5.4.4.2.3. 为 AWS PrivateLink 设置权限
您需要多个凭证来配置 AWS PrivateLink。这些凭证所需的权限取决于凭证类型。
ClusterDeployment 的凭证需要以下权限:
ec2:CreateVpcEndpointServiceConfiguration ec2:DescribeVpcEndpointServiceConfigurations ec2:ModifyVpcEndpointServiceConfiguration ec2:DescribeVpcEndpointServicePermissions ec2:ModifyVpcEndpointServicePermissions ec2:DeleteVpcEndpointServiceConfigurations
端点 VPCs 帐户
.spec.awsPrivateLink.credentialsSecretRef
的 HiveConfig 凭证需要以下权限:ec2:DescribeVpcEndpointServices ec2:DescribeVpcEndpoints ec2:CreateVpcEndpoint ec2:CreateTags ec2:DescribeNetworkInterfaces ec2:DescribeVPCs ec2:DeleteVpcEndpoints route53:CreateHostedZone route53:GetHostedZone route53:ListHostedZonesByVPC route53:AssociateVPCWithHostedZone route53:DisassociateVPCFromHostedZone route53:CreateVPCAssociationAuthorization route53:DeleteVPCAssociationAuthorization route53:ListResourceRecordSets route53:ChangeResourceRecordSets route53:DeleteHostedZone
HiveConfig
自定义资源中指定的凭证将 VPC 与私有托管区(.spec.awsPrivateLink.associatedVPCs[$idx].credentialsSecretRef
)关联。VPC 所在的帐户需要以下权限:route53:AssociateVPCWithHostedZone route53:DisassociateVPCFromHostedZone ec2:DescribeVPCs
确保 hub 集群上的 Hive 命名空间中有一个凭证 secret。
HiveConfig
自定义资源需要引用 Hive 命名空间中的凭证,该凭证具有在特定提供的 VPC 中创建资源的权限。如果要在 AWS GovCloud 中置备 AWS 集群的凭证已在 Hive 命名空间中,则不需要创建另一个凭证。如果您要在 AWS GovCloud 中置备 AWS 集群的凭证还没有在 Hive 命名空间中,您可以替换当前凭证或在 Hive 命名空间中创建额外凭证。
HiveConfig
自定义资源需要包含以下内容:
- 具有为给定 VPC 置备资源所需的权限的 AWS GovCloud 凭证。
OpenShift Container Platform 集群安装的 VPC 地址以及受管集群的服务端点。
最佳实践: 为 OpenShift Container Platform 集群安装和服务端点使用不同的 VPC。
以下示例显示了凭证内容:
spec: awsPrivateLink: ## The list of inventory of VPCs that can be used to create VPC ## endpoints by the controller. endpointVPCInventory: - region: us-east-1 vpcID: vpc-1 subnets: - availabilityZone: us-east-1a subnetID: subnet-11 - availabilityZone: us-east-1b subnetID: subnet-12 - availabilityZone: us-east-1c subnetID: subnet-13 - availabilityZone: us-east-1d subnetID: subnet-14 - availabilityZone: us-east-1e subnetID: subnet-15 - availabilityZone: us-east-1f subnetID: subnet-16 - region: us-east-1 vpcID: vpc-2 subnets: - availabilityZone: us-east-1a subnetID: subnet-21 - availabilityZone: us-east-1b subnetID: subnet-22 - availabilityZone: us-east-1c subnetID: subnet-23 - availabilityZone: us-east-1d subnetID: subnet-24 - availabilityZone: us-east-1e subnetID: subnet-25 - availabilityZone: us-east-1f subnetID: subnet-26 ## The credentialsSecretRef points to a secret with permissions to create. ## The resources in the account where the inventory of VPCs exist. credentialsSecretRef: name: <hub-account-credentials-secret-name> ## A list of VPC where various mce clusters exists. associatedVPCs: - region: region-mce1 vpcID: vpc-mce1 credentialsSecretRef: name: <credentials-that-have-access-to-account-where-MCE1-VPC-exists> - region: region-mce2 vpcID: vpc-mce2 credentialsSecretRef: name: <credentials-that-have-access-to-account-where-MCE2-VPC-exists>
您可以从 端点VPCInventory 列表中支持 AWS PrivateLink 的所有区域包含一个 VPC
。控制器选择一个满足 ClusterDeployment 要求的 VPC。
如需更多信息,请参阅 Hive 文档。
1.5.4.4.3. 使用控制台创建集群
要从控制台创建集群,请导航到 Infrastructure > Clusters > Create cluster AWS > Standalone,并完成控制台中的步骤。
注: 此过程用于创建集群。如果您有一个要导入的现有集群,请参阅将目标受管集群导入到 hub 集群以了解这些步骤。
如果创建一个 AWS GovCloud 集群,则您选择的凭证必须有权访问 AWS GovCloud 区域中的资源。如果有部署集群所需的权限,您可以使用 Hive 命名空间中已存在的 AWS GovCloud secret。在控制台中显示现有凭证。如果您需要创建凭证,请参阅为 Amazon Web Services 创建凭证。
集群的主机名用于集群的主机名。
重要: 当您创建集群时,控制器会为集群及其资源创建一个命名空间。确保只在该命名空间中包含该集群实例的资源。销毁集群会删除命名空间和所有资源。
提示: 在控制台中输入信息时,选择 YAML: On 查看内容更新。
如果要将集群添加到现有的集群集中,则需要在集群设置上具有正确的权限来添加它。如果在创建集群时没有 cluster-admin
权限,则必须选择一个具有 clusterset-admin
权限的集群集。如果您在指定的集群集中没有正确的权限,集群创建会失败。如果您没有任何集群集选项,请联络您的集群管理员,为集群集提供 clusterset-admin
权限。
每个受管集群都必须与受管集群集关联。如果您没有将受管集群分配给 ManagedClusterSet
,则会自动添加到 default
受管集群集中。
如果已有与您使用 AWS 或 AWS GovCloud 帐户配置的所选凭证关联的基本 DNS 域,则该值会在字段中填充。您可以修改它的值来覆盖它。此名称用于集群的主机名。如需更多信息 ,请参阅配置 AWS 帐户。
发行镜像标识用于创建集群的 OpenShift Container Platform 镜像的版本。如果要使用的版本可用,您可以从镜像列表中选择镜像。如果您要使用的镜像不是标准镜像,您可以输入您要使用的镜像的 URL。有关 发行镜像的更多信息,请参阅指定 发行镜像。
节点池包括 control plane 池和 worker 池。control plane 节点共享集群活动的管理。该信息包括以下字段:
-
region :创建集群资源的区域。如果要在 AWS GovCloud 供应商上创建集群,则必须为节点池包含 AWS GovCloud 区域。例如,
us-gov-west-1
。 - CPU 架构 :如果受管集群的架构类型与 hub 集群的架构不同,请为池中机器的说明集合架构输入一个值。有效值为 amd64, ppc64le, s390x, 和 arm64。
- Zones:指定您要运行 control plane 池的位置。您可以为更分布式的 control plane 节点选择区域中的多个区。距离更近的区域可能会提供更快的性能,但距离更远的区域可能更为分散。
- 实例类型:指定 control plane 节点的实例类型,它必须与之前所示的 CPU 架构 相同。您可以在实例创建后更改实例的类型和大小。
- 根存储:指定要为集群分配的 root 存储量。
您可以在 worker 池中创建零个或多个 worker 节点,以运行集群的容器工作负载。它们可以位于单个 worker 池中,也可以分布在多个 worker 池中。如果指定了零个 worker 节点,control plane 节点也充当 worker 节点。可选信息包括以下字段:
- 池名称 :为您的池提供唯一名称。
- Zones:指定您要运行 worker 池的位置。您可以为更加分散的节点组群选择区域中的多个区。距离更近的区域可能会提供更快的性能,但距离更远的区域可能更为分散。
- 实例类型:指定 worker 池的实例类型。您可以在实例创建后更改实例的类型和大小。
- 节点数:指定 worker 池的节点计数。定义 worker 池时需要此设置。
- 根存储:指定分配给 worker 池的根存储量。定义 worker 池时需要此设置。
集群需要网络详情,并使用 IPv6 需要多个网络。对于 AWS GovCloud 集群,在 Machine CIDR 字段中输入 Hive VPC 地址块的值。您可以通过点 Add network 来添加额外网络。
凭证中提供的代理信息会自动添加到代理字段中。您可以使用信息原样,覆盖这些信息,或者在要启用代理时添加信息。以下列表包含创建代理所需的信息:
-
HTTP 代理 URL:指定应当用作
HTTP
流量的代理的 URL。 -
HTTPS 代理 URL:指定用于
HTTPS
流量的安全代理 URL。如果没有提供值,则使用相同的值HTTP Proxy URL
,用于HTTP
和HTTPS
。 -
无代理域:应当绕过代理的以逗号分隔的域列表。使用一个句点 (
.
) 开始的域名,包含该域中的所有子域。添加一个星号*
以绕过所有目的地的代理。 - 其他信任捆绑包:代理 HTTPS 连接所需的一个或多个额外 CA 证书。
在创建 AWS GovCloud 集群或使用私有环境时,请使用 AMI ID 和子网值完成 AWS 私有配置页面 中的字段。在 ClusterDeployment.yaml
文件中,确保 spec:platform:aws:privateLink:enabled
的值被设置为 true
,该文件在选择 Use private configuration 时会自动设置。
当您在创建集群前查看信息并选择性地自定义它时,您可以选择 YAML: On 查看面板中的 install-config.yaml
文件内容。如果有更新,您可以使用自定义设置编辑 YAML 文件。
注: 您不必运行随集群提供的集群详情的 oc
命令。创建集群时,它由 multicluster engine for Kubernetes operator 管理自动配置。
如需了解更多与访问集群相关的信息,继续访问集群。
1.5.4.5. 在 Microsoft Azure 上创建集群
您可以使用 multicluster engine operator 控制台在 Microsoft Azure 或 Microsoft Azure Government 上部署 Red Hat OpenShift Container Platform 集群。
在创建集群时,创建过程使用 Hive 资源中的 OpenShift Container Platform 安装程序。如果在完成此步骤后集群创建有疑问,请参阅 OpenShift Container Platform 文档中的在 Azure 上安装 有关流程的更多信息。
1.5.4.5.1. 先决条件
在 Azure 上创建集群前请查看以下先决条件:
- 您必须已部署 hub 集群。
- 您需要一个 Azure 凭证。如需更多信息,请参阅为 Microsoft Azure 创建凭证。
- 您需要在 Azure 或 Azure Government 中配置了域。有关如何配置域的说明,请参阅为 Azure 云服务配置自定义域名。
- 您需要 Azure 登录凭证,其中包括用户名和密码。请参阅 Microsoft Azure Portal。
-
您需要 Azure 服务主体,其中包括
clientId
、clientSecret
和tenantId
。请参阅 azure.microsoft.com。 - 您需要 OpenShift Container Platform 镜像 pull secret。请参阅使用镜像 pull secret。
注: 如果您在云供应商上更改云供应商访问密钥,则需要在 multicluster engine operator 的控制台中手动更新云供应商的对应凭证。当凭证在托管受管集群的云供应商过期并尝试删除受管集群时,需要此项。
1.5.4.5.2. 使用控制台创建集群
要从 multicluster engine operator 控制台创建集群,请进入到 Infrastructure > Clusters。在 Clusters 页面上,点 Create cluster 并完成控制台中的步骤。
注: 此过程用于创建集群。如果您有一个要导入的现有集群,请参阅将目标受管集群导入到 hub 集群以了解这些步骤。
如果您需要创建凭证,请参阅为 Microsoft Azure 创建凭证。
集群的主机名用于集群的主机名。
重要: 当您创建集群时,控制器会为集群及其资源创建一个命名空间。确保只在该命名空间中包含该集群实例的资源。销毁集群会删除命名空间和所有资源。
提示: 在控制台中输入信息时,选择 YAML: On 查看内容更新。
如果要将集群添加到现有的集群集中,则需要在集群设置上具有正确的权限来添加它。如果在创建集群时没有 cluster-admin
权限,则必须选择一个具有 clusterset-admin
权限的集群集。如果您在指定的集群集中没有正确的权限,集群创建会失败。如果您没有任何集群集选项,请联络您的集群管理员,为集群集提供 clusterset-admin
权限。
每个受管集群都必须与受管集群集关联。如果您没有将受管集群分配给 ManagedClusterSet
,则会自动添加到 default
受管集群集中。
如果已有与您为 Azure 帐户配置的所选凭证关联的基本 DNS 域,则该值会在那个字段中填充。您可以修改它的值来覆盖它。如需更多信息,请参阅为 Azure 云服务配置自定义域名。此名称用于集群的主机名。
发行镜像标识用于创建集群的 OpenShift Container Platform 镜像的版本。如果要使用的版本可用,您可以从镜像列表中选择镜像。如果您要使用的镜像不是标准镜像,您可以输入您要使用的镜像的 URL。发行镜像 以了解有关发行镜像的更多信息。
Node 池包括 control plane 池和 worker 池。control plane 节点共享集群活动的管理。该信息包括以下可选字段:
- region:指定一个您要运行节点池的区域。您可以为更分布式的 control plane 节点选择区域中的多个区。距离更近的区域可能会提供更快的性能,但距离更远的区域可能更为分散。
- CPU 架构 :如果受管集群的架构类型与 hub 集群的架构不同,请为池中机器的说明集合架构输入一个值。有效值为 amd64, ppc64le, s390x, 和 arm64。
您可以在创建集群后更改 control plane 池的 Instance type 和 Root 存储分配(必需)。
您可以在 worker 池中创建一个或多个 worker 节点,以运行集群的容器工作负载。它们可以位于单个 worker 池中,也可以分布在多个 worker 池中。如果指定了零个 worker 节点,control plane 节点也充当 worker 节点。该信息包括以下字段:
- Zones:指定您要运行 worker 池的位置。您可以为更加分散的节点组群选择区域中的多个区。距离更近的区域可能会提供更快的性能,但距离更远的区域可能更为分散。
- 实例类型:您可以在实例创建后更改实例的类型和大小。
您可以通过点 Add network 来添加额外网络。如果您使用的是 IPv6 地址,您必须有多个网络。
凭证中提供的代理信息会自动添加到代理字段中。您可以使用信息原样,覆盖这些信息,或者在要启用代理时添加信息。以下列表包含创建代理所需的信息:
-
HTTP 代理:用作
HTTP
流量的代理的 URL。 -
HTTPS 代理:用于
HTTPS
流量的安全代理 URL。如果没有提供值,则使用相同的值HTTP Proxy URL
,用于HTTP
和HTTPS
。 -
无代理:应绕过代理的以逗号分隔的域列表。使用一个句点 (
.
) 开始的域名,包含该域中的所有子域。添加一个星号*
以绕过所有目的地的代理。 - 其他信任捆绑包:代理 HTTPS 连接所需的一个或多个额外 CA 证书。
当您在创建集群前查看信息并选择性地自定义它时,您可以点 YAML 切换 On 查看面板中的 install-config.yaml
文件内容。如果有更新,您可以使用自定义设置编辑 YAML 文件。
注: 您不必运行随集群提供的集群详情的 oc
命令。创建集群时,它由 multicluster engine operator 管理自动配置。
如需了解更多与访问集群相关的信息,继续访问集群。
1.5.4.6. 在 Google Cloud Platform 上创建集群
按照步骤在 Google Cloud Platform (GCP) 上创建 Red Hat OpenShift Container Platform 集群有关 GCP 的更多信息,请参阅 Google Cloud Platform。
在创建集群时,创建过程使用 Hive 资源中的 OpenShift Container Platform 安装程序。如果在完成此步骤后集群创建有疑问,请参阅 OpenShift Container Platform 文档中的在 GCP 上安装 有关流程的更多信息。
1.5.4.6.1. 先决条件
在 GCP 上创建集群前请查看以下先决条件:
- 您必须已部署 hub 集群。
- 您必须具有 GCP 凭证。如需更多信息,请参阅为 Google Cloud Platform 创建凭证。
- 您必须在 GCP 中配置了域。有关如何配置域的说明,请参阅设置自定义域。
- 您需要 GCP 登录凭证,其中包括用户名和密码。
- 您必须具有 OpenShift Container Platform 镜像 pull secret。请参阅使用镜像 pull secret。
注: 如果您在云供应商上更改云供应商访问密钥,则需要在 multicluster engine operator 的控制台中手动更新云供应商的对应凭证。当凭证在托管受管集群的云供应商过期并尝试删除受管集群时,需要此项。
1.5.4.6.2. 使用控制台创建集群
要从 multicluster engine operator 控制台创建集群,请导航到 Infrastructure > Clusters。在 Clusters 页面上,点 Create cluster 并完成控制台中的步骤。
注: 此过程用于创建集群。如果您有一个要导入的现有集群,请参阅将目标受管集群导入到 hub 集群以了解这些步骤。
如果您需要创建凭证,请参阅为 Google Cloud Platform 创建凭证。
集群名称用于集群的主机名。在命名 GCP 集群时有一些限制。这些限制包括,名称不要以 goog
开始;名称的任何部分都不要包含与 google
类似的内容。如需了解完整的限制列表,请参阅 Bucket 命名指南。
重要: 当您创建集群时,控制器会为集群及其资源创建一个命名空间。确保只在该命名空间中包含该集群实例的资源。销毁集群会删除命名空间和所有资源。
提示: 在控制台中输入信息时,选择 YAML: On 查看内容更新。
如果要将集群添加到现有的集群集中,则需要在集群设置上具有正确的权限来添加它。如果在创建集群时没有 cluster-admin
权限,则必须选择一个具有 clusterset-admin
权限的集群集。如果您在指定的集群集中没有正确的权限,集群创建会失败。如果您没有任何集群集选项,请联络您的集群管理员,为集群集提供 clusterset-admin
权限。
每个受管集群都必须与受管集群集关联。如果您没有将受管集群分配给 ManagedClusterSet
,则会自动添加到 default
受管集群集中。
如果已有与 GCP 帐户所选凭证关联的基本 DNS 域,则该值会在字段中填充。您可以修改它的值来覆盖它。如需更多信息,请参阅设置自定义域。此名称用于集群的主机名。
发行镜像标识用于创建集群的 OpenShift Container Platform 镜像的版本。如果要使用的版本可用,您可以从镜像列表中选择镜像。如果您要使用的镜像不是标准镜像,您可以输入您要使用的镜像的 URL。发行镜像 以了解有关发行镜像的更多信息。
Node 池包括 control plane 池和 worker 池。control plane 节点共享集群活动的管理。该信息包括以下字段:
- Region:指定您要运行 control plane 池的区域。距离更近的区域可能会提供更快的性能,但距离更远的区域可能更为分散。
- CPU 架构 :如果受管集群的架构类型与 hub 集群的架构不同,请为池中机器的说明集合架构输入一个值。有效值为 amd64, ppc64le, s390x, 和 arm64。
您可以指定 control plane 池的实例类型。您可以在实例创建后更改实例的类型和大小。
您可以在 worker 池中创建一个或多个 worker 节点,以运行集群的容器工作负载。它们可以位于单个 worker 池中,也可以分布在多个 worker 池中。如果指定了零个 worker 节点,control plane 节点也充当 worker 节点。该信息包括以下字段:
- 实例类型:您可以在实例创建后更改实例的类型和大小。
- 节点数:定义 worker 池时需要此设置。
网络详细信息是必需的,需要使用 IPv6 地址的多个网络。您可以通过点 Add network 来添加额外网络。
凭证中提供的代理信息会自动添加到代理字段中。您可以使用信息原样,覆盖这些信息,或者在要启用代理时添加信息。以下列表包含创建代理所需的信息:
-
HTTP 代理:用作
HTTP
流量的代理的 URL。 -
HTTPS 代理:用于
HTTPS
流量的安全代理 URL。如果没有提供值,则使用相同的值HTTP Proxy URL
,用于HTTP
和HTTPS
。 -
没有代理站点:应绕过代理的、以逗号分隔的站点列表。使用一个句点 (
.
) 开始的域名,包含该域中的所有子域。添加一个星号*
以绕过所有目的地的代理。 - 其他信任捆绑包:代理 HTTPS 连接所需的一个或多个额外 CA 证书。
当您在创建集群前查看信息并选择性地自定义它时,您可以选择 YAML: On 查看面板中的 install-config.yaml
文件内容。如果有更新,您可以使用自定义设置编辑 YAML 文件。
注: 您不必运行随集群提供的集群详情的 oc
命令。创建集群时,它由 multicluster engine operator 管理自动配置。
如需了解更多与访问集群相关的信息,继续访问集群。
1.5.4.7. 在 VMware vSphere 上创建集群
您可以使用多集群引擎 operator 控制台在 VMware vSphere 上部署 Red Hat OpenShift Container Platform 集群。
在创建集群时,创建过程使用 Hive 资源中的 OpenShift Container Platform 安装程序。如果在完成此步骤后集群创建有疑问,请参阅 OpenShift Container Platform 文档中的在 vSphere 上安装 有关流程的更多信息。
1.5.4.7.1. 先决条件
在 vSphere 上创建集群前请查看以下先决条件:
- 您必须有一个在 OpenShift Container Platform 版本 4.6 或更高版本上部署的 hub 集群。
- 您需要 vSphere 凭证。如需更多信息,请参阅为 VMware vSphere 创建凭证。
- 您需要 OpenShift Container Platform 镜像 pull secret。请参阅使用镜像 pull secret。
您必须具有要部署的 VMware 实例的以下信息:
- API 和 Ingress 实例所需的静态 IP 地址
以下的 DNS 记录:
-
api.<cluster_name>.<base_domain>
,它必须指向静态 API VIP -
*.apps.<cluster_name>.<base_domain>
,它必须指向 Ingress VIP 的静态 IP 地址
-
1.5.4.7.2. 使用控制台创建集群
要从 multicluster engine operator 控制台创建集群,请进入到 Infrastructure > Clusters。在 Clusters 页面上,点 Create cluster 并完成控制台中的步骤。
注: 此过程用于创建集群。如果您有一个要导入的现有集群,请参阅将目标受管集群导入到 hub 集群以了解这些步骤。
如果您需要创建凭证,请参阅为 VMware vSphere 创建凭证,以了解有关创建凭证的更多信息。
集群名称用于集群的主机名。
重要: 当您创建集群时,控制器会为集群及其资源创建一个命名空间。确保只在该命名空间中包含该集群实例的资源。销毁集群会删除命名空间和所有资源。
提示: 在控制台中输入信息时,选择 YAML: On 查看内容更新。
如果要将集群添加到现有的集群集中,则需要在集群设置上具有正确的权限来添加它。如果在创建集群时没有 cluster-admin
权限,则必须选择一个具有 clusterset-admin
权限的集群集。如果您在指定的集群集中没有正确的权限,集群创建会失败。如果您没有任何集群集选项,请联络您的集群管理员,为集群集提供 clusterset-admin
权限。
每个受管集群都必须与受管集群集关联。如果您没有将受管集群分配给 ManagedClusterSet
,则会自动添加到 default
受管集群集中。
如果已有与您为 vSphere 帐户配置的所选凭证关联的基域,则该值会在字段中填充。您可以修改它的值来覆盖它。如需更多信息 ,请参阅使用自定义在 vSphere 上安装集群。这个值必须与创建 prerequisites 部分中列出的 DNS 记录的名称匹配。此名称用于集群的主机名。
发行镜像标识用于创建集群的 OpenShift Container Platform 镜像的版本。如果要使用的版本可用,您可以从镜像列表中选择镜像。如果您要使用的镜像不是标准镜像,您可以输入您要使用的镜像的 URL。如需有关 发行镜像的更多信息,请参阅指定 发行镜像
注: 仅支持 OpenShift Container Platform 版本 4.5.x 或更高版本的发行镜像。
节点池包括 control plane 池和 worker 池。control plane 节点共享集群活动的管理。该信息包括 CPU 架构 字段。查看以下字段描述:
- CPU 架构 :如果受管集群的架构类型与 hub 集群的架构不同,请为池中机器的说明集合架构输入一个值。有效值为 amd64, ppc64le, s390x, 和 arm64。
您可以在 worker 池中创建一个或多个 worker 节点,以运行集群的容器工作负载。它们可以位于单个 worker 池中,也可以分布在多个 worker 池中。如果指定了零个 worker 节点,control plane 节点也充当 worker 节点。该信息包括 每个插槽的内核数、CPU、Memory_min MiB、_Disk 大小 (以 GiB 为单位)和 节点数。
需要网络信息。使用 IPv6 需要多个网络。一些所需网络信息包括以下字段:
- vSphere 网络名:指定 VMware vSphere 网络名称。
API VIP:指定用于内部 API 通信的 IP 地址。
注: 这个值必须与您用来创建 prerequisites 部分中列出的 DNS 记录的名称匹配。如果没有提供,DNS 必须预先配置,以便
api.
可以正确解析。Ingress VIP:指定用于入口流量的 IP 地址。
注: 这个值必须与您用来创建 prerequisites 部分中列出的 DNS 记录的名称匹配。如果没有提供,则必须预先配置 DNS,以便
test.apps
可以被正确解析。
您可以通过点 Add network 来添加额外网络。如果您使用的是 IPv6 地址,您必须有多个网络。
凭证中提供的代理信息会自动添加到代理字段中。您可以使用信息原样,覆盖这些信息,或者在要启用代理时添加信息。以下列表包含创建代理所需的信息:
-
HTTP proxy:指定应用作
HTTP
流量的代理的 URL。 -
HTTPS 代理:指定用于
HTTPS
流量的安全代理 URL。如果没有提供值,则使用相同的值HTTP Proxy URL
,用于HTTP
和HTTPS
。 -
没有代理站点:提供以逗号分隔的站点列表,这些站点应绕过代理。使用一个句点 (
.
) 开始的域名,包含该域中的所有子域。添加一个星号*
以绕过所有目的地的代理。 - 其他信任捆绑包:代理 HTTPS 连接所需的一个或多个额外 CA 证书。
您可以点 Disconnected 安装来定义断开连接的安装镜像。当使用 Red Hat OpenStack Platform 供应商和断开连接的安装创建集群时,如果需要一个证书才能访问镜像 registry,在配置集群时需要在 Configuration for disconnected installation 段中的 Additional trust bundle 字段中输入它,在创建集群时在 Disconnected installation 段中输入它。
您可以点击 Add Automation template 来创建模板。
当您在创建集群前查看信息并选择性地自定义它时,您可以点 YAML 切换 On 查看面板中的 install-config.yaml
文件内容。如果有更新,您可以使用自定义设置编辑 YAML 文件。
注: 您不必运行随集群提供的集群详情的 oc
命令。创建集群时,它由 multicluster engine operator 管理自动配置。
如需了解更多与访问集群相关的信息,继续访问集群。
1.5.4.8. 在 Red Hat OpenStack Platform 上创建集群
您可以使用多集群引擎 operator 控制台在 Red Hat OpenStack Platform 上部署 Red Hat OpenShift Container Platform 集群。
在创建集群时,创建过程使用 Hive 资源中的 OpenShift Container Platform 安装程序。如果在完成此步骤后集群创建有疑问,请参阅 OpenShift Container Platform 文档中的在 OpenStack 上安装 OpenStack 以了解有关流程的更多信息。
1.5.4.8.1. 先决条件
在 Red Hat OpenStack Platform 上创建集群前请查看以下先决条件:
- 您必须有一个在 OpenShift Container Platform 版本 4.6 或更高版本上部署的 hub 集群。
- 您必须具有 Red Hat OpenStack Platform 凭证。如需更多信息,请参阅为 Red Hat OpenStack Platform 创建凭证。
- 您需要 OpenShift Container Platform 镜像 pull secret。请参阅使用镜像 pull secret。
您要部署的 Red Hat OpenStack Platform 实例需要以下信息:
-
control plane 和 worker 实例的 flavor 名称,如
m1.xlarge
- 外部网络的网络名称,以提供浮动 IP 地址
- API 和入口实例所需的浮动 IP 地址
以下的 DNS 记录:
-
api.<cluster_name>.<base_domain>
,它必须指向 API 的浮动 IP 地址 -
*.apps.<cluster_name>.<base_domain>
,它必须指向 ingress 的浮动 IP 地址
-
-
control plane 和 worker 实例的 flavor 名称,如
1.5.4.8.2. 使用控制台创建集群
要从 multicluster engine operator 控制台创建集群,请进入到 Infrastructure > Clusters。在 Clusters 页面上,点 Create cluster 并完成控制台中的步骤。
注: 此过程用于创建集群。如果您有一个要导入的现有集群,请参阅将目标受管集群导入到 hub 集群以了解这些步骤。
如果您需要创建凭证,请参阅为 Red Hat OpenStack Platform 创建凭证。
集群的主机名用于集群的主机名。名称必须包含少于 15 个字符。这个值必须与创建凭证先决条件中列出的 DNS 记录的名称匹配。
重要: 当您创建集群时,控制器会为集群及其资源创建一个命名空间。确保只在该命名空间中包含该集群实例的资源。销毁集群会删除命名空间和所有资源。
提示: 在控制台中输入信息时,选择 YAML: On 查看内容更新。
如果要将集群添加到现有的集群集中,则需要在集群设置上具有正确的权限来添加它。如果在创建集群时没有 cluster-admin
权限,则必须选择一个具有 clusterset-admin
权限的集群集。如果您在指定的集群集中没有正确的权限,集群创建会失败。如果您没有任何集群集选项,请联络您的集群管理员,为集群集提供 clusterset-admin
权限。
每个受管集群都必须与受管集群集关联。如果您没有将受管集群分配给 ManagedClusterSet
,则会自动添加到 default
受管集群集中。
如果已有与您为 Red Hat OpenStack Platform 帐户配置的所选凭证关联的基本 DNS 域,则该值会在字段中填充。您可以修改它的值来覆盖它。如需更多信息,请参阅 Red Hat OpenStack Platform 文档中的管理域。此名称用于集群的主机名。
发行镜像标识用于创建集群的 OpenShift Container Platform 镜像的版本。如果要使用的版本可用,您可以从镜像列表中选择镜像。如果您要使用的镜像不是标准镜像,您可以输入您要使用的镜像的 URL。发行镜像 以了解有关发行镜像的更多信息。仅支持 OpenShift Container Platform 版本 4.6.x 或更高版本的发行镜像。
节点池包括 control plane 池和 worker 池。control plane 节点共享集群活动的管理。如果受管集群的构架类型与 hub 集群的架构不同,请为池中机器的说明集合架构输入一个值。有效值为 amd64, ppc64le, s390x, 和 arm64。
您必须为 control plane 池添加实例类型,但您可以在创建后更改实例的类型和大小。
您可以在 worker 池中创建一个或多个 worker 节点,以运行集群的容器工作负载。它们可以位于单个 worker 池中,也可以分布在多个 worker 池中。如果指定了零个 worker 节点,control plane 节点也充当 worker 节点。该信息包括以下字段:
- 实例类型:您可以在实例创建后更改实例的类型和大小。
- 节点数:指定 worker 池的节点数。定义 worker 池时需要此设置。
集群需要网络详情。您必须为 IPv4 网络提供一个或多个网络的值。对于 IPv6 网络,您必须定义多个网络。
您可以通过点 Add network 来添加额外网络。如果您使用的是 IPv6 地址,您必须有多个网络。
凭证中提供的代理信息会自动添加到代理字段中。您可以使用信息原样,覆盖这些信息,或者在要启用代理时添加信息。以下列表包含创建代理所需的信息:
-
HTTP proxy:指定应用作
HTTP
流量的代理的 URL。 -
HTTPS 代理:用于
HTTPS
流量的安全代理 URL。如果没有提供值,则与HTTP 代理
相同的值用于HTTP
和HTTPS
。 -
no proxy :定义应绕过代理的站点的逗号分隔列表。使用一个句点 (
.
) 开始的域名,包含该域中的所有子域。添加一个星号*
以绕过所有目的地的代理。 - 其他信任捆绑包:代理 HTTPS 连接所需的一个或多个额外 CA 证书。
您可以点 Disconnected 安装来定义断开连接的安装镜像。当使用 Red Hat OpenStack Platform 供应商和断开连接的安装创建集群时,如果需要一个证书才能访问镜像 registry,在配置集群时需要在 Configuration for disconnected installation 段中的 Additional trust bundle 字段中输入它,在创建集群时在 Disconnected installation 段中输入它。
当您在创建集群前查看信息并选择性地自定义它时,您可以点 YAML 切换 On 查看面板中的 install-config.yaml
文件内容。如果有更新,您可以使用自定义设置编辑 YAML 文件。
在创建使用内部证书颁发机构(CA)的集群时,您需要通过完成以下步骤为集群自定义 YAML 文件:
使用 review 步骤上的 YAML 开关,使用 CA 证书捆绑包在列表的顶部插入
Secret
对象。注: 如果 Red Hat OpenStack Platform 环境使用由多个机构签名的证书提供服务,则捆绑包必须包含用于验证所有所需端点的证书。为名为ocp3
的集群添加类似于以下示例:apiVersion: v1 kind: Secret type: Opaque metadata: name: ocp3-openstack-trust namespace: ocp3 stringData: ca.crt: | -----BEGIN CERTIFICATE----- <Base64 certificate contents here> -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- <Base64 certificate contents here> -----END CERTIFICATE----
修改 Hive
ClusterDeployment
对象,在spec.platform.openstack
中指定 certificateSecretRef
的值,如下例所示:platform: openstack: certificatesSecretRef: name: ocp3-openstack-trust credentialsSecretRef: name: ocp3-openstack-creds cloud: openstack
前面的示例假定
clouds.yaml
文件中的云名称为openstack
。
注: 您不必运行随集群提供的集群详情的 oc
命令。创建集群时,它由 multicluster engine operator 管理自动配置。
如需了解更多与访问集群相关的信息,继续访问集群。
1.5.4.9. 在 Red Hat Virtualization 上创建集群
您可以使用多集群引擎 operator 控制台在 Red Hat Virtualization 上创建 Red Hat OpenShift Container Platform 集群。
在创建集群时,创建过程使用 Hive 资源中的 OpenShift Container Platform 安装程序。如果在完成此步骤后集群创建有疑问,请参阅 OpenShift Container Platform 文档中的在 RHV 上安装 有关流程的更多信息。
1.5.4.9.1. 先决条件
在 Red Hat Virtualization 上创建集群前请查看以下先决条件:
- 您必须已部署 hub 集群。
- 您需要 Red Hat Virtualization 凭证。如需更多信息,请参阅为 Red Hat Virtualization 创建凭证。
- 您需要 oVirt Engine 虚拟机配置的域和虚拟机代理。有关如何配置域的说明,请参阅 Red Hat OpenShift Container Platform 文档中的在 RHV 上安装。
- 您必须具有 Red Hat Virtualization 登录凭证,其中包括您的红帽客户门户网站用户名和密码。
- 您需要 OpenShift Container Platform 镜像 pull secret。您可以从以下位置下载 pull secret: Pull secret。如需有关 pull secret 的更多信息,请参阅使用镜像 pull secret。
注: 如果您在云供应商上更改云供应商访问密钥,则需要在 multicluster engine operator 的控制台中手动更新云供应商的对应凭证。当凭证在托管受管集群的云供应商过期并尝试删除受管集群时,需要此项。
1.5.4.9.2. 使用控制台创建集群
要从 multicluster engine operator 控制台创建集群,请进入到 Infrastructure > Clusters。在 Clusters 页面上,点 Create cluster 并完成控制台中的步骤。
注: 此过程用于创建集群。如果您有一个要导入的现有集群,请参阅将目标受管集群导入到 hub 集群以了解这些步骤。
如果您需要创建凭证,请参阅为 Red Hat Virtualization 创建凭证。
集群名称用于集群的主机名。
重要: 当您创建集群时,控制器会为集群及其资源创建一个命名空间。确保只在该命名空间中包含该集群实例的资源。销毁集群会删除命名空间和所有资源。
提示: 在控制台中输入信息时,选择 YAML: On 查看内容更新。
如果要将集群添加到现有的集群集中,则需要在集群设置上具有正确的权限来添加它。如果在创建集群时没有 cluster-admin
权限,则必须选择一个具有 clusterset-admin
权限的集群集。如果您在指定的集群集中没有正确的权限,集群创建会失败。如果您没有任何集群集选项,请联络您的集群管理员,为集群集提供 clusterset-admin
权限。
每个受管集群都必须与受管集群集关联。如果您没有将受管集群分配给 ManagedClusterSet
,则会自动添加到 default
受管集群集中。
如果已有与您为 Red Hat Virtualization 帐户配置的所选凭证关联的基本 DNS 域,则该值会在那个字段中填充。您可以覆盖该值来更改它。
发行镜像标识用于创建集群的 OpenShift Container Platform 镜像的版本。如果要使用的版本可用,您可以从镜像列表中选择镜像。如果您要使用的镜像不是标准镜像,您可以输入您要使用的镜像的 URL。发行镜像 以了解有关发行镜像的更多信息。
节点池的信息包括 control plane 池的内核、插槽、内存和磁盘大小。这三个 control plane 节点共享集群活动的管理。该信息包括 Architecture 字段。查看以下字段描述:
- CPU 架构 :如果受管集群的架构类型与 hub 集群的架构不同,请为池中机器的说明集合架构输入一个值。有效值为 amd64, ppc64le, s390x, 和 arm64。
worker 池信息需要池名称、内核数量、内存分配、磁盘大小分配和 worker 池的节点数。worker 池中的 worker 节点可以在单个 worker 池中,也可以分布到多个 worker 池中。
您预先配置的 oVirt 环境中需要以下网络详情。
- ovirt 网络名称
- vNIC 配置文件 ID:指定虚拟网卡配置文件 ID。
API VIP:指定用于内部 API 通信的 IP 地址。
注: 这个值必须与您用来创建 prerequisites 部分中列出的 DNS 记录的名称匹配。如果没有提供,DNS 必须预先配置,以便
api.
可以正确解析。Ingress VIP:指定用于入口流量的 IP 地址。
注: 这个值必须与您用来创建 prerequisites 部分中列出的 DNS 记录的名称匹配。如果没有提供,则必须预先配置 DNS,以便
test.apps
可以被正确解析。-
Network type:默认值为
OpenShiftSDN
。OVNKubernetes 是使用 IPv6 的必要设置。 -
Cluster network CIDR:此 IP 地址可用于 pod IP 地址的数量和列表。这个块不能与另一个网络块重叠。默认值为
10.128.0.0/14
。 -
网络主机前缀:为每个节点设置子网前缀长度。默认值为
23
。 -
Service network CIDR:为服务提供 IP 地址块。这个块不能与另一个网络块重叠。默认值为
172.30.0.0/16
。 Machine CIDR:提供 OpenShift Container Platform 主机使用的 IP 地址块。这个块不能与另一个网络块重叠。默认值为
10.0.0.0/16
。您可以通过点 Add network 来添加额外网络。如果您使用的是 IPv6 地址,您必须有多个网络。
凭证中提供的代理信息会自动添加到代理字段中。您可以使用信息原样,覆盖这些信息,或者在要启用代理时添加信息。以下列表包含创建代理所需的信息:
-
HTTP proxy:指定应用作
HTTP
流量的代理的 URL。 -
HTTPS 代理:指定用于
HTTPS
流量的安全代理 URL。如果没有提供值,则使用相同的值HTTP Proxy URL
,用于HTTP
和HTTPS
。 -
没有代理站点:提供以逗号分隔的站点列表,这些站点应绕过代理。使用一个句点 (
.
) 开始的域名,包含该域中的所有子域。添加一个星号*
以绕过所有目的地的代理。 - 其他信任捆绑包:代理 HTTPS 连接所需的一个或多个额外 CA 证书。
当您在创建集群前查看信息并选择性地自定义它时,您可以点 YAML 切换 On 查看面板中的 install-config.yaml
文件内容。如果有更新,您可以使用自定义设置编辑 YAML 文件。
注: 您不必运行随集群提供的集群详情的 oc
命令。创建集群时,它由 multicluster engine operator 管理自动配置。
如需了解更多与访问集群相关的信息,继续访问集群。
1.5.4.10. 在内部环境中创建集群
您可以使用控制台创建内部 Red Hat OpenShift Container Platform 集群。
您可以使用此流程在 VMware vSphere、Red Hat OpenStack、Red Hat Virtualization Platform 和裸机环境中创建单节点 OpenShift (SNO)集群、多节点集群和紧凑的三节点集群。
没有与安装集群的平台集成,因为平台值设置为 platform=none
。单节点 OpenShift 集群仅包含一个节点,用于托管 control plane 服务和用户工作负载。当您要最小化集群资源占用空间时,此配置很有用。
您还可以使用零接触置备功能在边缘资源上置备多个单节点 OpenShift 集群,该功能可通过 Red Hat OpenShift Container Platform 使用。如需更多信息,请参阅 OpenShift Container Platform 文档中的在断开连接的环境中大规模部署分布式单元。
1.5.4.10.1. 先决条件
在内部环境中创建集群前需要满足以下先决条件:
- 您必须在 OpenShift Container Platform 版本 4.9 或更高版本上部署了 hub 集群。
- 您需要配置了主机主机清单的基础架构环境。
- 您必须对 hub 集群(连接)或连接到连接到互联网(断开连接)的内部或镜像 registry 的连接,以检索用于创建集群所需的镜像。
- 您需要配置了内部凭证。
- 您需要 OpenShift Container Platform 镜像 pull secret。如需更多信息,请参阅使用镜像 pull secret。
1.5.4.10.2. 使用控制台创建集群
要从控制台创建集群,请导航到 Infrastructure > Clusters。在 Clusters 页面上,点 Create cluster 并完成控制台中的步骤。
- 选择 Host inventory 作为集群的类型。
以下选项可用于您的支持安装:
- 使用现有发现的主机 :从现有主机清单中的主机列表中选择您的主机。
- 发现新主机 :发现不在现有基础架构环境中的主机。发现您自己的主机,而不是使用已在基础架构环境中的主机。
如果您需要创建凭证,请参阅 为内部环境创建凭证。
集群的名称用于集群的主机名。
重要: 当您创建集群时,控制器会为集群及其资源创建一个命名空间。确保只在该命名空间中包含该集群实例的资源。销毁集群会删除命名空间和所有资源。
提示: 在控制台中输入信息时,选择 YAML: On 查看内容更新。
如果要将集群添加到现有的集群集中,则需要在集群设置上具有正确的权限来添加它。如果在创建集群时没有 cluster-admin
权限,则必须选择一个具有 clusterset-admin
权限的集群集。如果您在指定的集群集中没有正确的权限,集群创建会失败。如果您没有任何集群集选项,请联络您的集群管理员,为集群集提供 clusterset-admin
权限。
每个受管集群都必须与受管集群集关联。如果您没有将受管集群分配给 ManagedClusterSet
,则会自动添加到 default
受管集群集中。
如果已有与您为供应商帐户配置的所选凭证关联的基本 DNS 域,则该值会在那个字段中填充。您可以通过覆盖它来更改值,但创建集群后无法更改此设置。此基础域用于创建到 OpenShift Container Platform 集群组件的路由。它在集群供应商的 DNS 中被配置为授权起始(SOA)记录。
OpenShift 版本 标识用于创建集群的 OpenShift Container Platform 镜像的版本。如果要使用的版本可用,您可以从镜像列表中选择镜像。如果您要使用的镜像不是标准镜像,您可以输入您要使用的镜像的 URL。发行镜像 以了解有关发行镜像的更多信息。
当您选择 4.9 或更高版本的 OpenShift 版本时,会显示 Install single node OpenShift(SNO) 的选项。单节点 OpenShift 集群仅包含一个节点,用于托管 control plane 服务和用户工作负载。
如果您希望集群是一个单节点 OpenShift 集群,请选择 单节点 OpenShift 选项。您可以通过完成以下步骤,向单节点 OpenShift 集群添加额外的 worker:
- 在控制台中,导航到 Infrastructure > Clusters,再选择您创建的或想要访问的集群名称。
- 选择 Actions > Add hosts 来添加额外的 worker。
注: 单节点 OpenShift control plane 需要 8 个 CPU 内核,而多节点 control plane 集群的 control plane 节点只需要 4 个 CPU 内核。
查看并保存集群后,您的集群将保存为集群草稿。您可以通过在 Clusters 页面中选择集群名称来关闭创建过程,并在稍后完成该过程。
如果您使用的是现有主机,请选择是否要自行选择主机,还是自动选择它们。主机数量取决于您选择的节点数量。例如,SNO 集群只需要一个主机,而标准的三节点集群需要三个主机。
主机位置列表中显示了满足此集群要求的可用主机位置。对于主机的分发和更加高可用性的配置,请选择多个位置。
如果您要发现没有现有基础架构环境的新主机,请使用 Discovery Image 完成将主机添加到主机清单中的步骤。
绑定主机以及验证通过后,通过添加以下 IP 地址完成集群的网络信息:
API VIP:指定用于内部 API 通信的 IP 地址。
注: 这个值必须与您用来创建 prerequisites 部分中列出的 DNS 记录的名称匹配。如果没有提供,DNS 必须预先配置,以便
api.
可以正确解析。Ingress VIP:指定用于入口流量的 IP 地址。
注: 这个值必须与您用来创建 prerequisites 部分中列出的 DNS 记录的名称匹配。如果没有提供,则必须预先配置 DNS,以便
test.apps
可以被正确解析。
您可以在 Clusters 导航页面中查看安装状态。
如需了解更多与访问集群相关的信息,继续访问集群。
1.5.4.10.3. 使用命令行创建集群
您还可以使用中央基础架构管理组件中的辅助安装程序功能在没有控制台的情况下创建集群。完成此步骤后,您可以从生成的发现镜像引导主机。步骤的顺序通常并不重要,但在有必要顺序时请注意。
1.5.4.10.3.1. 创建命名空间
需要一个资源的命名空间。将所有资源保留在共享命名空间中更为方便。本例使用 sample-namespace
作为命名空间的名称,但您可以使用除 assisted-installer
以外的任何名称。通过创建并应用以下文件来创建命名空间:
apiVersion: v1 kind: Namespace metadata: name: sample-namespace
1.5.4.10.3.2. 将 pull secret 添加到命名空间
通过创建并应用以下自定义资源,将 pull secret 添加到您的命名空间中:
apiVersion: v1
kind: Secret
type: kubernetes.io/dockerconfigjson
metadata:
name: <pull-secret>
namespace: sample-namespace
stringData:
.dockerconfigjson: 'your-pull-secret-json' 1
- 1
- 添加 pull secret 的内容。例如,这可以包括
cloud.openshift.com
、quay.io
或registry.redhat.io
身份验证。
1.5.4.10.3.3. 创建 ClusterImageSet
通过创建并应用以下自定义资源,生成 CustomImageSet
来为集群指定 OpenShift Container Platform 版本:
apiVersion: hive.openshift.io/v1 kind: ClusterImageSet metadata: name: openshift-v4.12.0 spec: releaseImage: quay.io/openshift-release-dev/ocp-release:4.12.0-rc.0-x86_64
1.5.4.10.3.4. 创建 ClusterDeployment 自定义资源
ClusterDeployment
自定义资源定义是一个控制集群生命周期的 API。它引用了定义集群参数的 spec.ClusterInstallRef
设置中的 AgentClusterInstall
自定义资源。
根据以下示例创建并应用 ClusterDeployment
自定义资源:
apiVersion: hive.openshift.io/v1 kind: ClusterDeployment metadata: name: single-node namespace: demo-worker4 spec: baseDomain: hive.example.com clusterInstallRef: group: extensions.hive.openshift.io kind: AgentClusterInstall name: test-agent-cluster-install 1 version: v1beta1 clusterName: test-cluster controlPlaneConfig: servingCertificates: {} platform: agentBareMetal: agentSelector: matchLabels: location: internal pullSecretRef: name: <pull-secret> 2
- 1
- 使用
AgentClusterInstall
资源的名称。 - 2
- 使用您下载的 pull secret 将 pull secret 添加到命名空间。
1.5.4.10.3.5. 创建 AgentClusterInstall 自定义资源
在 AgentClusterInstall
自定义资源中,您可以指定集群的许多要求。例如,您可以指定集群网络设置、平台、control plane 数量和 worker 节点。
创建并添加类似以下示例的自定义资源:
apiVersion: extensions.hive.openshift.io/v1beta1 kind: AgentClusterInstall metadata: name: test-agent-cluster-install namespace: demo-worker4 spec: platformType: BareMetal 1 clusterDeploymentRef: name: single-node 2 imageSetRef: name: openshift-v4.12.0 3 networking: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 machineNetwork: - cidr: 192.168.111.0/24 serviceNetwork: - 172.30.0.0/16 provisionRequirements: controlPlaneAgents: 1 sshPublicKey: ssh-rsa <your-public-key-here> 4
- 1
- 指定创建集群的环境的平台类型。有效值为
BareMetal
、无
、VSphere
或External
。 - 2
- 使用与
ClusterDeployment
资源相同的名称。 - 3
- 使用在生成一个ClusterImageSet 中生成的
ClusterImageSet
。 - 4
- 您可以指定 SSH 公钥,该密钥可让您在安装后访问主机。
1.5.4.10.3.6. 可选:创建 NMStateConfig 自定义资源
只有在有主机级别网络配置(如静态 IP 地址)时才需要 NMStateConfig
自定义资源。如果包含此自定义资源,则必须在创建 InfraEnv
自定义资源前完成此步骤。NMStateConfig
由 InfraEnv
自定义资源中的 spec.nmStateConfigLabelSelector
的值引用。
创建并应用 NMStateConfig
自定义资源,如下例所示。根据需要替换值:
apiVersion: agent-install.openshift.io/v1beta1 kind: NMStateConfig metadata: name: <mynmstateconfig> namespace: <demo-worker4> labels: demo-nmstate-label: <value> spec: config: interfaces: - name: eth0 type: ethernet state: up mac-address: 02:00:00:80:12:14 ipv4: enabled: true address: - ip: 192.168.111.30 prefix-length: 24 dhcp: false - name: eth1 type: ethernet state: up mac-address: 02:00:00:80:12:15 ipv4: enabled: true address: - ip: 192.168.140.30 prefix-length: 24 dhcp: false dns-resolver: config: server: - 192.168.126.1 routes: config: - destination: 0.0.0.0/0 next-hop-address: 192.168.111.1 next-hop-interface: eth1 table-id: 254 - destination: 0.0.0.0/0 next-hop-address: 192.168.140.1 next-hop-interface: eth1 table-id: 254 interfaces: - name: "eth0" macAddress: "02:00:00:80:12:14" - name: "eth1" macAddress: "02:00:00:80:12:15"
注: 您必须在 InfraEnv
资源 spec.nmStateConfigLabelSelector.matchLabels
字段中包含 demo-nmstate-label
标签名称和值。
1.5.4.10.3.7. 创建 InfraEnv 自定义资源
InfraEnv
自定义资源提供创建发现 ISO 的配置。在这个自定义资源中,您可以识别代理设置、ignition overrides 并指定 NMState
标签的值。此自定义资源中的 spec.nmStateConfigLabelSelector
值引用 NMStateConfig
自定义资源。
注: 如果您计划包含可选的 NMStateConfig
自定义资源,您必须在 InfraEnv
自定义资源中引用它。如果您在创建 NMStateConfig
自定义资源前创建 InfraEnv
自定义资源,请编辑 InfraEnv
自定义资源来引用 NMStateConfig
自定义资源,并在添加引用后下载 ISO。
创建并应用以下自定义资源:
apiVersion: agent-install.openshift.io/v1beta1 kind: InfraEnv metadata: name: myinfraenv namespace: demo-worker4 spec: clusterRef: name: single-node 1 namespace: demo-worker4 2 pullSecretRef: name: pull-secret sshAuthorizedKey: <your_public_key_here> 3 nmStateConfigLabelSelector: matchLabels: demo-nmstate-label: value 4
- 1
- 替换 Create the ClusterDeployment 中的
clusterDeployment
资源名称。 - 2
- 替换 Create the ClusterDeployment 中的
clusterDeployment
资源命名空间。 - 3
- 可选: 您可以指定 SSH 公钥,这可让您在从发现 ISO 镜像引导时访问主机。
- 4
1.5.4.10.3.8. 从发现镜像引导主机
剩余的步骤解释了如何从之前的步骤发现 ISO 镜像引导主机。
运行以下命令,从命名空间下载发现镜像:
curl --insecure -o image.iso $(kubectl -n sample-namespace get infraenvs.agent-install.openshift.io myinfraenv -o=jsonpath="{.status.isoDownloadURL}")
- 将发现镜像移到虚拟介质、USB 驱动器或其他存储位置,并从您下载的发现镜像引导主机。
Agent
资源会自动创建。它注册到集群,并代表从发现镜像引导的主机。运行以下命令来批准Agent
自定义资源并启动安装:oc -n sample-namespace patch agents.agent-install.openshift.io 07e80ea9-200c-4f82-aff4-4932acb773d4 -p '{"spec":{"approved":true}}' --type merge
将代理名称和 UUID 替换为您的值。
当上一命令的输出包含目标集群的条目时,您可以确认它已被批准,其中包括
APPROVED
参数的值为true
。
1.5.4.11. 休眠创建的集群(技术预览)
您可以休眠使用 multicluster engine operator 创建的集群来节省资源。休眠集群需要的资源比正在运行的资源要少得多,因此您可以通过将集群移入和停止休眠状态来降低供应商成本。此功能只适用于在以下环境中由 multicluster engine operator 创建的集群:
- Amazon Web Services
- Microsoft Azure
- Google Cloud Platform
1.5.4.11.1. 使用控制台休眠集群
要使用控制台休眠由多集群引擎 operator 创建的集群,请完成以下步骤:
- 在导航菜单中选择 Infrastructure > Clusters。确保已选中 Manage cluster 选项卡。
- 从集群的 Options 菜单中选择 Hibernate cluster。注:如果 Hibernate cluster 选项不可用,您就无法休眠该群集。当集群导入且不是由 multicluster engine operator 创建时,会出现这种情况。
当进程完成后,Clusters 页面中的集群状态为 Hibernating
。
提示:您可以通过在 Clusters 页面上选择要休眠的集群并选择 Actions > Hibernate clusters来休眠多个集群。
您选择的集群正在休眠。
1.5.4.11.2. 使用 CLI Hibernate 集群
要使用 CLI 休眠由多集群引擎 operator 创建的集群,请完成以下步骤:
输入以下命令编辑您要休眠的集群设置:
oc edit clusterdeployment <name-of-cluster> -n <namespace-of-cluster>
将
name-of-cluster
替换为您要休眠的集群的名称。将
namespace-of-cluster
替换为您要休眠的集群的命名空间。-
将
spec.powerState
的值改为Hibernating
。 输入以下命令查看集群的状态:
oc get clusterdeployment <name-of-cluster> -n <namespace-of-cluster> -o yaml
将
name-of-cluster
替换为您要休眠的集群的名称。将
namespace-of-cluster
替换为您要休眠的集群的命名空间。当集群休眠过程完成时,集群的 type 值为
type=Hibernating
。
您选择的集群正在休眠。
1.5.4.11.3. 使用控制台恢复休眠集群的一般操作
要使用控制台恢复休眠集群的一般操作,请完成以下步骤:
- 在导航菜单中选择 Infrastructure > Clusters。确保已选中 Manage cluster 选项卡。
- 从您要恢复的集群的 Options 菜单中选择 Resume cluster。
当进程完成后,Clusters 页面中的集群状态为 Ready
。
提示:您可以通过在 Clusters 页面上选择要恢复的集群并选择 Actions > Resume clusters来休眠多个集群。
所选集群恢复正常操作。
1.5.4.11.4. 使用 CLI 恢复休眠集群的一般操作
要使用 CLI 恢复休眠集群的一般操作,请完成以下步骤:
输入以下命令来编辑集群的设置:
oc edit clusterdeployment <name-of-cluster> -n <namespace-of-cluster>
将
name-of-cluster
替换为您要休眠的集群的名称。将
namespace-of-cluster
替换为您要休眠的集群的命名空间。-
将
spec.powerState
的值改为Running
。 输入以下命令查看集群的状态:
oc get clusterdeployment <name-of-cluster> -n <namespace-of-cluster> -o yaml
将
name-of-cluster
替换为您要休眠的集群的名称。将
namespace-of-cluster
替换为您要休眠的集群的命名空间。完成恢复集群的过程后,集群的 type 值为
type=Running
。
所选集群恢复正常操作。
1.5.4.12. 在代理环境中创建集群
当 hub 集群通过代理服务器连接时,您可以创建 Red Hat OpenShift Container Platform 集群。要成功创建集群,则必须满足以下情况之一:
- multicluster engine operator 具有与您要创建的受管集群连接的私有网络连接,受管集群使用代理访问互联网。
- 受管集群位于基础架构供应商上,但防火墙端口启用了从受管集群到 hub 集群的通信。
要创建使用代理配置的集群,请完成以下步骤:
通过将以下信息添加到存储于您的 Secret 中的
install-config
YAML 中添加以下信息,在 hub 集群上配置cluster-wide-proxy
设置 :apiVersion: v1 kind: Proxy baseDomain: <domain> proxy: httpProxy: http://<username>:<password>@<proxy.example.com>:<port> httpsProxy: https://<username>:<password>@<proxy.example.com>:<port> noProxy: <wildcard-of-domain>,<provisioning-network/CIDR>,<BMC-address-range/CIDR>
使用代理服务器的用户名替换
username
。使用密码替换
password
以访问您的代理服务器。将
proxy.example.com
替换为代理服务器的路径。使用与代理服务器的通信端口替换
port
。将
wildcard-of-domain
替换为应当绕过代理的域的条目。使用置备网络的 IP 地址和分配的 IP 地址(以 CIDR 表示)替换
provisioning-network/CIDR
。将
BMC-address-range/CIDR
替换为 BMC 地址和地址数(以 CIDR 表示)。添加前面的值后,设置将应用到集群。
- 通过完成创建集群的步骤来置备集群。请参阅创建集群以选择您的供应商。
注: 在部署集群时,只能使用 install-config
YAML。部署集群后,您对 install-config
YAML 所做的任何新更改都不适用。要在部署后更新配置,您必须策略。如需更多信息,请参阅 Pod 策略。
1.5.5. 将目标受管集群导入到 hub 集群
您可以从不同的 Kubernetes 云供应商导入集群。导入后,目标集群将变为 multicluster engine operator hub 集群的受管集群。除非另有指定,否则请在可以访问 hub 集群和目标受管集群的任何位置完成导入任务。
hub 集群无法管理任何其他 hub 集群,但可以管理自己。hub 集群被配置为自动导入和自助管理。您不需要手动导入 hub 集群。
但是,如果您删除 hub 集群并尝试再次导入它,则需要将 local-cluster:true
标签添加到 ManagedCluster
资源中。
从以下说明中选择来设置受管集群:
所需的用户类型或访问权限级别:集群管理员
1.5.5.1. 使用控制台导入受管集群
为 Kubernetes operator 安装多集群引擎后,就可以导入集群来管理。继续阅读以下主题以了解如何使用控制台导入受管集群:
1.5.5.1.1. 先决条件
- 已部署 hub 集群。如果要导入裸机集群,必须在 Red Hat OpenShift Container Platform 版本 4.8 或更高版本上安装 hub 集群。
- 要管理的集群。
-
base64
命令行工具。 -
如果您导入不是由 OpenShift Container Platform 创建的集群,则定义的
multiclusterhub.spec.imagePullSecret
。安装 Kubernetes operator 的多集群引擎时,可能会创建此 secret。如需有关如何定义此 secret 的更多信息,请参阅自定义镜像 pull secret。
所需的用户类型或访问权限级别:集群管理员
1.5.5.1.2. 创建新的 pull secret
如果需要创建新的 pull secret,请完成以下步骤:
- 从 cloud.redhat.com 下载 Kubernetes pull secret。
- 将 pull secret 添加到 hub 集群的命名空间。
运行以下命令在
open-cluster-management
命名空间中创建新 secret:oc create secret generic pull-secret -n <open-cluster-management> --from-file=.dockerconfigjson=<path-to-pull-secret> --type=kubernetes.io/dockerconfigjson
将
open-cluster-management
替换为 hub 集群的命名空间的名称。hub 集群的默认命名空间是open-cluster-management
。将
path-to-pull-secret
替换为您下载的 pull secret 的路径。在导入时,secret 会自动复制到受管集群。
-
确保从您要导入的集群中删除之前安装的代理。您必须删除
open-cluster-management-agent
和open-cluster-management-agent-addon
命名空间以避免错误。 有关在 Red Hat OpenShift Dedicated 环境中导入,请参阅以下备注:
- 您必须在 Red Hat OpenShift Dedicated 环境中部署了 hub 集群。
-
Red Hat OpenShift Dedicated 的默认权限是 dedicated-admin,但不包含创建命名空间的所有权限。您必须具有
cluster-admin
权限才能导入和管理使用 multicluster engine operator 的集群。
-
确保从您要导入的集群中删除之前安装的代理。您必须删除
1.5.5.1.3. 导入集群
您可以从控制台为每个可用的云供应商导入现有集群。
注: hub 集群无法管理不同的 hub 集群。hub 集群被设置为自动导入和管理自身,因此您不必手动导入 hub 集群来管理自己。
默认情况下,命名空间用于集群名称和命名空间,但您可以更改它。
重要: 当您创建集群时,控制器会为集群及其资源创建一个命名空间。确保只在该命名空间中包含该集群实例的资源。销毁集群会删除命名空间和所有资源。
每个受管集群都必须与受管集群集关联。如果您没有将受管集群分配给 ManagedClusterSet
,集群会自动添加到 默认
受管集群集中。
如果要将集群添加到不同的集群集合中,则必须对集群集具有 clusterset-admin
权限。如果在导入集群时没有 cluster-admin
权限,则必须选择一个具有 clusterset-admin
权限的集群集。如果您在指定集群集中没有正确的权限,集群导入会失败。如果没有要选择的集群设置选项,请联系集群管理员,为集群集提供 clusterset-admin
权限。
如果您导入了 OpenShift Container Platform Dedicated 集群,且没有为 vendor=OpenShiftDedicated
指定一个标签,或者为 vendor=auto-detect
添加标签,则 managed-by=platform
标签会自动添加到集群中。您可以使用此添加的标签将集群识别为 OpenShift Container Platform Dedicated 集群,并作为一个组检索 OpenShift Container Platform Dedicated 集群。
下表提供了 导入模式 的可用选项,它指定了导入集群的方法:
手动运行导入命令 | 在控制台中完成并提交信息后,包括任何 Red Hat Ansible Automation Platform 模板,在目标集群上运行提供的命令以导入集群。 |
为现有集群输入服务器 URL 和 API 令牌 | 提供您要导入的集群的服务器 URL 和 API 令牌。您可以指定一个 Red Hat Ansible Automation Platform 模板,以便在集群升级时运行。 |
提供 |
复制并粘贴您要导入的集群的 |
注: 您必须已从 OperatorHub 安装 Red Hat Ansible Automation Platform Resource Operator,以创建并运行 Ansible Automation Platform 作业。要配置集群 API 地址,请参阅 可选: 配置集群 API 地址
1.5.5.1.3.1. 手动运行导入命令的额外步骤
这个方法要求您在目标集群上运行提供的命令来导入集群。
重要:命令中包含复制到每个导入集群的 pull secret 信息。具有访问导入集群权限的所有用户都可以查看 pull secret 信息。考虑在 https://cloud.redhat.com/ 创建一个二级 pull secret,或创建一个服务帐户来保护个人凭证。
生成并复制导入命令:
- 从控制台导航中选择 Infrastructure > Clusters。
- 选择 Import cluster。
-
以表单填写 Details 和 Automation 信息,将 Import mode 选择设置为
手动运行导入命令
。点 Generate 命令后,会显示集群概览页面。 - 点 Copy 命令将生成 的命令复制到剪贴板。
对于 OpenShift Container Platform Dedicated 环境,请完成以下步骤(如果您不使用 OpenShift Container Platform Dedicated 环境,请跳至第 3 步):
- 登录到您要导入的集群的 OpenShift Container Platform 控制台。
-
在您要导入的集群中创建
open-cluster-management-agent
和open-cluster-management
命名空间或项目。 - 在 OpenShift Container Platform 目录中找到 klusterlet Operator。
在
open-cluster-management
命名空间中或您创建的项目中安装它。重要: 不要在
open-cluster-management-agent
命名空间中安装 Operator。通过完成以下步骤,从导入命令中提取 bootstrap secret:
-
将导入命令粘贴到您创建的名为
import-command
的文件中。 运行以下命令以将内容插入新文件中:
cat import-command | awk '{split($0,a,"&&"); print a[3]}' | awk '{split($0,a,"|"); print a[1]}' | sed -e "s/^ echo //" | base64 -d
-
在输出中找到并复制名为
bootstrap-hub-kubeconfig
的 secret。 -
将 secret 应用到受管集群上的
open-cluster-management-agent
命名空间。 使用安装的 Operator 中的示例创建 klusterlet 资源。将
clusterName
值更改为与导入过程中设置的集群名称相同的名称。注: 当
managedcluster
资源成功注册到 hub 时,会安装两个 klusterlet operator。一个 klusterlet operator 位于open-cluster-management
命名空间中,另一个位于open-cluster-management-agent
命名空间中。具有多个 Operator 不会影响 klusterlet 的功能。
-
将导入命令粘贴到您创建的名为
输入以下命令确保您的
kubectl
登录到您要导入的集群:kubectl cluster-info
-
运行您复制的命令,将
open-cluster-management-agent-addon
部署到受管集群。
如果要配置集群 API 地址,请按照 可选的步骤进行: 配置集群 API 地址。
1.5.5.1.3.2. 可选:配置集群 API 地址
完成以下步骤,通过配置运行 oc get managedcluster
命令时表中显示的 URL 来选择性地配置集群详情页面上的 Cluster API 地址 :
-
使用具有
cluster-admin
权限的 ID 登录到 hub 集群。 -
为目标受管集群配置
kubeconfig
文件。 运行以下命令,编辑您要导入的集群的受管集群条目:
oc edit managedcluster <cluster-name>
将
cluster-name
替换为受管集群的名称。在 YAML 文件中的
ManagedCluster
spec 中添加ManagedClusterClientConfigs
,如下例所示:spec: hubAcceptsClient: true managedClusterClientConfigs: - url: <https://api.new-managed.dev.redhat.com>
将 URL 值替换为提供对您要导入的受管集群的外部访问的 URL。
1.5.5.1.4. 删除导入的集群
完成以下步骤以删除导入的集群以及在受管集群上创建的 open-cluster-management-agent-addon
。
在 Clusters 页面上,点 Actions > Detach cluster 从管理中删除集群。
注意: 如果您试图分离名为 local-cluster
的 hub 集群,请注意 disableHub selfManagement
的默认设置为 false
。此设置会导致 hub 集群在分离时会重新导入自己并管理自己,并协调 MultiClusterHub
控制器。hub 集群可能需要几小时时间来完成分离过程并重新导入。如果要在等待进程完成的情况下重新导入 hub 集群,您可以运行以下命令来重启 multiclusterhub-operator
pod 并更快地重新导入:
oc delete po -n open-cluster-management `oc get pod -n open-cluster-management | grep multiclusterhub-operator| cut -d' ' -f1`
您可以通过将 disableHubSelfManagement
值改为 true
来更改 hub 集群的值,使其不会自动导入。如需更多信息,请参阅 disableHubSelfManagement 主题。
1.5.5.1.4.1. 其他资源
- 如需有关如何定义 自定义镜像 pull secret 的更多信息,请参阅自定义镜像 pull secret。
- 请参阅 disableHubSelfManagement 主题。
1.5.5.2. 使用 CLI 导入受管集群
为 Kubernetes operator 安装多集群引擎后,就可以导入集群并使用 Red Hat OpenShift Container Platform CLI 管理它。继续阅读以下主题,了解如何使用自动导入 secret 或使用手动命令通过 CLI 导入受管集群。
重要: hub 集群无法管理不同的 hub 集群。hub 集群被设置为自动导入和管理自己作为 本地集群。您不必手动导入 hub 集群来自己管理。如果您删除了 hub 集群并尝试再次导入它,则需要添加 local-cluster:true
标签。
1.5.5.2.1. 先决条件
- 已部署 hub 集群。如果要导入裸机集群,必须在 OpenShift Container Platform 版本 4.6 或更高版本上安装 hub 集群。
- 要管理的单独集群。
-
OpenShift Container Platform CLI 版本 4.6 或更高版本来运行
oc
命令。如需有关安装和配置 OpenShift Container Platform CLI 的信息,请参阅 OpenShift CLI 入门。 -
如果您导入不是由 OpenShift Container Platform 创建的集群,则定义的
multiclusterhub.spec.imagePullSecret
。安装 Kubernetes operator 的多集群引擎时,可能会创建此 secret。如需有关如何定义此 secret 的更多信息,请参阅自定义镜像 pull secret。
1.5.5.2.2. 支持的构架
- Linux (x86_64, s390x, ppc64le)
- macOS
1.5.5.2.3. 准备集群导入
在使用 CLI 导入受管集群前,您必须完成以下步骤:
运行以下命令登录到您的 hub 集群:
oc login
在 hub 集群上运行以下命令以创建项目和命名空间。在 <
cluster_name&
gt; 中定义的集群名称也用作 YAML 文件和命令中的集群命名空间:oc new-project <cluster_name>
重要:
cluster.open-cluster-management.io/managedCluster
标签会自动添加到受管集群命名空间中并从中删除。不要手动将其添加到受管集群命名空间中或从受管集群命名空间中删除。使用以下示例内容,创建一个名为
managed-cluster.yaml
的文件:apiVersion: cluster.open-cluster-management.io/v1 kind: ManagedCluster metadata: name: <cluster_name> labels: cloud: auto-detect vendor: auto-detect spec: hubAcceptsClient: true
当
cloud
和vendor
的值被设置为auto-detect
时,Red Hat Advanced Cluster Management 会检测您要导入的集群的云和厂商类型。您可以选择将auto-detect
的值替换为集群的 cloud 和 vendor 值。请参见以下示例:cloud: Amazon vendor: OpenShift
运行以下命令,将 YAML 文件应用到
ManagedCluster
资源:oc apply -f managed-cluster.yaml
现在,您可以使用 自动导入 secret 或 手动导入集群来继续导入集群。
1.5.5.2.4. 使用自动导入 secret 功能导入集群
要使用自动导入 secret 导入受管集群,您必须创建一个 secret,其中包含集群的 kubeconfig
文件,或 kube API 服务器和集群的令牌对。完成以下步骤,使用自动导入 secret 导入集群:
-
检索您要导入的受管集群的
kubeconfig
文件或 kube API 服务器和令牌。请参阅 Kubernetes 集群的文档,了解在哪里可以找到您的kubeconfig
文件或 kube API 服务器和令牌。 在 ${CLUSTER_NAME} 命名空间中创建
auto-import-secret.yaml
文件。使用类似以下模板的内容,创建一个名为
auto-import-secret.yaml
的 YAML 文件:apiVersion: v1 kind: Secret metadata: name: auto-import-secret namespace: <cluster_name> stringData: autoImportRetry: "5" # If you are using the kubeconfig file, add the following value for the kubeconfig file # that has the current context set to the cluster to import: kubeconfig: |- <kubeconfig_file> # If you are using the token/server pair, add the following two values instead of # the kubeconfig file: token: <Token to access the cluster> server: <cluster_api_url> type: Opaque
运行以下命令,在 <cluster_name> 命名空间中应用 YAML 文件:
oc apply -f auto-import-secret.yaml
注: 默认情况下,自动导入 secret 会被使用一次,在导入过程完成后会被删除。如果要保留自动导入 secret,请将
managedcluster-import-controller.open-cluster-management.io/keeping-auto-import-secret
添加到 secret。您可以运行以下命令来添加它:oc -n <cluster_name> annotate secrets auto-import-secret managedcluster-import-controller.open-cluster-management.io/keeping-auto-import-secret=""
验证您的导入集群的
JOINED
和AVAILABLE
状态。在 hub 集群中运行以下命令:oc get managedcluster <cluster_name>
在集群中运行以下命令来登录到受管集群:
oc login
您可以运行以下命令来验证您要导入的集群中的 pod 状态:
oc get pod -n open-cluster-management-agent
1.5.5.2.5. 手动导入集群
重要: 导入命令包含复制到每个导入的受管集群中的 pull secret 信息。具有访问导入集群权限的所有用户都可以查看 pull secret 信息。
完成以下步骤以手动导入受管集群:
运行以下命令,获取由导入控制器在 hub 集群上生成的
klusterlet-crd.yaml
文件:oc get secret <cluster_name>-import -n <cluster_name> -o jsonpath={.data.crds\\.yaml} | base64 --decode > klusterlet-crd.yaml
运行以下命令,获取导入控制器在 hub 集群上生成的
import.yaml
文件:oc get secret <cluster_name>-import -n <cluster_name> -o jsonpath={.data.import\\.yaml} | base64 --decode > import.yaml
在要导入的集群中执行以下步骤:
输入以下命令登录到您导入的受管集群:
oc login
运行以下命令应用您在第 1 步中生成的
klusterlet-crd.yaml
:oc apply -f klusterlet-crd.yaml
运行以下命令应用您之前生成的
import.yaml
文件:oc apply -f import.yaml
您可以从 hub 集群中运行以下命令来验证您要导入的受管集群的
JOINED
和AVAILABLE
状态:oc get managedcluster <cluster_name>
1.5.5.2.6. 导入 klusterlet 附加组件
实现 KlusterletAddonConfig
klusterlet 附加组件配置,以在受管集群上启用其他附加组件。通过完成以下步骤来创建并应用配置文件:
创建一个类似以下示例的 YAML 文件:
apiVersion: agent.open-cluster-management.io/v1 kind: KlusterletAddonConfig metadata: name: <cluster_name> namespace: <cluster_name> spec: applicationManager: enabled: true certPolicyController: enabled: true iamPolicyController: enabled: true policyController: enabled: true searchCollector: enabled: true
-
将文件保存为
klusterlet-addon-config.yaml
。 运行以下命令来应用 YAML:
oc apply -f klusterlet-addon-config.yaml
附加组件会在您导入的受管集群状态变为
AVAILABLE
后安装。您可以运行以下命令来验证您要导入的集群中的附加组件的 pod 状态:
oc get pod -n open-cluster-management-agent-addon
1.5.5.2.7. 使用命令行界面删除导入的集群
要使用命令行界面删除受管集群,请运行以下命令:
oc delete managedcluster <cluster_name>
将 <cluster_name
> 替换为集群的名称。
1.5.5.3. 手动导入内部 Red Hat OpenShift Container Platform 集群
为 Kubernetes operator 安装多集群引擎后,就可以导入集群来管理。您可以导入现有的 OpenShift Container Platform 集群,以便您可以添加额外的节点。继续阅读以下主题以了解更多信息:
1.5.5.3.1. 先决条件
- 启用中央基础架构管理服务。
1.5.5.3.2. 导入集群
完成以下步骤,手动导入 OpenShift Container Platform 集群,没有静态网络或裸机主机,并准备好添加节点:
通过应用以下 YAML 内容,为要导入的 OpenShift Container Platform 集群创建一个命名空间:
apiVersion: v1 kind: Namespace metadata: name: managed-cluster
通过应用以下 YAML 内容,确保与您导入的 OpenShift Container Platform 集群匹配的 ClusterImageSet 已存在:
apiVersion: hive.openshift.io/v1 kind: ClusterImageSet metadata: name: openshift-v4.11.18 spec: releaseImage: quay.io/openshift-release-dev/ocp-release@sha256:22e149142517dfccb47be828f012659b1ccf71d26620e6f62468c264a7ce7863
通过应用以下 YAML 内容来添加 pull secret 以访问镜像:
apiVersion: v1 kind: Secret type: kubernetes.io/dockerconfigjson metadata: name: pull-secret namespace: managed-cluster stringData: .dockerconfigjson: <pull-secret-json> 1
- 1
- 将 <pull-secret-json> 替换为您的 pull secret JSON。
将
kubeconfig
从 OpenShift Container Platform 集群复制到 hub 集群。运行以下命令,从 OpenShift Container Platform 集群获取
kubeconfig
。确保将kubeconfig
设置为要导入的集群:oc get secret -n openshift-kube-apiserver node-kubeconfigs -ojson | jq '.data["lb-ext.kubeconfig"]' --raw-output | base64 -d > /tmp/kubeconfig.some-other-cluster
运行以下命令,将
kubeconfig
复制到 hub 集群。确保将kubeconfig
设置为 hub 集群:oc -n managed-cluster create secret generic some-other-cluster-admin-kubeconfig --from-file=kubeconfig=/tmp/kubeconfig.some-other-cluster
通过应用以下 YAML 内容来创建
AgentClusterInstall
自定义资源。根据需要替换值:apiVersion: extensions.hive.openshift.io/v1beta1 kind: AgentClusterInstall metadata: name: <your-cluster-name> 1 namespace: <managed-cluster> spec: networking: userManagedNetworking: true clusterDeploymentRef: name: <your-cluster> imageSetRef: name: openshift-v4.11.18 provisionRequirements: controlPlaneAgents: 2 sshPublicKey: <""> 3
通过应用以下 YAML 内容来创建
ClusterDeployment
:根据需要替换值:apiVersion: hive.openshift.io/v1 kind: ClusterDeployment metadata: name: <your-cluster-name> 1 namespace: managed-cluster spec: baseDomain: <redhat.com> 2 installed: <true> 3 clusterMetadata: adminKubeconfigSecretRef: name: <your-cluster-name-admin-kubeconfig> 4 clusterID: <""> 5 infraID: <""> 6 clusterInstallRef: group: extensions.hive.openshift.io kind: AgentClusterInstall name: your-cluster-name-install version: v1beta1 clusterName: your-cluster-name platform: agentBareMetal: pullSecretRef: name: pull-secret
通过应用以下 YAML 内容,添加一个
InfraEnv
自定义资源来发现要添加到集群中的新主机。根据需要替换值:注:如果您使用静态 IP 地址,以下示例可能需要其他配置。
apiVersion: agent-install.openshift.io/v1beta1 kind: InfraEnv metadata: name: your-infraenv namespace: managed-cluster spec: clusterRef: name: your-cluster-name namespace: managed-cluster pullSecretRef: name: pull-secret sshAuthorizedKey: ""
字段 | 可选或必需的 | 描述 |
---|---|---|
| 选填 |
如果您使用 late 绑定,则 |
| 选填 |
添加可选的 |
如果导入成功,则会出现下载 ISO 文件的 URL。运行以下命令下载 ISO 文件,将 <url> 替换为显示的 URL:
注: 您可以使用裸机主机自动执行主机发现。
oc get infraenv -n managed-cluster some-other-infraenv -ojson | jq ".status.<url>" --raw-output | xargs curl -k -o /storage0/isos/some-other.iso
1.5.5.3.3. 在 OpenShift Container Platform 集群中添加 worker 节点
完成以下步骤,将生产环境 worker 节点添加到 OpenShift Container Platform 集群中:
从您之前下载的 ISO 中引导您要用作 worker 节点的机器。
注: 确保 worker 节点满足 OpenShift Container Platform worker 节点的要求。
运行以下命令后等待代理注册:
watch -n 5 "oc get agent -n managed-cluster"
如果代理注册是 succesful,则会列出代理。批准安装的代理。这可能需要几分钟时间。
注: 如果没有列出代理,请按 Ctrl 和 C 退出
watch
命令,然后登录到 worker 节点以排除故障。如果使用更新的绑定,请运行以下命令将待处理的未绑定代理与 OpenShift Container Platform 集群关联。如果没有使用更新的绑定,请跳至第 5 步:
oc get agent -n managed-cluster -ojson | jq -r '.items[] | select(.spec.approved==false) |select(.spec.clusterDeploymentName==null) | .metadata.name'| xargs oc -n managed-cluster patch -p '{"spec":{"clusterDeploymentName":{"name":"some-other-cluster","namespace":"managed-cluster"}}}' --type merge agent
运行以下命令来批准任何待处理的代理以进行安装:
oc get agent -n managed-cluster -ojson | jq -r '.items[] | select(.spec.approved==false) | .metadata.name'| xargs oc -n managed-cluster patch -p '{"spec":{"approved":true}}' --type merge agent
等待 worker 节点的安装。当 worker 节点安装完成后,worker 节点使用证书签名请求(CSR)联系受管集群以开始加入过程。CSR 会自动签名。
1.5.5.4. 在受管集群中指定镜像 registry 进行导入
您可能需要覆盖您要导入的受管集群中的镜像 registry。您可以通过创建一个 ManagedClusterImageRegistry
自定义资源定义来实现。
ManagedClusterImageRegistry
自定义资源定义是一个命名空间范围的资源。
ManagedClusterImageRegistry
自定义资源定义为要选择的放置指定一组受管集群,但需要与自定义镜像 registry 不同的镜像。使用新镜像更新受管集群后,会在每个受管集群中添加以下标签进行识别: open-cluster-management.io/image-registry=<namespace>.<managedClusterImageRegistryName>
。
以下示例显示了 ManagedClusterImageRegistry
自定义资源定义:
apiVersion: imageregistry.open-cluster-management.io/v1alpha1 kind: ManagedClusterImageRegistry metadata: name: <imageRegistryName> namespace: <namespace> spec: placementRef: group: cluster.open-cluster-management.io resource: placements name: <placementName> pullSecret: name: <pullSecretName> registries: - mirror: <mirrored-image-registry-address> source: <image-registry-address> - mirror: <mirrored-image-registry-address> source: <image-registry-address>
在 spec
部分中:
-
将
placementName
替换为选择一组受管集群的放置名称。 -
将
pullSecretName
替换为用于从自定义镜像 registry 中拉取镜像的 pull secret 名称。 列出每个
source
和mirror
registry 的值。将mirrored-image-registry-address
和image-registry-address
替换为每个 registry 的mirror
和source
的值。示例 1:要将名为
registry.redhat.io/rhacm2
的源 registry 替换为localhost:5000/rhacm2
,并将registry.redhat.io/multicluster-engine
替换为localhost:5000/multicluster-engine
,请使用以下示例:registries: - mirror: localhost:5000/rhacm2/ source: registry.redhat.io/rhacm2 - mirror: localhost:5000/multicluster-engine source: registry.redhat.io/multicluster-engine
示例 2: 要将源镜像
registry.redhat.io/rhacm2/registration-rhel8-operator
替换为localhost:5000/rhacm2-registration-rhel8-operator
,请使用以下示例:registries: - mirror: localhost:5000/rhacm2-registration-rhel8-operator source: registry.redhat.io/rhacm2/registration-rhel8-operator
1.5.5.4.1. 导入具有 ManagedClusterImageRegistry的集群
完成以下步骤以导入使用 ManagedClusterImageRegistry 自定义资源定义自定义的集群:
在您要导入集群的命名空间中创建 pull secret。对于这些步骤,命名空间是
myNamespace
。$ kubectl create secret docker-registry myPullSecret \ --docker-server=<your-registry-server> \ --docker-username=<my-name> \ --docker-password=<my-password>
在您创建的命名空间中创建一个放置。
apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: myPlacement namespace: myNamespace spec: clusterSets: - myClusterSet tolerations: - key: "cluster.open-cluster-management.io/unreachable" operator: Exists
注: 需要
unreachable
容限才能使配置来选择集群。创建一个
ManagedClusterSet
资源,并将其绑定到命名空间。apiVersion: cluster.open-cluster-management.io/v1beta2 kind: ManagedClusterSet metadata: name: myClusterSet --- apiVersion: cluster.open-cluster-management.io/v1beta2 kind: ManagedClusterSetBinding metadata: name: myClusterSet namespace: myNamespace spec: clusterSet: myClusterSet
在命名空间中创建
ManagedClusterImageRegistry
自定义资源定义。apiVersion: imageregistry.open-cluster-management.io/v1alpha1 kind: ManagedClusterImageRegistry metadata: name: myImageRegistry namespace: myNamespace spec: placementRef: group: cluster.open-cluster-management.io resource: placements name: myPlacement pullSecret: name: myPullSecret registry: myRegistryAddress
- 从控制台导入受管集群并将其添加到受管集群集中。
-
在标签
open-cluster-management.io/image-registry=myNamespace.myImageRegistry
添加到受管集群后,在受管集群中复制并运行导入命令。
1.5.6. 访问集群
要访问创建和管理的 Red Hat OpenShift Container Platform 集群,请完成以下步骤:
- 在控制台中,导航到 Infrastructure > Clusters,再选择您创建的或想要访问的集群名称。
选择 Reveal credentials 来查看集群的用户名和密码。记下这些值以便在登录到集群时使用。
注: Reveal credentials 选项不适用于导入的集群。
- 选择 Console URL 以链接到集群。
- 使用在第 3 步中找到的用户 ID 和密码登录集群。
1.5.7. 扩展受管集群
对于您创建的集群,您可以自定义并调整受管集群规格,如虚拟机大小和节点数量。查看以下选项:
1.5.7.1. 使用 MachinePool 扩展
对于使用多集群引擎 operator 置备的集群,会自动为您创建 MachinePool
资源。您可以使用 MachinePool
进一步自定义和调整受管集群规格,如虚拟机大小和节点数量。
-
裸机集群不支持使用
MachinePool
资源。 -
MachinePool
资源是 Hub 集群上的 Kubernetes 资源,用于将MachineSet
资源分组到受管集群上。 -
MachinePool
资源统一配置一组计算机资源,包括区配置、实例类型和 root 存储。 -
使用
MachinePool
,您可以手动配置所需的节点数量,或者配置受管集群中的节点自动扩展。
1.5.7.1.1. 配置自动扩展
配置自动扩展可让集群根据需要进行扩展,从而降低资源成本,在流量较低时进行缩减,并通过向上扩展以确保在资源需求较高时有足够的资源。
要使用控制台在
MachinePool
资源上启用自动扩展,请完成以下步骤:- 在导航中,选择 Infrastructure > Clusters。
- 点目标集群的名称并选择 Machine pool 选项卡。
- 在 machine pool 页中,从目标机器池的 Options 菜单中选择 Enable autoscale。
选择机器设置副本的最小和最大数量。计算机集副本直接映射到集群中的节点。
在点 Scale 后,更改可能需要几分钟时间来反映控制台。您可以通过单击 Machine pool 选项卡中的通知中的 View machine 来查看扩展操作的状态。
要使用命令行在
MachinePool
资源上启用自动扩展,请完成以下步骤:输入以下命令查看您的机器池列表,将
managed-cluster-namespace
替换为目标受管集群的命名空间。oc get machinepools -n <managed-cluster-namespace>
输入以下命令为机器池编辑 YAML 文件:
oc edit machinepool <MachinePool-resource-name> -n <managed-cluster-namespace>
-
将
MachinePool-resource-name
替换为MachinePool
资源的名称。 -
将
managed-cluster-namespace
替换为受管集群的命名空间的名称。
-
将
-
从 YAML 文件删除
spec.replicas
字段。 -
在资源 YAML 中添加
spec.autoscaling.minReplicas
设置和spec.autoscaling.maxReplicas
项。 -
将最小副本数添加到
minReplicas
设置。 -
将最大副本数添加到
maxReplicas
设置中。 - 保存文件以提交更改。
1.5.7.1.2. 禁用自动扩展
您可以使用控制台或命令行禁用自动扩展。
要使用控制台禁用自动扩展,请完成以下步骤:
- 在导航中,选择 Infrastructure > Clusters。
- 点目标集群的名称并选择 Machine pool 选项卡。
- 在 machine pool 页面中,从目标机器池的 Options 菜单中选择 Disable autoscale。
选择您想要的机器集副本数量。机器集副本直接与集群中的节点映射。
在点 Scale 后,在控制台中显示可能需要几分钟时间。您可以点 Machine pools 选项卡中的通知中的 View machine 来查看扩展的状态。
要使用命令行禁用自动扩展,请完成以下步骤:
输入以下命令查看您的机器池列表:
oc get machinepools -n <managed-cluster-namespace>
将
managed-cluster-namespace
替换为目标受管集群的命名空间。输入以下命令为机器池编辑 YAML 文件:
oc edit machinepool <name-of-MachinePool-resource> -n <namespace-of-managed-cluster>
将
name-of-MachinePool-resource
替换为MachinePool
资源的名称。将
namespace-of-managed-cluster
替换为受管集群的命名空间的名称。-
从 YAML 文件中删除
spec.autoscaling
字段。 -
将
spec.replicas
字段添加到资源 YAML。 -
将副本数添加到
replicas
设置中。 - 保存文件以提交更改。
1.5.7.1.3. 启用手动扩展
您可以从控制台和命令行手动扩展。
1.5.7.1.3.1. 使用控制台启用手动扩展
要使用控制台扩展 MachinePool
资源,请完成以下步骤:
-
如果启用了
MachinePool
,请禁用自动扩展。请参阅前面的步骤。 - 在控制台中点 Infrastructure > Clusters。
- 点目标集群的名称并选择 Machine pool 选项卡。
- 在 machine pool 页面中,从 Options 菜单中为目标集群池选择 Scale machine pool。
- 选择您想要的机器集副本数量。机器集副本直接与集群中的节点映射。在点 Scale 后,更改可能需要几分钟时间来反映控制台。您可以从 Machine pool 选项卡的 notification 中点 View machine 来查看扩展操作的状态。
1.5.7.1.3.2. 使用命令行启用手动扩展
要使用命令行扩展 MachinePool
资源,请完成以下步骤:
输入以下命令查看您的机器池列表,将 <
managed-cluster-namespace
> 替换为目标受管集群命名空间的命名空间:oc get machinepools -n <managed-cluster-namespace>
输入以下命令为机器池编辑 YAML 文件:
oc edit machinepool <MachinePool-resource-name> -n <managed-cluster-namespace>
-
将
MachinePool-resource-name
替换为MachinePool
资源的名称。 -
将
managed-cluster-namespace
替换为受管集群的命名空间的名称。
-
将
-
从 YAML 文件中删除
spec.autoscaling
字段。 -
使用您想要的副本数修改 YAML 文件中的
spec.replicas
字段。 - 保存文件以提交更改。
1.5.8. 使用集群代理附加组件
在某些情况下,受管集群位于防火墙后面,无法由 hub 集群直接访问。要获取访问权限,您可以设置代理附加组件来访问受管集群的 kube-apiserver
,以提供更安全的连接。
重要: 当 hub 集群或受管集群具有 [cluster-wide proxy](https://docs.openshift.com/container-platform/4.12/networking/enable-cluster-wide-proxy.html)配置时,cluster-proxy-addon
无法正常工作。
需要的访问权限: Editor
要为 hub 集群和受管集群配置集群代理附加组件,请完成以下步骤:
通过完成以下步骤,配置
kubeconfig
文件以访问受管集群kube-apiserver
:为受管集群提供有效的访问令牌。
注: 您可以使用服务帐户的对应令牌。您还可以使用位于 default 命名空间中的 default 服务帐户。
运行以下命令导出受管集群的
kubeconfig
文件:export KUBECONFIG=<managed-cluster-kubeconfig>
在服务帐户中添加一个角色,允许它通过运行以下命令来访问 pod:
oc create role -n default test-role --verb=list,get --resource=pods oc create rolebinding -n default test-rolebinding --serviceaccount=default:default --role=test-role
运行以下命令来查找服务帐户令牌的 secret:
oc get secret -n default | grep <default-token>
将
default-token
替换为您的 secret 的名称。运行以下命令复制令牌:
export MANAGED_CLUSTER_TOKEN=$(kubectl -n default get secret <default-token> -o jsonpath={.data.token} | base64 -d)
将
default-token
替换为您的 secret 的名称。
在 Red Hat Advanced Cluster Management hub 集群中配置
kubeconfig
文件。运行以下命令,在 hub 集群中导出当前的
kubeconfig
文件:oc config view --minify --raw=true > cluster-proxy.kubeconfig
使用编辑器修改
server
文件。本例使用sed
。如果您使用 OSX,运行alias sed=gsed
。export TARGET_MANAGED_CLUSTER=<managed-cluster-name> export NEW_SERVER=https://$(oc get route -n multicluster-engine cluster-proxy-addon-user -o=jsonpath='{.spec.host}')/$TARGET_MANAGED_CLUSTER sed -i'' -e '/server:/c\ server: '"$NEW_SERVER"'' cluster-proxy.kubeconfig export CADATA=$(oc get configmap -n openshift-service-ca kube-root-ca.crt -o=go-template='{{index .data "ca.crt"}}' | base64) sed -i'' -e '/certificate-authority-data:/c\ certificate-authority-data: '"$CADATA"'' cluster-proxy.kubeconfig
输入以下命令删除原始用户凭证:
sed -i'' -e '/client-certificate-data/d' cluster-proxy.kubeconfig sed -i'' -e '/client-key-data/d' cluster-proxy.kubeconfig sed -i'' -e '/token/d' cluster-proxy.kubeconfig
添加服务帐户的令牌:
sed -i'' -e '$a\ token: '"$MANAGED_CLUSTER_TOKEN"'' cluster-proxy.kubeconfig
运行以下命令,列出目标受管集群的目标命名空间中的所有 pod:
oc get pods --kubeconfig=cluster-proxy.kubeconfig -n <default>
将
default
命名空间替换为您要使用的命名空间。访问受管集群中的其他服务。当受管集群是 Red Hat OpenShift Container Platform 集群时,此功能可用。该服务必须使用
service-serving-certificate
来生成服务器证书:在受管集群中,使用以下服务帐户令牌:
export PROMETHEUS_TOKEN=$(kubectl get secret -n openshift-monitoring $(kubectl get serviceaccount -n openshift-monitoring prometheus-k8s -o=jsonpath='{.secrets[0].name}') -o=jsonpath='{.data.token}' | base64 -d)
从 hub 集群中,运行以下命令来将证书颁发机构转换为文件:
oc get configmap kube-root-ca.crt -o=jsonpath='{.data.ca\.crt}' > hub-ca.crt
使用以下命令获取受管集群的 Prometheus 指标:
export SERVICE_NAMESPACE=openshift-monitoring export SERVICE_NAME=prometheus-k8s export SERVICE_PORT=9091 export SERVICE_PATH="api/v1/query?query=machine_cpu_sockets" curl --cacert hub-ca.crt $NEW_SERVER/api/v1/namespaces/$SERVICE_NAMESPACE/services/$SERVICE_NAME:$SERVICE_PORT/proxy-service/$SERVICE_PATH -H "Authorization: Bearer $PROMETHEUS_TOKEN"
1.5.9. 配置 Ansible Automation Platform 任务以在受管集群上运行
multicluster engine operator 与 Red Hat Ansible Automation Platform 集成,以便您可以在创建或升级集群前创建 prehook 和 posthook Ansible 作业实例。为集群销毁配置 prehook 和 posthook 作业,集群扩展操作不被支持。
需要的访问权限:集群管理员
1.5.9.1. 先决条件
您必须满足以下先决条件才能在集群中运行 Automation 模板:
- OpenShift Container Platform 4.6 或更高版本
- 安装 Ansible Automation Platform Resource Operator,将 Ansible 作业连接到 Git 订阅的生命周期。为了获得最佳结果,当使用 Automation 模板启动 Ansible Automation Platform 作业时,Ansible Automation Platform 作业模板在运行时应该是幂等的。您可以在 OpenShift Container Platform OperatorHub 中找到 Ansible Automation Platform Resource Operator。
1.5.9.2. 使用控制台将 Automation 模板配置为在集群中运行
您可以在创建集群时、导入集群或创建集群时,指定要用于集群的 Automation 模板。
要在创建或导入集群时指定模板,请在 Automation 步骤中选择要应用到集群的 Ansible 模板。如果没有 Automation 模板,点 Add automation template 来创建。
要在创建集群时指定模板,请点击现有集群的操作菜单中的 Update automation template。您还可以使用 Update automation template 选项更新现有的自动化模板。
1.5.9.3. 创建 Automation 模板
要使用集群安装或升级启动 Ansible 作业,您必须创建一个 Automation 模板来指定作业何时运行。它们可以配置为在集群安装或升级之前或之后运行。
要指定在创建模板时运行 Ansible 模板的详情,请完成控制台中的步骤:
- 从导航中选择 Infrastructure > Automation。
选择适用于您的问题单的适用路径:
- 如果要创建新模板,请单击 Create Ansible template 并继续第 3 步。
- 如果要修改现有模板,请在要修改的模板的 Options 菜单中点击 Edit template,然后继续第 5 步。
- 输入模板的唯一名称,其中包含小写字母数字字符或连字符(-)。
选择您要用于新模板的凭据。要将 Ansible 凭证链接到 Ansible 模板,请完成以下步骤:
- 在导航中,选择 Automation。任何未链接到凭证的模板列表中的模板都包含可用于将模板链接到现有凭证的 Link to credential 图标。仅显示与模板相同的命名空间中的凭证。
- 如果没有可以选择的凭证,或者您不想使用现有凭证,请从您要链接的模板的 Options 菜单中选择 Edit template。
- 如果需要创建自己的凭证,点 Add credential 并完成为 Ansible Automation Platform 创建一个凭证中的步骤。
- 在与模板相同的命名空间中创建凭据后,在编辑模板时,在 Ansible Automation Platform credential 字段中选择凭据。
- 如果要在安装集群前启动任何 Ansible 作业,在 Pre-install Automation templates 部分中选择 Add an Automation template。
选择或输入 prehook 和 posthook Ansible 作业的名称,以添加到集群的安装或升级中。
注: Automation 模板 名称必须与 Ansible Automation Platform 上的 Ansible 作业的名称匹配。
- 如有必要,拖动 Ansible 作业以更改顺序。
- 对于您要在 Post-install Automation templates 部分、Pre-upgrade Automation templates 和 Post-upgrade Automation templates 部分安装集群后启动的任何自动化模板,重复步骤 5 - 7。
您的 Ansible 模板已配置为在集群中运行,在指定操作发生时指定此模板。
1.5.9.4. 查看 Ansible 作业的状态
您可以查看正在运行的 Ansible 作业的状态,以确保它启动并在成功运行。要查看正在运行的 Ansible 作业的当前状态,请完成以下步骤:
- 在菜单中,选择 Infrastructure > Clusters 以访问 Clusters 页面。
- 选择集群名称来查看其详情。
在集群信息上查看 Ansible 作业最后一次运行的状态。该条目显示以下状态之一:
-
当安装 prehook 或 posthook 任务失败时,集群状态会显示
Failed
。 当升级 prehook 或 posthook 任务失败时,会在 Distribution 字段中显示升级失败的警告信息。
提示: 如果集群 prehook 或 posthook 失败,您可以从 Clusters 页面重试升级。
-
当安装 prehook 或 posthook 任务失败时,集群状态会显示
1.5.10. ClusterClaims
ClusterClaim
是受管集群中的一个集群范围的自定义资源定义(CRD)。ClusterClaim 代表受管集群声明的一个信息片段。您可以使用 ClusterClaim 来降级目标集群上资源的放置。
以下示例显示了 YAML 文件中标识的 ClusterClaim:
apiVersion: cluster.open-cluster-management.io/v1alpha1 kind: ClusterClaim metadata: name: id.openshift.io spec: value: 95f91f25-d7a2-4fc3-9237-2ef633d8451c
下表显示了在多集群引擎 Operator 管理的集群中定义的 ClusterClaims:
声明名称 | 保留 | 可变 | 描述 |
---|---|---|---|
| true | false | 在上游社区定义的 ClusterID |
| true | true | Kubernetes 版本 |
| true | false | 运行受管集群的平台,如 AWS、GCE 和 Equinix Metal |
| true | false | 产品名称,如 OpenShift、Anthos、EKS 和 GKE |
| false | false | OpenShift Container Platform 外部 ID,它仅适用于 OpenShift Container Platform 集群 |
| false | true | 管理控制台的 URL,仅适用于 OpenShift Container Platform 集群 |
| false | true | OpenShift Container Platform 版本,它仅适用于 OpenShift Container Platform 集群 |
如果在受管集群中删除或更新之前的声明,它们会自动恢复或回滚到上一版本。
在受管集群加入 hub 后,在受管集群上创建的 ClusterClaims 与 hub 上的 ManagedCluster
资源的状态同步。带有 ClusterClaims 的受管集群可能类似以下示例:
apiVersion: cluster.open-cluster-management.io/v1 kind: ManagedCluster metadata: labels: cloud: Amazon clusterID: 95f91f25-d7a2-4fc3-9237-2ef633d8451c installer.name: multiclusterhub installer.namespace: open-cluster-management name: cluster1 vendor: OpenShift name: cluster1 spec: hubAcceptsClient: true leaseDurationSeconds: 60 status: allocatable: cpu: '15' memory: 65257Mi capacity: cpu: '18' memory: 72001Mi clusterClaims: - name: id.k8s.io value: cluster1 - name: kubeversion.open-cluster-management.io value: v1.18.3+6c42de8 - name: platform.open-cluster-management.io value: AWS - name: product.open-cluster-management.io value: OpenShift - name: id.openshift.io value: 95f91f25-d7a2-4fc3-9237-2ef633d8451c - name: consoleurl.openshift.io value: 'https://console-openshift-console.apps.xxxx.dev04.red-chesterfield.com' - name: version.openshift.io value: '4.5' conditions: - lastTransitionTime: '2020-10-26T07:08:49Z' message: Accepted by hub cluster admin reason: HubClusterAdminAccepted status: 'True' type: HubAcceptedManagedCluster - lastTransitionTime: '2020-10-26T07:09:18Z' message: Managed cluster joined reason: ManagedClusterJoined status: 'True' type: ManagedClusterJoined - lastTransitionTime: '2020-10-30T07:20:20Z' message: Managed cluster is available reason: ManagedClusterAvailable status: 'True' type: ManagedClusterConditionAvailable version: kubernetes: v1.18.3+6c42de8
1.5.10.1. 列出现有 ClusterClaims
您可以使用 kubectl
命令列出应用到受管集群的 ClusterClaims。当您要将 ClusterClaim 与错误消息进行比较时,这很有用。
备注:您需要具有 clusterclaims.cluster.open-cluster-management.io
资源的 list
权限。
运行以下命令列出受管集群中的所有现有 ClusterClaims:
kubectl get clusterclaims.cluster.open-cluster-management.io
1.5.10.2. 创建自定义 ClusterClaims
您可以使用受管集群上的自定义名称创建 ClusterClaims,这样可更轻松地识别它们。自定义 ClusterClaims 会与 hub 集群上的 ManagedCluster
资源进行同步。以下内容显示了自定义 ClusterClaim
的定义示例:
apiVersion: cluster.open-cluster-management.io/v1alpha1 kind: ClusterClaim metadata: name: <custom_claim_name> spec: value: <custom_claim_value>
字段 spec.value
的最大长度为 1024。创建 ClusterClaim 需要资源 clusterclaims.cluster.open-cluster-management.io
的 create
权限。
1.5.11. ManagedClusterSets
ManagedClusterSet
是一个受管集群的组。受管集群集可帮助您管理对所有受管集群的访问。您还可以创建一个 ManagedClusterSetBinding
资源,将 ManagedClusterSet
资源绑定到命名空间。
每个集群都必须是受管集群集的成员。安装 hub 集群时,会创建一个名为 default
的 ManagedClusterSet
资源。所有没有分配给受管集群集的集群会自动分配给 默认的
受管集群集。您不能删除或更新 默认
受管集群集。
继续阅读以了解更多有关如何创建和管理受管集群集的信息:
1.5.11.1. 创建 ManagedClusterSet
您可以在受管集群集中将受管集群分组在一起,以限制受管集群的用户访问权限。
需要的访问权限:集群管理员
ManagedClusterSet
是一个集群范围的资源,因此您必须在创建 ManagedClusterSet
的集群中具有集群管理权限。受管集群不能包含在多个 ManagedClusterSet
中。您可以通过 multicluster engine operator 控制台或 CLI 创建受管集群集。
注: 没有添加到受管集群集中的集群池不会添加到默认的 ManagedClusterSet
资源中。从集群池中声明集群后,集群将添加到默认的 ManagedClusterSet
中。
在创建受管集群时,会自动创建以下内容来简化管理:
-
名为
global
的ManagedClusterSet
。 -
名为
open-cluster-management-global-set
的命名空间。 名为
global
的ManagedClusterSetBinding
,将全局
ManagedClusterSet
绑定到open-cluster-management-global-set
命名空间。重要: 您无法删除、更新或编辑
全局
受管集群集。全局
受管集群集包含所有受管集群。请参见以下示例:apiVersion: cluster.open-cluster-management.io/v1beta2 kind: ManagedClusterSetBinding metadata: name: global namespace: open-cluster-management-global-set spec: clusterSet: global
1.5.11.1.1. 使用 CLI 创建 ManagedClusterSet
将受管集群集的以下定义添加到 YAML 文件中,以使用 CLI 创建受管集群集:
apiVersion: cluster.open-cluster-management.io/v1beta2 kind: ManagedClusterSet metadata: name: <cluster_set>
将 <cluster_set
> 替换为受管集群集的名称。
1.5.11.1.2. 将集群添加到 ManagedClusterSet
创建 ManagedClusterSet
后,您可以按照控制台中的说明或使用 CLI 将集群添加到受管集群集中。
1.5.11.1.3. 使用 CLI 将集群添加到 ManagedClusterSet
完成以下步骤,使用 CLI 将集群添加到受管集群集中:
确保有一个 RBAC
ClusterRole
条目,供您在managedclustersets/join
的虚拟子资源中创建。注: 如果没有此权限,您无法将受管集群分配给
ManagedClusterSet
。如果此条目不存在,将其添加到 YAML 文件中。请参见以下示例:kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: clusterrole1 rules: - apiGroups: ["cluster.open-cluster-management.io"] resources: ["managedclustersets/join"] resourceNames: ["<cluster_set>"] verbs: ["create"]
将
<cluster_set
> 替换为ManagedClusterSet
的名称。注:如果要将受管集群从一个
ManagedClusterSet
移到另一个,则必须在两个受管集群集中都有该权限。在 YAML 文件中找到受管集群的定义。请参见以下示例定义:
apiVersion: cluster.open-cluster-management.io/v1 kind: ManagedCluster metadata: name: <cluster_name> spec: hubAcceptsClient: true
添加
cluster.open-cluster-management.io/clusterset
参数,并指定ManagedClusterSet
的名称。请参见以下示例:apiVersion: cluster.open-cluster-management.io/v1 kind: ManagedCluster metadata: name: <cluster_name> labels: cluster.open-cluster-management.io/clusterset: <cluster_set> spec: hubAcceptsClient: true
1.5.11.2. 为 ManagedClusterSet分配 RBAC 权限
您可以将用户或组分配给由 hub 集群上配置的身份提供程序提供的集群集合。
需要的访问权限:集群管理员
下表列出了三个 ManagedClusterSet
API RBAC 权限级别:
集群集 | 访问权限 | 创建权限 |
---|---|---|
| 对分配给受管集群集的所有集群和集群池资源具有完全访问权限。 | 创建集群、导入集群和创建集群池的权限。创建时,必须将权限分配给受管集群集。 |
|
通过创建一个 | 没有创建集群、导入集群或创建集群池的权限。 |
| 对分配给受管集群集的所有集群和集群池资源进行只读权限。 | 没有创建集群、导入集群或创建集群池的权限。 |
注: 您不能为全局集群集应用 Cluster set admin
权限。
完成以下步骤,从控制台将用户或组分配给受管集群集:
- 在 OpenShift Container Platform 控制台中进入到 Infrastructure > Clusters。
- 选择 Cluster sets 选项卡。
- 选择您的目标集群集。
- 选择 Access management 选项卡。
- 选择 Add user or group。
- 搜索,然后选择您要提供访问权限的用户和组。
- 选择 Cluster set admin 或 Cluster set view 角色,赋予所选用户或用户组。如需更多信息,请参阅 多集群引擎 operator 基于角色的访问控制 中的角色概述。
- 选择 Add 以提交更改。
表中会显示您的用户或组。可能需要几秒钟后,分配到所有受管集群设置的资源的权限才会被传播到您的用户或组。
1.5.11.3. 创建 ManagedClusterSetBinding 资源
ManagedClusterSetBinding
资源将 ManagedClusterSet
资源绑定到命名空间。在同一命名空间中创建的应用程序和策略只能访问包含在绑定受管集群集资源中的集群。
命名空间的访问权限会自动应用到绑定到该命名空间的受管集群集。如果您有对该命名空间的访问权限,则会自动访问绑定到该命名空间的任何受管集群集的权限。如果您只具有访问受管集群集的权限,则不会自动具有访问命名空间中其他受管集群集的权限。
您可以使用控制台或命令行创建受管集群集绑定。
1.5.11.3.1. 使用控制台创建 ManagedClusterSetBinding
完成以下步骤,使用控制台创建 ManagedClusterSetBinding
:
- 在 OpenShift Container Platform 控制台中进入到 Infrastructure > Clusters 并选择 Cluster set 选项卡。
- 选择您要为其创建绑定的集群集的名称。
- 导航到 Actions > Edit namespace bindings。
- 在 Edit namespace bindings 页面中,从下拉菜单中选择您要将集群集绑定到的命名空间。
1.5.11.3.2. 使用 CLI 创建 ManagedClusterSetBinding
完成以下步骤,使用 CLI 创建 ManagedClusterSetBinding
:
在 YAML 文件中创建
ManagedClusterSetBinding
资源。注: 当您创建受管集群集绑定时,受管集群集绑定的名称必须与要绑定的受管集群集的名称匹配。您的
ManagedClusterSetBinding
资源可能类似以下信息:apiVersion: cluster.open-cluster-management.io/v1beta2 kind: ManagedClusterSetBinding metadata: namespace: <namespace> name: <cluster_name> spec: clusterSet: <cluster_set>
确保目标受管集群集有绑定权限。查看以下
ClusterRole
资源示例,其中包含允许用户绑定到 <cluster_set
> 的规则:apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: <clusterrole> rules: - apiGroups: ["cluster.open-cluster-management.io"] resources: ["managedclustersets/bind"] resourceNames: ["<cluster_set>"] verbs: ["create"]
1.5.11.4. 使用污点和容限放置受管集群
您可以使用污点和容限控制受管集群或受管集群集的放置。污点和容限提供了一种防止为特定放置选择受管集群的方法。如果要阻止某些受管集群包含在某些放置中,这个控制会很有用。您可以向受管集群添加污点,并为放置添加容限。如果污点和容限不匹配,则不会为该放置选择受管集群。
1.5.11.4.1. 将污点添加到受管集群
污点在受管集群的属性中指定,并允许放置来重新放置受管集群或一组受管集群。您可以通过输入类似以下示例的命令,为受管集群添加污点:
oc taint ManagedCluster <managed_cluster_name> key=value:NoSelect
污点的规格包括以下字段:
-
必需键 - 应用到集群的污点键。这个值必须与受管集群的容限中的值匹配,以满足添加到该放置的条件。您可以确定这个值。例如,这个值可以是
bar
或foo.example.com/bar
。 -
可选值 - 污点键的污点值。这个值必须与受管集群的容限中的值匹配,以满足添加到该放置的条件。例如,这个值可以是
value
。 必需效果 - 污点对不容许污点的放置效果,或者在污点和放置容限不匹配时发生什么。effect 的值必须是以下值之一:
-
NoSelect
- 除非容许这个污点,否则不允许放置来选择集群。如果在设置污点前放置选择了集群,则会从放置决定中移除集群。 -
NoSelectIfNew
- 如果是新集群,调度程序就无法选择该集群。只有容许污点且已在其集群决策中拥有集群,放置才可以选择集群。
-
-
必需
TimeAdded
- 添加污点的时间。这个值会自动设置。
1.5.11.4.2. 识别内置污点以反映受管集群的状态
当无法访问受管集群时,您不希望集群添加到放置中。以下污点会自动添加到无法访问的受管集群:
cluster.open-cluster-management.io/unavailable
- 当集群有ManagedClusterConditionAvailable
条件为False
时,这个污点被添加到受管集群。污点具有NoSelect
和空值的效果,以防止调度不可用的集群。以下内容中提供了此污点的示例:apiVersion: cluster.open-cluster-management.io/v1 kind: ManagedCluster metadata: name: cluster1 spec: hubAcceptsClient: true taints: - effect: NoSelect key: cluster.open-cluster-management.io/unavailable timeAdded: '2022-02-21T08:11:54Z'
cluster.open-cluster-management.io/unreachable
- 当ManagedClusterConditionAvailable
条件的状态为Unknown
或没有条件时,此污点被添加到受管集群。污点对NoSelect
和一个空值的影响,以防止调度无法访问的集群。以下内容中提供了此污点的示例:apiVersion: cluster.open-cluster-management.io/v1 kind: ManagedCluster metadata: name: cluster1 spec: hubAcceptsClient: true taints: - effect: NoSelect key: cluster.open-cluster-management.io/unreachable timeAdded: '2022-02-21T08:11:06Z'
1.5.11.4.3. 为放置添加容限
容限应用到放置,并允许放置没有与放置容限匹配的污点的受管集群。容限的规格包括以下字段:
- 可选 键 - 密钥与 taint 键匹配以允许放置。
- 可选 值 - 容限中的值必须与容限的污点值匹配,以允许放置。
可选 Operator - Operator 代表键和值之间的关系。有效的操作符是
equal
和exists
。默认值为equal
。当键相同时,容限与污点匹配,影响相同,运算符是以下值之一:-
equal
- 运算符equal
,值在污点和容忍度中是相同的。 -
exists
- 值的通配符,因此放置可以容限特定类别的所有污点。
-
-
可选 效果 - 要匹配的污点效果。当留空时,它将匹配所有污点效果。指定后允许的值为
NoSelect
或NoSelectIfNew
。 -
可选 TolerationSeconds - 将受管集群移至新放置前容许污点的时间长度(以秒为单位)。如果 effect 值不是
NoSelect
或PreferNoSelect
,会忽略此字段。默认值为nil
,这表示没有时间限制。TolerationSeconds
的开始时间自动列为污点中的TimeAdded
值,而不是在集群调度时间或者TolerationSeconds
添加时间。
以下示例演示了如何配置容许具有污点的集群的容限:
受管集群中的污点,例如:
apiVersion: cluster.open-cluster-management.io/v1 kind: ManagedCluster metadata: name: cluster1 spec: hubAcceptsClient: true taints: - effect: NoSelect key: gpu value: "true" timeAdded: '2022-02-21T08:11:06Z'
允许容许污点的放置上的容限
apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement1 namespace: default spec: tolerations: - key: gpu value: "true" operator: Equal
在定义了容限示例后,放置可以选择
cluster1
,因为key: gpu
和value: "true"
匹配。
注: 受管集群不能保证放在包含污点容限的放置上。如果其他放置包含相同的容限,受管集群可能会放置到其中一个放置上。
1.5.11.4.4. 指定临时容限
TolerationSeconds
的值指定容限容许污点的时间期限。当受管集群离线时,这个临时容限会很有用,您可以将在此集群中部署的应用程序传送到另一个受管集群中,以便容忍的时间。
例如,具有以下污点的受管集群将无法访问:
apiVersion: cluster.open-cluster-management.io/v1 kind: ManagedCluster metadata: name: cluster1 spec: hubAcceptsClient: true taints: - effect: NoSelect key: cluster.open-cluster-management.io/unreachable timeAdded: '2022-02-21T08:11:06Z'
如果您使用 TolerationSeconds
的值定义放置,如下例所示,工作负载在 5 分钟后传输到另一个可用的受管集群。
apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: demo4 namespace: demo1 spec: tolerations: - key: cluster.open-cluster-management.io/unreachable operator: Exists tolerationSeconds: 300
受管集群在无法访问 5 分钟后,应用程序会被移到另一个受管集群。
1.5.11.5. 从 ManagedClusterSet中删除受管集群
您可能希望从受管集群集中删除受管集群,将其移到不同的受管集群集,或者从集合的管理设置中删除。您可以使用控制台或 CLI 从受管集群集中删除受管集群。
注:每个受管集群都必须分配到一个受管集群集。如果您从 ManagedClusterSet
中删除受管集群,且没有将其分配给不同的 ManagedClusterSet
,集群会自动添加到 默认
受管集群集中。
1.5.11.5.1. 使用控制台从 ManagedClusterSet 中删除集群
完成以下步骤,使用控制台从受管集群集中删除集群:
- 点 Infrastructure > Clusters,并确保选择了 Cluster set 选项卡。
- 选择您要从受管集群集中删除的集群集的名称,以查看集群设置详情。
- 选择 Actions > Manage resource assignments。
在 Manage resource assignments 页面上,删除您要从集群集合中删除的资源的复选框。
此步骤删除已是集群集成员的资源。您可以通过查看受管集群的详情来查看资源是否已是集群集的成员。
注: 如果要将受管集群从一个受管集群集移到另一个受管集群,则必须在两个受管集群集中都有所需的 RBAC 权限。
1.5.11.5.2. 使用 CLI 从 ManagedClusterSet 中删除集群
要使用命令行从受管集群集中删除集群,请完成以下步骤:
运行以下命令在受管集群集中显示受管集群列表:
oc get managedclusters -l cluster.open-cluster-management.io/clusterset=<cluster_set>
将
cluster_set
替换为受管集群集的名称。- 找到您要删除的集群条目。
从您要删除的集群的 YAML 条目中删除标签。参阅以下标签代码示例:
labels: cluster.open-cluster-management.io/clusterset: clusterset1
注: 如果要将受管集群从一个集群设置为另一个集群,则必须在两个受管集群集中都有所需的 RBAC 权限。
1.5.12. 在放置中使用 ManagedClusterSet
Placement
资源是一个命名空间范围的资源,它定义了一个规则来从 ManagedClusterSets
中选择 ManagedClusters
集合,它们绑定到放置命名空间。
需要的访问权限: Cluster administrator,Cluster set administrator
1.5.12.1. 放置概述
参阅以下有关使用受管集群放置的信息:
-
Kubernetes 集群在 hub 集群中注册,作为集群范围的
ManagedClusters
。 -
ManagedClusters
被组织到集群范围的ManagedClusterSets
中。 -
ManagedClusterSets
与工作负载命名空间绑定。 -
命名空间范围的
放置
指定ManagedClusterSet
的一个部分,用于选择潜在ManagedClusters
的工作集合。 -
placements
使用标签和声明选择器从受管集群集过滤ManagedClusters
。 -
ManagedClusters
的放置可以使用污点和容限控制。如需更多信息 ,请参阅使用污点和容限放置受管集群。 -
放置
根据要求对集群进行排名,并从中选择集群的子集。
备注:
-
您需要通过在该命名空间中创建一个
ManagedClusterSetBinding
来最少将一个ManagedClusterSet
绑定到一个命名空间。 -
您需要基于角色的访问权限,访问
managedclustersets/bind
的虚拟子资源上的CREATE
。
请参阅 Placements API 以了解有关 API 的详情。
1.5.12.2. placement LabelSelector 和 ClaimSelector
您可以使用
labelSelector
选择ManagedClusters
。请参阅以下示例,其中labelSelector
仅与带有标签vendor: OpenShift
的集群匹配:apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement namespace: ns1 spec: predicates: - requiredClusterSelector: labelSelector: matchLabels: vendor: OpenShift
您可以使用
claimSelector
选择ManagedClusters
。请参阅以下示例,其中claimSelector
仅与带有us-west-1
的region.open-cluster-management.io
的集群匹配:apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement namespace: ns1 spec: predicates: - requiredClusterSelector: claimSelector: matchExpressions: - key: region.open-cluster-management.io operator: In values: - us-west-1
您可以从特定的
clusterSets
中选择ManagedClusters
。请参阅以下示例,其中claimSelector
仅与clusterSets:
clusterset1
clusterset2
匹配:apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement namespace: ns1 spec: clusterSets: - clusterset1 - clusterset2 predicates: - requiredClusterSelector: claimSelector: matchExpressions: - key: region.open-cluster-management.io operator: In values: - us-west-1
选择所需的
ManagedClusters
数量。请参阅以下示例,其中numberOfClusters
为3
:apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement namespace: ns1 spec: numberOfClusters: 3 predicates: - requiredClusterSelector: labelSelector: matchLabels: vendor: OpenShift claimSelector: matchExpressions: - key: region.open-cluster-management.io operator: In values: - us-west-1
1.5.12.3. 放置容限
-
选择具有匹配污点的
ManagedClusters
。
假设受管集群有一个污点,如下例所示:
apiVersion: cluster.open-cluster-management.io/v1 kind: ManagedCluster metadata: name: cluster1 spec: hubAcceptsClient: true taints: - effect: NoSelect key: gpu value: "true" timeAdded: '2022-02-21T08:11:06Z'
默认情况下,除非定义容限,否则放置无法选择这个集群,如下例所示:
apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement namespace: ns1 spec: tolerations: - key: gpu value: "true" operator: Equal
-
在指定时间段内选择具有匹配污点的
ManagedClusters
。
TolerationSeconds
代表容限容许污点的时间长度,在受管集群离线时很有用,用户可以在容许的时间后将部署的应用程序转移到另一个可用的受管集群。TolerationSeconds
可以自动将在集群中部署的应用程序传送到另一个受管集群,这些集群在指定时长后离线。
例如,由以下示例内容定义的受管集群将无法访问:
apiVersion: cluster.open-cluster-management.io/v1 kind: ManagedCluster metadata: name: cluster1 spec: hubAcceptsClient: true taints: - effect: NoSelect key: cluster.open-cluster-management.io/unreachable timeAdded: '2022-02-21T08:11:06Z'
如果您使用 TolerationSeconds
定义放置,如以下示例所示,工作负载将在 5 分钟后传输到另一个可用的受管集群。
apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement namespace: ns1 spec: tolerations: - key: cluster.open-cluster-management.io/unreachable operator: Exists tolerationSeconds: 300
1.5.12.4. placement PrioritizerPolicy
选择具有最大可分配内存的集群。
注: 与 Kubernetes Node Allocatable 类似,"可分配"这里定义为每个集群中 pod 可用的计算资源数量。
apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement namespace: ns1 spec: numberOfClusters: 1 prioritizerPolicy: configurations: - scoreCoordinate: builtIn: ResourceAllocatableMemory
选择具有最大可分配 CPU 和内存的集群,并区分资源更改。
apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement namespace: ns1 spec: numberOfClusters: 1 prioritizerPolicy: configurations: - scoreCoordinate: builtIn: ResourceAllocatableCPU weight: 2 - scoreCoordinate: builtIn: ResourceAllocatableMemory weight: 2
选择具有最大
addOn
分数 CPU 比例的两个集群,并固定放置决策。apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement namespace: ns1 spec: numberOfClusters: 2 prioritizerPolicy: mode: Exact configurations: - scoreCoordinate: builtIn: Steady weight: 3 - scoreCoordinate: type: AddOn addOn: resourceName: default scoreName: cpuratio
1.5.12.5. 放置决定
将创建一个或多个带有标签 cluster.open-cluster-management.io/placement={placement name}
的 PlacementDecisions
来代表由一个 Placement
选择的 ManagedClusters
。
如果选择了 ManagedCluster
并添加到 PlacementDecision
中,消耗此放置
的组件可能会在这个 ManagedCluster
上应用工作负载。当 ManagedCluster
不再被选择并从 PlacementDecisions
中删除后,应删除在此 ManagedCluster
上应用的工作负载。
请参阅 PlacementDecisions API 以了解有关 API 的更多详细信息。
请参阅以下 PlacementDecision
示例:
apiVersion: cluster.open-cluster-management.io/v1beta1 kind: PlacementDecision metadata: labels: cluster.open-cluster-management.io/placement: placement1 name: placement1-kbc7q namespace: ns1 ownerReferences: - apiVersion: cluster.open-cluster-management.io/v1beta1 blockOwnerDeletion: true controller: true kind: Placement name: placement1 uid: 05441cf6-2543-4ecc-8389-1079b42fe63e status: decisions: - clusterName: cluster1 reason: '' - clusterName: cluster2 reason: '' - clusterName: cluster3 reason: ''
1.5.12.6. 附加组件状态
您可能希望根据部署在其上的附加组件的状态,为放置选择受管集群。例如,只有在集群中启用了特定的附加组件时,才会为放置选择受管集群。
在创建放置时,指定附加组件的标签及其状态。如果集群中启用了附加组件,则会自动在 ManagedCluster
资源上创建一个标签。如果禁用了附加组件,则会自动删除该标签。
每个附加组件都由一个标签表示,格式为 feature.open-cluster-management.io/addon-<addon_name>=<status_of_addon>
。
使用要在要选择的受管集群中启用的附加组件名称替换 addon_name
。
将 status_of_addon
替换为在选择集群时该附加组件应具有的状态。status_of_addon
的可能值位于以下列表中:
-
available
:附加组件已启用并可用。 -
unhealthy
:附加组件已启用,但租期不会持续更新。 -
unreachable
:附加组件已启用,但没有为其找到租用。也可以在受管集群离线时导致这个问题。
例如,可用的 application-manager
附加组件由受管集群中的标签表示:
feature.open-cluster-management.io/addon-application-manager: available
请参阅以下基于附加组件及其状态创建放置的示例:
您可以通过添加以下 YAML 内容来创建放置,其中包含启用了
application-manager
的所有受管集群:apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement1 namespace: ns1 spec: predicates: - requiredClusterSelector: labelSelector: matchExpressions: - key: feature.open-cluster-management.io/addon-application-manager operator: Exists
您可以通过添加以下 YAML 内容来创建放置,其中包含启用了
application-manager
且具有available
状态的所有受管集群:apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement2 namespace: ns1 spec: predicates: - requiredClusterSelector: labelSelector: matchLabels: "feature.open-cluster-management.io/addon-application-manager": "available"
您可以通过添加以下 YAML 内容来创建包含禁用
application-manager
的所有受管集群的放置:apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement3 namespace: ns1 spec: predicates: - requiredClusterSelector: labelSelector: matchExpressions: - key: feature.open-cluster-management.io/addon-application-manager operator: DoesNotExist
1.5.13. 管理集群池(技术预览)
集群池提供对按需和规模配置的 Red Hat OpenShift Container Platform 集群的快速、经济的访问。集群池在 Amazon Web Services、Google Cloud Platform 或 Microsoft Azure 上置备可配置且可扩展的 OpenShift Container Platform 集群,在需要时可以声明。在为开发、持续集成和生产环境提供或替换集群环境时,它们特别有用。您可以指定多个集群来保持运行,以便可以立即声明它们,而集群的剩余部分将保留在休眠状态,以便在几分钟后恢复并声明。
ClusterClaim
资源用于从集群池中签出集群。创建集群声明时,池会为它分配一个正在运行的集群。如果没有正在运行的集群可用,则会恢复休眠集群来提供集群或新的集群。集群池自动创建新集群,并恢复休眠集群来维护池中的指定大小和可用集群的数量。
创建集群池的过程与创建集群的步骤类似。在集群池中创建的集群不会供立即使用。
1.5.13.1. 创建集群池
创建集群池的过程与创建集群的步骤类似。在集群池中创建的集群不会供立即使用。
需要的访问权限:Administrator
1.5.13.1.1. 先决条件
在创建集群池前,请查看以下先决条件:
- 您需要部署多集群引擎 operator hub 集群。
- 您需要对多集群引擎 operator hub 集群的互联网访问,以便它在供应商环境中创建 Kubernetes 集群。
- 您需要一个 AWS、GCP 或 Microsoft Azure 供应商凭证。如需更多信息,请参阅管理凭证概述。
- 您需要供应商环境中配置的域。有关如何配置域的说明,请参阅您的供应商文档。
- 您需要供应商登录凭证。
- 您需要 OpenShift Container Platform 镜像 pull secret。请参阅使用镜像 pull secret。
注: 使用此流程添加集群池,以便在从池中声明集群时自动导入由 multicluster engine operator 管理的集群。如果要创建一个没有自动导入使用集群声明的集群池,请将以下注解添加到 clusterClaim
资源中:
kind: ClusterClaim metadata: annotations: cluster.open-cluster-management.io/createmanagedcluster: "false"
"false"
必须用引号括起来,表示它是一个字符串。
1.5.13.1.2. 创建集群池
要创建集群池,在导航菜单中选择 Infrastructure > Clusters。Cluster pool 选项卡列出您可以访问的集群池。选择 Create cluster pool 并完成控制台中的步骤。
如果您没有要用于集群池的基础架构凭证,可以通过选择 Add credential 来创建一个。
您可以从列表中选择现有命名空间,或者键入要创建新命名空间的名称。集群池不必与集群位于同一个命名空间中。
如果您希望集群池的 RBAC 角色共享现有集群集合的角色分配,请选择集群设置名称。只有创建集群池时,才能设置集群池中的集群设置。您无法在创建集群池后更改集群池或集群池中集群集的关联。从集群池中声明的任何集群都会自动添加到与集群池相同的集群集合中。
注:如果没有 cluster admin
权限,则必须选择一个集群集。如果您在此情形中没有包含集群集的名称,则创建集群集的请求将被拒绝,并带有禁止的错误。如果没有集群集可供选择,请联络您的集群管理员来创建集群集,并为您提供 clusterset admin
权限。
集群池大小
指定您要在集群池中置备的集群数量,而集群池运行计数指定池正在运行的集群数量,并准备好立即使用。
此过程与创建集群的步骤非常相似。
有关您的供应商所需信息的详情,请查看以下信息:
1.5.13.2. 从集群池中声明集群
ClusterClaim
资源用于从集群池中签出集群。当集群正在运行并位于集群池中时,会出现一个声明。集群池自动在集群池中创建新运行和休眠集群,以维护为集群池指定的要求。
注: 当从集群池中声明的集群不再需要并销毁时,资源会被删除。集群不会返回到集群池。
需要的访问权限:Administrator
1.5.13.2.1. 前提条件
在从集群池中声明集群前,您必须有以下可用:
具有或没有可用集群的集群池。如果集群池中存在可用的集群,则会声明可用的集群。如果集群池中没有可用的集群,则会创建一个集群来满足这个声明。如需有关如何创建集群池的信息,请参阅创建集群池。
1.5.13.2.2. 从集群池中声明集群
在创建集群声明时,您可以从集群池请求新集群。当集群可用时,从池中签出集群。声明的集群自动导入为其中一个受管集群,除非您禁用了自动导入。
完成以下步骤以声明集群:
- 在导航菜单中点 Infrastructure > Clusters,然后选择 Cluster pool 选项卡。
- 从中查找您要声明集群的集群池的名称,然后选择 Claim cluster。
如果集群可用,它将被声明并立即出现在 Managed cluster 选项卡中。如果没有可用的集群,可能需要几分钟时间来恢复休眠集群或置备新集群。在这个时间中,声明状态为 pending
。扩展集群池,以查看或删除待处理的声明。
当它在集群池中,声明的集群会保留作为与它关联的集群集的成员。在声明集群时,您无法更改声明的集群集合。
注: 对于从集群池声明的现有集群,对云供应商凭证的 pull secret、SSH 密钥或基域的更改不会反映,因为它们已使用原始凭证置备。您不能使用控制台编辑集群池信息,但您可以使用 CLI 接口更新其信息来更新它。您还可以使用包含更新信息的凭证创建新集群池。在新池中创建的集群使用新凭证中提供的设置。
1.5.13.3. 更新集群池发行镜像
当集群中的集群保留在休眠状态一段时间时,集群的 Red Hat OpenShift Container Platform 发行镜像可能会变为 backlevel。如果发生这种情况,您可以升级集群池中集群的发行镜像版本。
需要的访问权限 : Edit
完成以下步骤,为集群池中的集群更新 OpenShift Container Platform 发行镜像:
注: 此步骤不会从集群池中已声明的集群池中更新集群。完成此步骤后,对发行镜像的更新仅适用于与集群池相关的以下集群:
- 使用此流程更新发行镜像后,由集群池创建的集群。
- 在集群池中休眠的集群。使用旧发行镜像的现有休眠集群将被销毁,新集群使用新的发行镜像替换它们。
- 在导航菜单中点 Infrastructure > Clusters。
- 选择 Cluster pools 选项卡。
- 在 Cluster pool 表中找到您要更新的集群池的名称。
- 点表中的 Cluster pools 的 Options 菜单,然后选择 Update release image。
- 从这个集群池中选择一个新的发行镜像,用于将来的集群创建。
集群池发行镜像已更新。
提示: 您可以通过选择一个操作来更新多个集群池的发行镜像,方法是选择每个集群池的复选框,并使用 Actions 菜单来更新所选集群池的发行镜像。
1.5.13.4. 扩展集群池(技术预览)
您可以通过增加或减少集群池大小中的集群数量来更改集群池中的集群数量。
需要的访问权限: 集群管理员
完成以下步骤以更改集群池中的集群数量:
- 在导航菜单中点 Infrastructure > Clusters。
- 选择 Cluster pools 选项卡。
- 在您要更改的集群池的 Options 菜单中,选择 Scale cluster pool。
- 更改池大小的值。
- 另外,您还可以更新正在运行的集群数量,以便在声明它们时立即可用的集群数量。
集群池已扩展,以反映您的新值。
1.5.13.5. 销毁一个集群池
如果您创建了集群池,并确定您不再需要它,您可以销毁集群池。当您销毁集群池时,所有未声明的休眠集群都会被销毁,并释放其资源。
需要的访问权限: 集群管理员
要销毁集群池,请完成以下步骤:
- 在导航菜单中点 Infrastructure > Clusters。
- 选择 Cluster pools 选项卡。
在您要删除的集群池的 Options 菜单中,选择 Destroy cluster pool。集群池中的任何未声明的集群都会被销毁。可能需要一些时间才能删除所有资源,集群池会在控制台中可见,直到所有资源都被删除为止。
包含 ClusterPool 的命名空间不会被删除。删除命名空间将销毁 ClusterPool 声明的任何集群,因为这些集群的 ClusterClaim 资源会在同一命名空间中创建。
提示: 您可以通过选择一个操作来销毁多个集群池,方法是选择每个集群池的复选框,并使用 Actions 菜单销毁所选集群池。
1.5.14. 启用 ManagedServiceAccount 附加组件(技术预览)
安装多集群引擎 operator 时,ManagedServiceAccount
附加组件会被默认禁用。启用该组件后,您可以在受管集群上创建或删除服务帐户。
需要的访问权限: Editor
当在 hub 集群的 <managed_cluster>
命名空间中创建了一个 ManagedServiceAccount
自定义资源后,会在受管集群中创建一个 ServiceAccount
。
TokenRequest
由受管集群中的 ServiceAccount
组成,指向受管集群的 Kubernetes API 服务器。然后,令牌将存储在 hub 集群上的 <target_managed_cluster>
命名空间中的 Secret
中。
注: 令牌可以过期并可以被轮转。有关令牌请求的更多信息,请参阅 TokenRequest。
1.5.14.1. 先决条件
- Red Hat OpenShift Container Platform 版本 4.11 或更高版本必须部署到您的环境中,且必须使用 CLI 登录。
- 您需要安装 multicluster engine operator。
1.5.14.2. 启用 ManagedServiceAccount
要为 hub 集群和受管集群启用 Managed-ServiceAccount
附加组件,请完成以下步骤:
-
在 hub 集群上启用
ManagedServiceAccount
附加组件。请参阅高级配置 以了解更多信息。 部署
ManagedServiceAccount
附加组件,并将其应用到目标受管集群。创建以下 YAML 文件,并将target_managed_cluster
替换为您要应用Managed-ServiceAccount
附加组件的受管集群的名称:apiVersion: addon.open-cluster-management.io/v1alpha1 kind: ManagedClusterAddOn metadata: name: managed-serviceaccount namespace: <target_managed_cluster> spec: installNamespace: open-cluster-management-agent-addon
运行以下命令以应用该文件:
oc apply -f -
您已为受管集群启用了
Managed-ServiceAccount
插件。请参阅以下步骤来配置ManagedServiceAccount
。使用以下 YAML 源创建
ManagedServiceAccount
自定义资源:apiVersion: authentication.open-cluster-management.io/v1alpha1 kind: ManagedServiceAccount metadata: name: <managed_serviceaccount_name> namespace: <target_managed_cluster> spec: rotation: {}
-
将
managed_serviceaccount_name
替换为ManagedServiceAccount
的名称。 -
将
target_managed_cluster
替换为您要将ManagedServiceAccount
应用到的受管集群的名称。
-
将
要验证,请查看
ManagedServiceAccount
对象状态中的tokenSecretRef
属性,以查找 secret 名称和命名空间。使用您的帐户和集群名称运行以下命令:oc get managedserviceaccount <managed_serviceaccount_name> -n <target_managed_cluster> -o yaml
查看包含连接到受管集群中创建的
ServiceAccount
的已检索令牌的Secret
。运行以下命令:oc get secret <managed_serviceaccount_name> -n <target_managed_cluster> -o yaml
1.5.15. 集群生命周期高级配置
您可以在安装过程中或安装后配置一些集群设置。
1.5.15.1. 自定义 API 服务器证书
受管集群通过与 OpenShift Kube API 服务器外部负载均衡器相互连接与 hub 集群通信。安装 OpenShift Container Platform 时,默认的 OpenShift Kube API 服务器证书由内部 Red Hat OpenShift Container Platform 集群证书颁发机构(CA)发布。如果需要,您可以添加或更改证书。
更改证书可能会影响受管集群和 hub 集群之间的通信。当您在安装产品前添加指定证书时,您可以避免使受管集群处于离线状态的问题。
以下列表包含一些您可能需要更新证书时的示例:
您要将负载均衡器的默认证书替换为您自己的证书。按照在 OpenShift Container Platform 文档中的 添加 API 服务器证书 的指导信息,添加指定证书为主机名
api.<cluster_name>.<base_domain
> 来替换外部负载均衡器的默认 API 服务器证书。替换证书可能会导致一些受管集群进入离线状态。如果在升级证书后集群处于离线状态,请按照 证书更改后离线对导入集群进行故障排除 的说明进行操作。注: 在安装产品前添加指定证书有助于避免集群进入离线状态。
外部负载均衡器的证书即将过期,您需要替换它。完成以下步骤以替换证书:
找到
APIServer
自定义资源,如下例所示:apiVersion: config.openshift.io/v1 kind: APIServer metadata: name: cluster spec: audit: profile: Default servingCerts: namedCertificates: - names: - api.mycluster.example.com servingCertificate: name: old-cert-secret
运行以下命令,在
openshift-config
命名空间中创建一个新 secret,其中包含现有证书和新证书的内容:将旧证书复制到新证书中:
cp old.crt combined.crt
将新证书的内容添加到旧证书的副本中:
cat new.crt >> combined.crt
应用组合证书以创建 secret:
oc create secret tls combined-certs-secret --cert=combined.crt --key=old.key -n openshift-config
更新您的
APIServer
资源,将组合证书引用为serviceCertificate
。apiVersion: config.openshift.io/v1 kind: APIServer metadata: name: cluster spec: audit: profile: Default servingCerts: namedCertificates: - names: - api.mycluster.example.com servingCertificate: name: combined-cert-secret
- 大约 15 分钟后,包含新证书和旧证书的 CA 捆绑包将传播到受管集群。
输入以下命令在
openshift-config
命名空间中创建一个名为new-cert-secret
的 secret,该 secret 只包括新证书信息:oc create secret tls new-cert-secret --cert=new.crt --key=new.key -n openshift-config {code}
通过更改
serviceCertificate
的名称以引用new-cert-secret
来更新APIServer
资源。您的资源可能类似以下示例:apiVersion: config.openshift.io/v1 kind: APIServer metadata: name: cluster spec: audit: profile: Default servingCerts: namedCertificates: - names: - api.mycluster.example.com servingCertificate: name: new-cert-secret
大约 15 分钟后,旧证书会从 CA 捆绑包中删除,更改会自动传播到受管集群。
注: 受管集群必须使用主机名 api.<cluster_name>.<base_domain&
gt; 来访问 hub 集群。您不能使用配置了其他主机名的命名证书。
1.5.15.2. 其他资源
1.5.16. 从管理中移除集群
当您从管理中删除使用 multicluster engine operator 创建的 OpenShift Container Platform 集群时,您可以分离或销毁它。分离集群会将其从管理中移除,但不会完全删除。如果要管理它,您可以再次导入它。只有集群处于 Ready 状态时方可使用这个选项。
以下流程在以下情况下从管理中删除集群:
- 您已删除集群,并希望从 Red Hat Advanced Cluster Management 中删除已删除的集群。
- 您要从管理中删除集群,但还没有删除集群。
重要:
- 销毁集群会将其从管理中移除,并删除集群的组件。
当您分离受管集群时,相关命名空间会被自动删除。不要将自定义资源放在这个命名空间中。
1.5.16.1. 使用控制台删除集群
在导航菜单中导航到 Infrastructure > Clusters,从您要从管理中删除的集群旁的选项菜单中选择 Destroy cluster 或 Detach cluster。
提示: 您可以通过选择要分离或销毁的集群的复选框来分离或销毁多个集群,然后选择 Detach 或 Destroy。
注: 如果您在管理的 hub 集群(称为 local-cluster
)时尝试分离 hub 集群,请检查 disableHubSelfManagement
的默认设置是否为 false
。此设置会导致 hub 集群在分离时重新导入自己并管理自己,并协调 MultiClusterHub
控制器。hub 集群可能需要几小时时间来完成分离过程并重新导入。
要在不需要等待进程完成的情况下重新导入 hub 集群,您可以输入以下命令来重启 multiclusterhub-operator
pod 并更快地重新导入:
oc delete po -n open-cluster-management `oc get pod -n open-cluster-management | grep multiclusterhub-operator| cut -d' ' -f1`
您可以通过将 disableHubSelfManagement
值改为 true
来更改 hub 集群的值,如 在线安装 中所述。
1.5.16.2. 使用命令行删除集群
要使用 hub 集群的命令行分离受管集群,请运行以下命令:
oc delete managedcluster $CLUSTER_NAME
要在分离后销毁受管集群,请运行以下命令:
oc delete clusterdeployment <CLUSTER_NAME> -n $CLUSTER_NAME
备注:
-
要防止销毁受管集群,在
ClusterDeployment
自定义资源中将spec.preserveOnDelete
参数设置为true
。 disableHubSelfManagement
的默认设置是false
。false'setting 会导致 hub 集群(也称为 'local-cluster
)在分离时重新导入和管理自己,并协调MultiClusterHub
控制器。分离和重新导入过程可能需要几小时时间才能完成 hub 集群。如果要在等待进程完成后重新导入 hub 集群,您可以输入以下命令来重启
multiclusterhub-operator
pod 并更快地重新导入:oc delete po -n open-cluster-management `oc get pod -n open-cluster-management | grep multiclusterhub-operator| cut -d' ' -f1`
您可以通过将
disableHubSelfManagement
值改为true
来更改 hub 集群的值,使其不会自动导入。请参阅在线安装。
1.5.16.3. 删除集群后删除剩余的资源
如果受管集群上有剩余的资源,则需要额外的步骤以确保删除所有剩余的组件。需要这些额外步骤的情况,包括以下示例:
-
受管集群在完全创建前会被分离,但
klusterlet
等一些组件会保留在受管集群中。 - 在分离受管集群前,管理集群的 hub 丢失或销毁,因此无法从 hub 中分离受管集群。
- 当受管集群被分离后,受管集群将处于非在线状态。
如果其中一个情况适用于您试图分离的受管集群,则有些资源将无法从受管集群中删除。完成以下步骤以分离受管集群:
-
确保配置了
oc
命令行界面。 确保您在受管集群中配置了
KUBECONFIG
。如果运行
oc get ns | grep open-cluster-management-agent
,您应该看到两个命名空间:open-cluster-management-agent Active 10m open-cluster-management-agent-addon Active 10m
运行以下命令以删除剩余的资源:
oc delete namespaces open-cluster-management-agent open-cluster-management-agent-addon --wait=false oc get crds | grep open-cluster-management.io | awk '{print $1}' | xargs oc delete crds --wait=false oc get crds | grep open-cluster-management.io | awk '{print $1}' | xargs oc patch crds --type=merge -p '{"metadata":{"finalizers": []}}'
运行以下命令,以确保命名空间和所有打开的集群管理
crds
均已被删除:oc get crds | grep open-cluster-management.io | awk '{print $1}' oc get ns | grep open-cluster-management-agent
1.5.16.4. 删除集群后对 etcd 数据库进行碎片整理
拥有多个受管集群可能会影响 hub 集群中 etcd
数据库的大小。在 OpenShift Container Platform 4.8 中,当删除受管集群时,hub 集群中的 etcd
数据库不会被自动减小。在某些情况下,etcd
数据库可能会耗尽空间。此时会显示一个错误 etcdserver: mvcc: database space exceeded
。要更正此错误,请通过压缩数据库历史记录并对 etcd
数据库进行碎片整理来减小 etcd
数据库的大小。
注: 对于 OpenShift Container Platform 版本 4.9 及更新的版本,etcd Operator 会自动清理磁盘并压缩 etcd
历史记录。不需要人工干预。以下流程适用于 OpenShift Container Platform 版本 4.8 及更早版本。
通过完成以下步骤,压缩 etcd
历史记录并整理 hub 集群中 etcd
数据库的碎片。
1.5.16.4.1. 先决条件
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
特权的用户身份登录。
1.5.16.4.2. 流程
压缩
etcd
历史记录。打开到
etcd
成员的远程 shell 会话,例如:$ oc rsh -n openshift-etcd etcd-control-plane-0.example.com etcdctl endpoint status --cluster -w table
运行以下命令来压缩
etcd
历史记录:sh-4.4#etcdctl compact $(etcdctl endpoint status --write-out="json" | egrep -o '"revision":[0-9]*' | egrep -o '[0-9]*' -m1)
输出示例
$ compacted revision 158774421
-
清理
etcd
数据库并清除任何NOSPACE
警报,如分离etcd
数据 中所述。