搜索

集群

download PDF
Red Hat Advanced Cluster Management for Kubernetes 2.7

使用集群生命周期和多集群引擎,您可以创建和管理集群。集群生命周期可以通过 multicluster engine operator 提供。

摘要

了解有关集群生命周期和多集群引擎 operator 的更多信息。

第 1 章 带有多集群引擎 operator 的集群生命周期概述

multicluster engine operator 是集群生命周期 Operator,它为 OpenShift Container Platform 和 Red Hat Advanced Cluster Management hub 集群提供集群管理功能。在 hub 集群中,您可以创建和管理集群,也可以销毁您创建的任何集群。您还可以休眠、恢复和分离集群。从以下文档了解更多有关集群生命周期功能的信息。

信息:

集群生命周期管理架构的组件包括在集群生命周期架构中。

1.1. 发行注记

了解当前版本。

已弃用: 不再支持 multicluster engine operator 2.2。文档可能仍然可用,但没有任何可用的勘误或其他更新。升级到最新支持的 multicluster engine operator 版本以获取最佳结果。

如果您在当前支持的某个版本或产品文档时遇到问题,请访问 红帽支持,您可以在其中进行故障排除、查看知识库文章、与支持团队连接,或者创建一个问题单。您必须使用您的凭证登录。

您还可以访问红帽客户门户文档,Red Hat Customer Portal FAQ

1.1.1. 使用 multicluster engine operator 的集群生命周期新功能

重要:一些功能和组件作为技术预览发布。

了解更多本发行版本的新内容:

1.1.1.1. 安装

如果安装了 OpenShift Container Platform 或 Red Hat Advanced Cluster Management,则会自动接收 multicluster engine operator。如果安装的多集群引擎 operator 有任何新功能,您可以在本节中查看它们。

1.1.1.2. 集群生命周期

了解与 multicluster engine operator 的集群生命周期有关的新新功能。

以下 API 有新版本: - Clusterset: v1beta2 - ClustersetBinding: v1beta2 请参阅 API 以了解更多信息。

  • 您可以使用两种 control plane 类型:hosted(托管)和 standalone(独立)。Standalone 是控制台向导功能,Hosted 提供具体步骤和指导,以便您可以通过 CLI 创建集群。
  • 现在,您可以更新 MultiClusterEngine 自定义资源,以指定 hub 集群是否由自己管理。如需更多信息,请参阅本地集群启用
  • 您可以在断开连接的环境中创建基础架构环境时,修改 ConfigMapAgentServiceConfig 文件中的设置,以指定未经身份验证的 registry。如需更多信息 ,请参阅启用中央基础架构管理服务
  • 现在,使用 MachinePool 扩展已正式发布,您可以轻松地配置自动扩展来扩展资源。如需更多信息,请参阅使用 MachinePool 扩展
1.1.1.3. 托管 control plane

1.1.2. 已知的与集群生命周期相关的问题

查看 multicluster engine operator 的集群生命周期的已知问题。以下列表包含本发行版本的已知问题,或从上一版本中继承的问题。对于 OpenShift Container Platform 集群,请参阅 OpenShift Container Platform 发行注记

1.1.2.1. 集群管理

集群生命周期已知问题和限制是 multicluster engine operator 文档的集群生命周期的一部分。

1.1.2.1.1. 删除附加组件时,手动删除受管集群上所需的 VolSync CSV

当您从 hub 集群中删除 VolSync ManagedClusterAddOn 时,它会删除受管集群上的 VolSync operator 订阅,但不会删除集群服务版本(CSV)。要从受管集群中删除 CSV,请在您要删除 VolSync 的每个受管集群中运行以下命令:

oc delete csv -n openshift-operators volsync-product.v0.6.0

如果您安装了不同版本的 VolSync,请将 v0.6.0 替换为您的安装版本。

1.1.2.1.2. 删除受管集群集不会自动删除其标签

删除 ManagedClusterSet 后,添加到每个受管集群的标签不会被自动删除。从已删除受管集群集中包含的每个受管集群手动删除该标签。该标签类似以下示例:cluster.open-cluster-management.io/clusterset:<ManagedClusterSet Name>

1.1.2.1.3. ClusterClaim 错误

如果您针对 ClusterPool 创建 Hive ClusterClaim 并手动将 ClusterClaimspec 生命周期字段设置为无效的 golang 时间值,则产品将停止实现并协调所有 ClusterClaims,而不仅仅是不正确的声明。

如果发生这个错误,您可以在 clusterclaim-controller pod 日志中看到以下内容,它是一个带有池名称和无效生命周期的特定示例:

E0203 07:10:38.266841       1 reflector.go:138] sigs.k8s.io/controller-runtime/pkg/cache/internal/informers_map.go:224: Failed to watch *v1.ClusterClaim: failed to list *v1.ClusterClaim: v1.ClusterClaimList.Items: []v1.ClusterClaim: v1.ClusterClaim.v1.ClusterClaim.Spec: v1.ClusterClaimSpec.Lifetime: unmarshalerDecoder: time: unknown unit "w" in duration "1w", error found in #10 byte of ...|time":"1w"}},{"apiVe|..., bigger context ...|clusterPoolName":"policy-aas-hubs","lifetime":"1w"}},{"apiVersion":"hive.openshift.io/v1","kind":"Cl|...

您可以删除无效的声明。

如果删除了不正确的声明,则声明可以在不需要进一步交互的情况下再次成功进行协调。

1.1.2.1.4. 产品频道与置备的集群不同步

clusterimageset 处于 fast 频道,但置备的集群处于 stable 频道。目前,产品不会将 频道 同步到置备的 OpenShift Container Platform 集群。

进入 OpenShift Container Platform 控制台中的正确频道。点 Administration > Cluster Settings > Details Channel

1.1.2.1.5. 使用自定义 CA 证书恢复到其恢复的 hub 集群连接可能会失败

恢复受管集群使用自定义 CA 证书的 hub 集群的备份后,受管集群和 hub 集群之间的连接可能会失败。这是因为在恢复的 hub 集群上没有备份 CA 证书。要恢复连接,将受管集群的命名空间中自定义 CA 证书信息复制到恢复的 hub 集群上的 <managed_cluster>-admin-kubeconfig secret。

提示: 如果您在创建备份副本前将此 CA 证书复制到 hub 集群,备份副本会包括 secret 信息。当使用备份副本来恢复时,hub 和受管集群之间的连接会自动完成。

1.1.2.1.6. local-cluster 可能无法自动重新创建

如果在 disableHubSelfManagement 被设置为 false 时删除 local-cluster,则 MulticlusterHub operator 会重新创建 local-cluster。分离 local-cluster 后,可能不会自动重新创建 local-cluster。

  • 要解决这个问题,修改由 MulticlusterHub operator 监控的资源。请参见以下示例:

    oc delete deployment multiclusterhub-repo -n <namespace>
  • 要正确分离 local-cluster,在 MultiClusterHub 中将 disableHubSelfManagement 设置为 true。
1.1.2.1.7. 在创建内部集群时需要选择子网

使用控制台创建内部集群时,您必须为集群选择一个可用的子网。它没有标记为必填字段。

1.1.2.1.8. 使用 Infrastructure Operator 进行集群置备失败

当使用 Infrastructure Operator 创建 OpenShift Container Platform 集群时,ISO 镜像的文件名可能会太长。镜像名称长会导致镜像置备和集群置备失败。要确定这是否是问题,请完成以下步骤:

  1. 运行以下命令,查看您要置备的集群的裸机主机信息:

    oc get bmh -n <cluster_provisioning_namespace>
  2. 运行 describe 命令以查看错误信息:

    oc describe bmh -n <cluster_provisioning_namespace> <bmh_name>
  3. 类似以下示例的错误表示文件名的长度问题:

    Status:
      Error Count:    1
      Error Message:  Image provisioning failed: ... [Errno 36] File name too long ...

如果出现问题,通常位于以下 OpenShift Container Platform 版本上,因为基础架构操作员不使用镜像服务:

  • 4.8.17 及更早版本
  • 4.9.6 及更早版本

为了避免这个错误,将 OpenShift Container Platform 升级到 4.8.18 或更高版本,或 4.9.7 或更高版本。

1.1.2.1.9. 使用不同名称重新导入后 local-cluster 状态为离线

当您意外尝试以不同名称的集群形式重新导入名为 local-cluster 的集群时,local-cluster 和重新导入的集群的状态将 离线

要从这个问题单中恢复,请完成以下步骤:

  1. 在 hub 集群中运行以下命令,以临时编辑 hub 集群的自助管理设置:

    oc edit mch -n open-cluster-management multiclusterhub
  2. 添加 spec.disableSelfManagement=true 设置。
  3. 在 hub 集群中运行以下命令以删除并重新部署 local-cluster:

    oc delete managedcluster local-cluster
  4. 输入以下命令删除 local-cluster 管理设置:

    oc edit mch -n open-cluster-management multiclusterhub
  5. 删除之前添加的 spec.disableSelfManagement=true
1.1.2.1.10. 在代理环境中使用 Ansible 自动化进行集群置备失败

当满足以下条件时,配置为自动置备受管集群的 Automation 模板可能会失败:

  • hub 集群启用了集群范围代理。
  • Ansible Automation Platform 只能通过代理访问。
1.1.2.1.11. klusterlet Operator 的版本必须与 hub 集群相同

如果您通过安装 klusterlet operator 导入受管集群,klusterlet Operator 的版本必须与 hub 集群的版本相同,或者 klusterlet Operator 将无法正常工作。

1.1.2.1.12. 无法手动删除受管集群命名空间

您无法手动删除受管集群的命名空间。受管集群命名空间会在受管集群分离后自动删除。如果在分离受管集群前手动删除受管集群命名空间,受管集群会在删除受管集群后显示持续终止状态。要删除此正在终止的受管集群,请从分离的受管集群中手动删除终结器。

1.1.2.1.13. hub 集群和受管集群的时钟未同步

hub 集群和管理集群的时间可能会不同步,在控制台中显示 unknown,当在几分钟内会变为 available。确保正确配置了 OpenShift Container Platform hub 集群时间。请参阅自定义节点

1.1.2.1.14. 不支持导入 IBM OpenShift Container Platform Kubernetes Service 集群的特定版本

您无法导入 IBM OpenShift Container Platform Kubernetes Service 版本 3.11 集群。支持 IBM OpenShift Kubernetes Service 的更新的版本。

1.1.2.1.15. 不支持为置备的集群进行自动 secret 更新

当您在云供应商一端更改云供应商访问密钥时,您还需要在 multicluster engine operator 的控制台中更新此云供应商的对应凭证。当凭证在托管受管集群的云供应商过期并尝试删除受管集群时,需要此项。

1.1.2.1.17. 销毁集群的进程没有完成

当销毁受管集群时,在一小时后仍然继续显示 Destroying 状态,且集群不会被销毁。要解决这个问题请完成以下步骤:

  1. 手动确保云中没有孤立的资源,,且清理与受管集群关联的所有供应商资源。
  2. 输入以下命令为正在删除的受管集群打开 ClusterDeployment

    oc edit clusterdeployment/<mycluster> -n <namespace>

    mycluster 替换为您要销毁的受管集群的名称。

    使用受管集群的命名空间替换 namespace

  3. 删除 hive.openshift.io/deprovision finalizer,以强制停止尝试清理云中的集群资源的进程。
  4. 保存您的更改,验证 ClusterDeployment 是否已不存在。
  5. 运行以下命令手动删除受管集群的命名空间:

    oc delete ns <namespace>

    使用受管集群的命名空间替换 namespace

1.1.2.1.18. 无法使用控制台在 OpenShift Container Platform Dedicated 上升级 OpenShift Container Platform 受管集群

您不能使用 Red Hat Advanced Cluster Management 控制台升级 OpenShift Container Platform Dedicated 环境中的 OpenShift Container Platform 受管集群。

1.1.2.1.20. 非 Red Hat OpenShift Container Platform 受管集群必须启用 LoadBalancer

Red Hat OpenShift Container Platform 集群和非 OpenShift Container Platform 集群都支持 pod 日志功能,但非 OpenShift Container Platform 集群需要启用 LoadBalancer 来使用该功能。完成以下步骤以启用 LoadBalancer

  1. 云供应商有不同的 LoadBalancer 配置。有关更多信息,请访问您的云供应商文档。
  2. 检查 loggingEndpoint 是否显示 managedClusterInfo 状态来验证 Red Hat Advanced Cluster Management 上是否启用了 LoadBalancer
  3. 运行以下命令,以检查 loggingEndpoint.IPloggingEndpoint.Host 是否具有有效的 IP 地址或主机名:

    oc get managedclusterinfo <clusterName> -n <clusterNamespace> -o json | jq -r '.status.loggingEndpoint'

如需有关 LoadBalancer 类型的更多信息,请参阅 Kubernetes 文档中的 Service 页面。

1.1.2.1.21. OpenShift Container Platform 4.10.z 不支持使用代理配置托管的 control plane 集群

当您在 OpenShift Container Platform 4.10.z 上使用集群范围代理配置创建托管服务集群时,nodeip-configuration.service 服务不会在 worker 节点上启动。

1.1.2.1.22. 无法在 Azure 上置备 OpenShift Container Platform 4.11 集群

因为身份验证 operator 超时错误,在 Azure 上置备 OpenShift Container Platform 4.11 集群会失败。要临时解决这个问题,在 install-config.yaml 文件中使用不同的 worker 节点类型,或者将 vmNetworkingType 参数设置为 Basic。请参阅以下 install-config.yaml 示例:

compute:
- hyperthreading: Enabled
  name: 'worker'
  replicas: 3
  platform:
    azure:
      type:  Standard_D2s_v3
      osDisk:
        diskSizeGB: 128
      vmNetworkingType: 'Basic'
1.1.2.1.23. 客户端无法访问 iPXE 脚本

iPXE 是开源网络引导固件。如需了解更多详细信息,请参阅 iPXE

引导节点时,一些 DHCP 服务器中的 URL 长度限制会关闭 InfraEnv 自定义资源定义中的 ipxeScript URL,从而导致在控制台中的以下错误消息:

no bootable devices

要临时解决这个问题,请完成以下步骤:

  1. 在使用辅助安装时应用 InfraEnv 自定义资源定义以公开 bootArtifacts,它可能类似以下文件:

    status:
      agentLabelSelector:
        matchLabels:
          infraenvs.agent-install.openshift.io: qe2
      bootArtifacts:
        initrd: https://assisted-image-service-multicluster-engine.redhat.com/images/0000/pxe-initrd?api_key=0000000&arch=x86_64&version=4.11
        ipxeScript: https://assisted-service-multicluster-engine.redhat.com/api/assisted-install/v2/infra-envs/00000/downloads/files?api_key=000000000&file_name=ipxe-script
        kernel: https://mirror.openshift.com/pub/openshift-v4/x86_64/dependencies/rhcos/4.11/latest/rhcos-live-kernel-x86_64
        rootfs: https://mirror.openshift.com/pub/openshift-v4/x86_64/dependencies/rhcos/4.11/latest/rhcos-live-rootfs.x86_64.img
  2. 创建代理服务器以使用短 URL 公开 bootArtifacts
  3. 运行以下命令复制 bootArtifacts 并将其添加到代理中:

    for artifact in oc get infraenv qe2 -ojsonpath="{.status.bootArtifacts}" | jq ". | keys[]" | sed "s/\"//g"
    do curl -k oc get infraenv qe2 -ojsonpath="{.status.bootArtifacts.${artifact}}"` -o $artifact
  4. ipxeScript 工件代理 URL 添加到 libvirt.xml 中的 bootp 参数。
1.1.2.1.24. 升级 Red Hat Advanced Cluster Management 后无法删除 ClusterDeployment

如果您在 Red Hat Advanced Cluster Management 2.6 中使用已删除的 BareMetalAssets API,则在升级到 Red Hat Advanced Cluster Management 2.7 后无法删除 ClusterDeployment,因为 BareMetalAssets API 绑定到 ClusterDeployment

要临时解决这个问题,请在升级到 Red Hat Advanced Cluster Management 2.7 前运行以下命令来删除 finalizers

oc patch clusterdeployment <clusterdeployment-name> -p '{"metadata":{"finalizers":null}}' --type=merge
1.1.2.1.25. 使用中央基础架构管理服务在断开连接的环境中部署的集群可能无法安装

当使用中央基础架构管理服务在断开连接的环境中部署集群时,集群节点可能无法开始安装。

这是因为集群使用从 OpenShift Container Platform 版本 4.12.0 到 4.12.2 提供的 Red Hat Enterprise Linux CoreOS live ISO 镜像创建的发现 ISO 镜像。该镜像包含一个限制性 /etc/containers/policy.json 文件,该文件需要来自 registry.redhat.ioregistry.access.redhat.com 的镜像的签名。在断开连接的环境中,mirror 的镜像可能没有 mirror 的签名,这会导致发现集群节点的镜像拉取失败。Agent 镜像无法与集群节点连接,这会导致与辅助服务的通信失败。

要临时解决这个问题,将 ignition 覆盖应用到集群,将 /etc/containers/policy.json 文件设置为 unrestrictive。ignition 覆盖可以在 InfraEnv 自定义资源定义中设置。以下示例显示了带有覆盖的 InfraEnv 自定义资源定义:

apiVersion: agent-install.openshift.io/v1beta1
kind: InfraEnv
metadata:
  name: cluster
  namespace: cluster
spec:
  ignitionConfigOverride: '{"ignition":{"version":"3.2.0"},"storage":{"files":[{"path":"/etc/containers/policy.json","mode":420,"overwrite":true,"contents":{"source":"data:text/plain;charset=utf-8;base64,ewogICAgImRlZmF1bHQiOiBbCiAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJpbnNlY3VyZUFjY2VwdEFueXRoaW5nIgogICAgICAgIH0KICAgIF0sCiAgICAidHJhbnNwb3J0cyI6CiAgICAgICAgewogICAgICAgICAgICAiZG9ja2VyLWRhZW1vbiI6CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIiI6IFt7InR5cGUiOiJpbnNlY3VyZUFjY2VwdEFueXRoaW5nIn1dCiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQp9"}}]}}'

以下示例显示了创建的未限制文件:

{
    "default": [
        {
            "type": "insecureAcceptAnything"
        }
    ],
    "transports": {
        "docker-daemon": {
        "": [
        {
            "type": "insecureAcceptAnything"
        }
        ]
    }
    }
}

更改此设置后,集群可以安装。

1.1.2.1.26. 自定义入口域无法正确应用

您可以在安装受管集群时使用 ClusterDeployment 资源指定自定义 ingress 域,但更改仅在使用 SyncSet 资源安装后才会生效。因此,clusterdeployment.yaml 文件中的 spec 字段显示您指定的自定义入口域,但 status 仍然会显示默认域。

1.1.2.2. 托管 control plane
1.1.2.2.1. 控制台将托管集群显示为 Pending import

如果注解和 ManagedCluster 名称不匹配,控制台会将集群显示为 Pending import。集群不能被 multicluster engine operator 使用。如果没有注解,而 ManagedCluster 名称与 HostedCluster 资源的 Infra-ID 值不匹配时会出现相同的问题。"

1.1.2.2.2. 当将节点池添加到托管集群时,控制台可能会多次列出同一版本

当使用控制台向现有托管集群添加新节点池时,同一版本的 OpenShift Container Platform 可能会在选项列表中出现多次。您可以在列表中为您想要的版本选择任何实例。

1.1.2.2.3. ManagedClusterSet API 规格限制

使用 ManagedClusterSet API 时不支持 selectorType: LaberSelector 设置。支持 selectorType: ExclusiveClusterSetLabel 设置。

1.1.3. 勘误更新

对于多集群引擎 operator,勘误更新会在发布时自动应用。

重要:为了参考,勘误 链接和 GitHub 号可能会添加到内容中并在内部使用。用户可能不能使用访问的链接。

FIPS 注意:如果您没有在 spec.ingress.sslCiphers 中指定自己的密码,则 multiclusterhub-operator 会提供默认密码列表。对于 2.4,这个列表包括两个 未被 FIPS 批准的加密方式。如果您从 2.4.x 或更早版本升级并希望符合 FIPS 合规性,请从 multiclusterhub 资源中删除以下两个加密方式:ECD HE-ECDSA-CHACHA20-POLY1305ECDHE-RSA-CHACHA20-POLY1305

1.1.3.1. Errata 2.2.13
  • 为一个或多个产品容器镜像提供更新。
1.1.3.2. Errata 2.2.12
  • 为一个或多个产品容器镜像提供更新。
1.1.3.3. Errata 2.2.11
  • 为一个或多个产品容器镜像提供更新。
  • 修复了受管集群使用已弃用的 region 和 zone 标签的问题。(ACM-8844)
  • 修复了在 Topology 视图中错误显示节点区域和区域的问题。(ACM-9004)
1.1.3.4. Errata 2.2.10
  • 为一个或多个产品容器镜像提供更新。
1.1.3.5. Errata 2.2.9
  • 为一个或多个产品容器镜像和安全修复提供更新。
1.1.3.6. Errata 2.2.8
  • 为一个或多个产品容器镜像和安全修复提供更新。
1.1.3.7. Errata 2.2.7
  • 为一个或多个产品容器镜像和安全修复提供更新。
  • 修复了在将节点添加到不属于 Hive MachinePool 的受管集群时导致控制台显示不正确的扩展警报的问题。(ACM-5169)
1.1.3.8. Errata 2.2.6
  • 修复了当 secret 总文件大小太大时导致 klusterlet 代理失败的问题。(ACM-5873)
1.1.3.9. Errata 2.2.5
  • 为一个或多个产品容器镜像和安全修复提供更新。
1.1.3.10. Errata 2.2.4
  • 为一个或多个产品容器镜像和安全修复提供更新。
1.1.3.11. Errata 2.2.3
  • 为一个或多个产品容器镜像和安全修复提供更新。
1.1.3.12. Errata 2.2.2
  • 为一个或多个产品容器镜像和安全修复提供更新。
1.1.3.13. 勘误 2.2.1
  • 为一个或多个产品容器镜像和安全修复提供更新。

1.1.4. 弃用和删除

了解产品何时被弃用或从多集群引擎 operator 中删除。考虑推荐操作中的备选操作和详细信息,它们显示在当前版本的表中和之前两个版本。

1.1.4.1. API 弃用和删除

multicluster engine operator 遵循 API 的 Kubernetes 弃用指南。有关该策略的更多详细信息,请参阅 Kubernetes Deprecation Policy。多集群引擎 operator API 仅在以下时间表外已弃用或删除:

  • 所有 V1 API 已正式发布(GA),提供 12 个月或跨三个发行版本(以更长的时间为准)的支持。V1 API 没有被删除,但可能会在这个时间限制外被弃用。
  • 所有 beta API 通常在九个月或跨三个发行版本(以更长的时间为准)内可用。Beta API 不会在这个时间限制外被删除。
  • 所有 alpha API 都不是必需的,但如果对用户有好处,则可能会被列为已弃用或删除。
1.1.4.1.1. API 弃用

产品或类别

受影响的项

Version

推荐的操作

详情和链接

1.1.4.1.2. API 删除

产品或类别

受影响的项

Version

推荐的操作

详情和链接

1.1.4.2. 多集群引擎 Operator 弃用

弃用(deprecated)组件、功能或服务会被支持,但不推荐使用,并可能在以后的版本中被删除。考虑使用推荐操作中的相应的替代操作,详情在下表中提供:

产品或类别

受影响的项

Version

推荐的操作

详情和链接

1.1.4.3. 删除

一个删除(removed) 的项通常是在之前的版本中被弃用的功能,在该产品中不再可用。您必须将 alternatives 用于删除的功能。考虑使用推荐操作中的相应的替代操作,详情在下表中提供:

产品或类别

受影响的项

Version

推荐的操作

详情和链接

1.2. 关于多集群引擎 operator 的集群生命周期

multicluster engine for Kubernetes operator 是集群生命周期 Operator,它为 Red Hat OpenShift Container Platform 和 Red Hat Advanced Cluster Management hub 集群提供集群管理功能。如果安装了 Red Hat Advanced Cluster Management,则不需要安装 multicluster engine operator,因为它会被自动安装。

有关支持信息以及以下文档,请参阅 Kubernetes operator 2.2 的多集群引擎支持列表

要继续,请参阅与多集群引擎 operator 的集群生命周期中剩余的集群生命周期文档

1.2.1. 要求和建议

在安装 multicluster engine operator 前,请查看以下系统配置要求和设置:

1.2.1.1. 支持的浏览器和平台

请参阅 multicluster engine for Kubernetes operator 2.2 支持的浏览器和功能的重要信息。

1.2.1.2. 网络配置

重要: 可信 CA 捆绑包在 multicluster engine operator 命名空间中可用,但该增强需要更改您的网络。可信 CA 捆绑包 ConfigMap 使用 trusted-ca-bundle 的默认名称。您可以通过在名为 TRUSTED_CA_BUNDLE 的环境变量中提供 Operator 来更改此名称。如需更多信息,请参阅 Red Hat OpenShift Container Platform 的网络部分中的配置集群范围代理

:在受管集群中的注册代理工作代理不支持代理设置,因为它们通过建立 mTLS 连接与 hub 集群上的 apiserver 通信,该连接无法通过代理进行。

将您的网络设置配置为允许以下的连接:

1.2.1.2.1. multicluster engine operator 网络要求

有关 multicluster engine operator 集群网络要求,请查看下表:

方向连接端口(如果指定)

出站

置备的受管集群的 Kubernetes API 服务器

6443

出站和入站

受管集群上的 WorkManager 服务路由

443

入站

来自受管集群的 Kubernetes 集群的多集群引擎的 Kubernetes API 服务器

6443

1.2.2. 控制台概述

OpenShift Container Platform 控制台插件包括在 OpenShift Container Platform 4.10 web 控制台中,并可集成。要使用这个功能,必须启用控制台插件。Multicluster engine operator 在 InfrastructureCredentials 导航项中显示某些控制台功能。如果安装了 Red Hat Advanced Cluster Management,您会看到更多的控制台功能。

注: 对于启用插件的 OpenShift Container Platform 4.10,您可以从 OpenShift Container Platform 控制台下拉菜单中选择 All Clusters 来访问 OpenShift Container Platform 控制台中的 Red Hat Advanced Cluster Management。

  1. 要禁用插件,请确保处于 OpenShift Container Platform 控制台的 Administrator 视角中。
  2. 在导航中找到 Administration,再点 Cluster Settings,然后点 Configuration 选项卡。
  3. Configuration resources 列表中,点带有 operator.openshift.io API 组的 Console 资源,其中包含 web 控制台的集群范围配置。
  4. Console 插件 选项卡。mce 插件被列出。注: 如果安装了 Red Hat Advanced Cluster Management,它也会被列为 acm
  5. 从表中修改插件状态。几分钟后,会提示您输入刷新控制台。

1.2.3. multicluster engine operator 基于角色的访问控制

RBAC 在控制台和 API 一级进行验证。控制台中的操作可根据用户访问角色权限启用或禁用。查看以下部分以了解有关产品中特定生命周期的 RBAC 的更多信息:

1.2.3.1. 角色概述

有些产品资源是基于集群范围的,有些则是命名空间范围。您必须将集群角色绑定和命名空间角色绑定应用到用户,以使访问控制具有一致性。查看支持的以下角色定义表列表:

1.2.3.1.1. 角色定义表
角色定义

cluster-admin

这是 OpenShift Container Platform 的默认角色。具有集群范围内的绑定到 cluster-admin 角色的用户,是一个 OpenShift Container Platform 超级用户,其具有所有访问权限。

open-cluster-management:cluster-manager-admin

具有集群范围内的绑定到 open-cluster-management:cluster-manager-admin 角色的用户,是一个超级用户,其具有所有访问权限。此角色允许用户创建 ManagedCluster 资源。

open-cluster-management:admin:<managed_cluster_name>

具有集群范围内的绑定到 open-cluster-management:admin:<managed_cluster_name> 角色的用户,具有对名为 <managed_cluster_name>ManagedCluster 资源的管理员访问权限。当用户具有受管集群时,会自动创建此角色。

open-cluster-management:view:<managed_cluster_name>

具有集群范围内的绑定到 open-cluster-management:view:<managed_cluster_name> 角色的用户,可以访问名为 <managed_cluster_name>ManagedCluster 资源。

open-cluster-management:managedclusterset:admin:<managed_clusterset_name>

具有集群范围内的绑定到 open-cluster-management:managedclusterset:admin:<managed_clusterset_name> 角色的用户,具有对名为 <managed_clusterset_name>ManagedCluster 资源的管理员访问权限。用户还有对 managedcluster.cluster.open-cluster-management.ioclusterclaim.hive.openshift.ioclusterdeployment.hive.openshift.ioclusterpool.hive.openshift.io 资源的管理员访问权限,这些资源具有受管集群集标签: cluster.open-cluster-management.ioclusterset=<managed_clusterset_name>。使用集群集时会自动生成角色绑定。请参阅 创建 ManagedClusterSet 以了解如何管理该资源。

open-cluster-management:managedclusterset:view:<managed_clusterset_name>

具有集群范围内的绑定到 open-cluster-management:managedclusterset:view:<managed_clusterset_name> 角色的用户,可以访问名为 <managed_clusterset_name>' 的 ManagedCluster 资源。用户还有对 managedcluster.cluster.open-cluster-management.ioclusterclaim.hive.openshift.ioclusterdeployment.hive.openshift.ioclusterpool.hive.openshift.io 资源的查看访问权限,这些资源具有受管集群集标签: cluster.open-cluster-management.io,clusterset=<managed_clusterset_name>。有关如何管理受管集群设置资源的更多详细信息,请参阅创建 ManagedClusterSet

admin, edit, view

admin、edit 和 view 是 OpenShift Container Platform 的默认角色。具有命名空间范围绑定的用户可以访问特定命名空间中的 open-cluster-management 资源,而集群范围的绑定到同一角色可以访问整个集群范围的 open-cluster-management 资源。

重要

  • 任何用户都可以从 OpenShift Container Platform 创建项目,这为命名空间授予管理员角色权限。
  • 如果用户无法访问集群的角色,则无法看到集群名称。集群名称显示有以下符号: -

RBAC 在控制台和 API 一级进行验证。控制台中的操作可根据用户访问角色权限启用或禁用。查看以下部分以了解有关产品中特定生命周期的 RBAC 的更多信息。

1.2.3.2. 集群生命周期 RBAC

查看以下集群生命周期 RBAC 操作:

  • 为所有受管集群创建和管理集群角色绑定。例如,输入以下命令创建到集群角色 open-cluster-management:cluster-manager-admin 的集群角色绑定:

    oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:cluster-manager-admin --user=<username>

    这个角色是一个超级用户,可访问所有资源和操作。您可以创建集群范围的 managedcluster 资源、用于管理受管集群的资源的命名空间,以及使用此角色的命名空间中的资源。您可能需要添加需要角色关联的 ID 用户名,以避免权限错误。

  • 运行以下命令,为名为 cluster-name 的受管集群管理集群角色绑定:

    oc create clusterrolebinding (role-binding-name) --clusterrole=open-cluster-management:admin:<cluster-name> --user=<username>

    此角色对集群范围的 managedcluster 资源具有读写访问权限。这是必要的,因为 managedcluster 是一个集群范围的资源,而不是命名空间范围的资源。

    • 输入以下命令,创建到集群角色 admin 的命名空间角色绑定:

      oc create rolebinding <role-binding-name> -n <cluster-name> --clusterrole=admin --user=<username>

      此角色对受管集群命名空间中的资源具有读写访问权限。

  • open-cluster-management:view:<cluster-name> 集群角色创建一个集群角色绑定,以查看名为 cluster-name 的受管集群,输入以下命令:

    oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:view:<cluster-name> --user=<username>

    此角色具有对集群范围的 managedcluster 资源的读取访问权限。这是必要的,因为 managedcluster 是一个集群范围的资源。

  • 输入以下命令,创建到集群角色 view 的命名空间角色绑定:

    oc create rolebinding <role-binding-name> -n <cluster-name> --clusterrole=view --user=<username>

    此角色对受管集群命名空间中的资源具有只读访问权限。

  • 输入以下命令来查看您可以访问的受管集群列表:

    oc get managedclusters.clusterview.open-cluster-management.io

    此命令供没有集群管理员特权的管理员和用户使用。

  • 输入以下命令来查看您可以访问的受管集群集列表:

    oc get managedclustersets.clusterview.open-cluster-management.io

    此命令供没有集群管理员特权的管理员和用户使用。

1.2.3.2.1. 集群池 RBAC

查看以下集群池 RBAC 操作:

  • 作为集群管理员,通过创建受管集群集并使用集群池置备集群,并通过向组添加角色来授予管理员权限。请参见以下示例:

    • 使用以下命令为 server-foundation-clusterset 受管集群集授予 admin 权限:

      oc adm policy add-cluster-role-to-group open-cluster-management:clusterset-admin:server-foundation-clusterset
      server-foundation-team-admin
    • 使用以下命令为 server-foundation-clusterset 受管集群授予 view 权限:

      oc adm policy add-cluster-role-to-group open-cluster-management:clusterset-view:server-foundation-clusterset server-foundation-team-user
  • 为集群池 server-foundation-clusterpool 创建命名空间。查看以下示例以授予角色权限:

    • 运行以下命令,为 server-foundation-team-admin 授予 server-foundation-clusterpooladmin 权限:

      oc adm new-project server-foundation-clusterpool
      
      oc adm policy add-role-to-group admin server-foundation-team-admin --namespace  server-foundation-clusterpool
  • 作为团队管理员,在集群池命名空间中创建一个名为 ocp46-aws-clusterpool 的集群池,带有集群设置标签 cluster.open-cluster-management.io/clusterset=server-foundation-clusterset

    • server-foundation-webhook 检查集群池是否有集群设置标签,以及用户是否有权在集群集中创建集群池。
    • server-foundation-controllerserver-foundation-team-user 授予对 server-foundation-clusterpool 命名空间的 view 权限。
  • 创建集群池时,集群池会创建一个 clusterdeployment。继续阅读以获取更多详细信息:

    • server-foundation-controllerserver-foundation-team-admin 授予对 clusterdeployment 命名空间的 admin 权限。
    • server-foundation-controllerserver-foundation-team-user 授予对 clusterdeployment 名空间的 view 权限。

      :作为 team-adminteam-user,您有 clusterpoolclusterdeploymentclusterclaimadmin 权限

1.2.3.2.2. 集群生命周期的控制台和 API RBAC 表

查看以下集群生命周期控制台和 API RBAC 表:

表 1.1. 集群生命周期的控制台 RBAC 表
资源AdminEditView

Clusters

read、update、delete

-

读取

集群集

get、update、bind、join

未提及 edit 角色

get

受管集群

read、update、delete

未提及 edit 角色

get

AWS 供应商连接。

create、read、update 和 delete

-

读取

表 1.2. 集群生命周期的 API RBAC 表
APIAdminEditView

managedclusters.cluster.open-cluster-management.io

对于这个 API 您可以使用 mcl(单数形式)或 mcls(复数形式)。

创建、读取、更新、删除

读取、更新

读取

managedclusters.view.open-cluster-management.io

对于这个 API 您可以使用 mcv(单数形式)或 mcvs(复数形式)。

读取

读取

读取

managedclusters.register.open-cluster-management.io/accept

update

update

 

managedclusterset.cluster.open-cluster-management.io

对于这个 API 您可以使用 mclset(单数形式)或 mclsets(复数形式)。

创建、读取、更新、删除

读取、更新

读取

managedclustersets.view.open-cluster-management.io

读取

读取

读取

managedclustersetbinding.cluster.open-cluster-management.io

对于这个 API 您可以使用 mclsetbinding(单数形式)或 mclsetbindings(复数形式)。

创建、读取、更新、删除

读取、更新

读取

klusterletaddonconfigs.agent.open-cluster-management.io

创建、读取、更新、删除

读取、更新

读取

managedclusteractions.action.open-cluster-management.io

创建、读取、更新、删除

读取、更新

读取

managedclusterviews.view.open-cluster-management.io

创建、读取、更新、删除

读取、更新

读取

managedclusterinfos.internal.open-cluster-management.io

创建、读取、更新、删除

读取、更新

读取

manifestworks.work.open-cluster-management.io

创建、读取、更新、删除

读取、更新

读取

submarinerconfigs.submarineraddon.open-cluster-management.io

创建、读取、更新、删除

读取、更新

读取

placements.cluster.open-cluster-management.io

创建、读取、更新、删除

读取、更新

读取

1.2.3.2.3. 基于角色的凭证访问控制

对凭证的访问由 Kubernetes 控制。凭据作为 Kubernetes secret 存储和保护。以下权限适用于在 Red Hat Advanced Cluster Management for Kubernetes 中访问 secret:

  • 有权在命名空间中创建 secret 的用户可以创建凭证。
  • 有权读取命名空间中的 secret 的用户也可以查看凭证。
  • 具有 Kubernetes 集群角色 adminedit 的用户可以创建和编辑 secret。
  • 具有 Kubernetes 集群角色 view 的用户无法查看 secret,因为读取 secret 的内容可以访问服务帐户凭证。

1.3. 安装和升级多集群引擎 Operator

multicluster engine operator 是一个软件 operator,用于增强集群团队管理。multicluster engine operator 支持跨云和数据中心的 Red Hat OpenShift Container Platform 和 Kubernetes 集群生命周期管理。

请参阅以下文档:

1.3.1. 在线安装

multicluster engine operator 安装有 Operator Lifecycle Manager,用于管理安装、升级和删除包含 multicluster engine operator 的组件。

弃用: 不再支持 multicluster engine operator 的 2.3 和更早的版本。文档可能仍然可用,但没有任何可用的勘误或其他更新。

最佳实践: 升级到最新版本。

需要的访问权限:集群管理员

重要:

  • 对于 OpenShift Container Platform Dedicated 环境,必须具有 cluster-admin 权限。默认情况下,dedicated-admin 角色没有在 OpenShift Container Platform Dedicated 环境中创建命名空间所需的权限。
  • 默认情况下,多集群引擎 Operator 组件安装在 OpenShift Container Platform 集群的 worker 节点上,而无需额外的配置。您可以使用 OpenShift Container Platform OperatorHub Web 控制台界面或使用 OpenShift Container Platform CLI 将多集群引擎 Operator 安装到 worker 节点上。
  • 如果您使用基础架构节点配置了 OpenShift Container Platform 集群,您可以使用带有其他资源参数的 OpenShift Container Platform CLI 将多集群引擎 Operator 安装到这些基础架构节点上。不是所有多集群引擎 Operator 组件都支持基础架构节点,因此在基础架构节点上安装 multicluster engine operator 时仍需要一些 worker 节点。详情请参阅在基础架构节点上安装多集群引擎部分。
  • 如果您计划导入不是由 OpenShift Container Platform 或 Kubernetes 多集群引擎创建的 Kubernetes 集群,则需要配置镜像 pull secret。有关如何配置镜像 pull secret 和其他高级配置的详情,请参考本文档的高级配置部分中的选项。

1.3.1.1. 先决条件

在为 Kubernetes 安装多集群引擎前,请查看以下要求:

  • 您的 Red Hat OpenShift Container Platform 集群必须通过 OpenShift Container Platform 控制台访问 OperatorHub 目录中的 multicluster engine operator。
  • 您需要访问 catalog.redhat.com
  • OpenShift Container Platform 版本 4.8 或更高版本必须部署到您的环境中,且必须通过 OpenShift Container Platform CLI 登录。如需 OpenShift Container Platform,请参阅以下安装文档:

  • 您的 OpenShift Container Platform 命令行界面(CLI)被配置为运行 oc 命令。如需有关安装和配置 OpenShift Container Platform CLI 的信息,请参阅 CLI 入门
  • OpenShift Container Platform 权限必须允许创建命名空间。
  • 需要有一个互联网连接来访问 Operator 的依赖项。
  • 要在 OpenShift Container Platform Dedicated 环境中安装,请参阅以下内容:

    • 您必须已配置并运行了 OpenShift Container Platform Dedicated 环境。
    • 您必须在要安装引擎的 OpenShift Container Platform Dedicated 环境中具有 cluster-admin 授权。
  • 如果您计划使用 Red Hat OpenShift Container Platform 提供的 Assisted Installer 创建受管集群,请参阅 OpenShift Container Platform 文档中的使用 Assisted Installer 主题准备安装
1.3.1.2. 确认 OpenShift Container Platform 安装

您必须有一个受支持的 OpenShift Container Platform 版本,包括 registry 和存储服务,并可以正常工作。有关安装 OpenShift Container Platform 的更多信息,请参阅 OpenShift Container Platform 文档。

  1. 验证 multicluster engine operator 尚未安装在 OpenShift Container Platform 集群中。multicluster engine operator 只允许在每个 OpenShift Container Platform 集群中有一个安装。如果没有安装,请继续执行以下步骤。
  2. 要确保正确设置 OpenShift Container Platform 集群,请使用以下命令访问 OpenShift Container Platform Web 控制台:

    kubectl -n openshift-console get route console

    请参见以下示例输出:

    console console-openshift-console.apps.new-coral.purple-chesterfield.com
    console   https   reencrypt/Redirect     None
  3. 在浏览器中打开 URL 并检查结果。如果控制台 URL 显示 console-openshift-console.router.default.svc.cluster.local,当安装 OpenShift Container Platform 时把 openshift_master_default_subdomain 设置为这个值。请参阅以下 URL 示例 :https://console-openshift-console.apps.new-coral.purple-chesterfield.com

您可以继续安装 multicluster engine operator。

1.3.1.3. 从 OperatorHub Web 控制台界面安装

最佳实践: 从 OpenShift Container Platform 导航中的 Administrator 视图,安装 OpenShift Container Platform 提供的 OperatorHub Web 控制台界面。

  1. 选择 Operators > OperatorHub 来访问可用 operator 列表,选择 multicluster engine for Kubernetes operator。
  2. Install
  3. Operator 安装页面中,选择安装选项:

    • 命名空间:

      • 多集群引擎 operator 引擎必须安装在自己的命名空间或项目中。
      • 默认情况下,OperatorHub 控制台安装过程会创建一个名为 multicluster-engine 的命名空间。最佳实践: 继续使用 multicluster-engine 命名空间(如果可用)。
      • 如果已存在名为 multicluster-engine 的命名空间,请选择不同的命名空间。
    • Channel:选择与要安装的发行版本相对应的频道。当您选择频道时,它会安装指定的发行版本,并确定以后获得该发行版本中的勘误更新。
    • Approval strategy:批准策略指定了用户需要如何处理应用到您的频道或发行版本的更新。

      • 选择 Automatic (默认选择)以确保会自动应用该发行版本中的任何更新。
      • 选择 Manual 在有更新可用时接收通知。如果您对更新的应用有疑问,这可能是您的最佳实践。

    注: 要升级到下一个次版本,您必须返回到 OperatorHub 页面,并为更当前的发行版本选择一个新频道。

  4. 选择 Install 以应用您的更改并创建 Operator。
  5. 请参阅以下流程来创建 MultiClusterEngine 自定义资源。

    1. 在 OpenShift Container Platform 控制台导航中,选择 Installed Operators > multicluster engine for Kubernetes
    2. 选择 MultiCluster Engine 选项卡。
    3. 选择 Create MultiClusterEngine
    4. 更新 YAML 文件中的默认值。请参阅文档中的 MultiClusterEngine 高级配置部分中的选项。

      • 以下示例显示了您可以复制到编辑器中的默认模板:
      apiVersion: multicluster.openshift.io/v1
      kind: MultiClusterEngine
      metadata:
        name: multiclusterengine
      spec: {}
  6. 选择 Create 来初始化自定义资源。多集群引擎 operator 引擎最多可能需要 10 分钟才能构建并启动。

    创建 MultiClusterEngine 资源后,在 MultiCluster Engine 标签页中资源的状态为 Available

1.3.1.4. 通过 OpenShift Container Platform CLI 安装
  1. 创建一个 multicluster engine operator 引擎命名空间,其中包含 Operator 的要求。运行以下命令,其中 namespace 是 Kubernetes 引擎命名空间的多集群引擎的名称。在 OpenShift Container Platform 环境中,namespace 的值可能被称为 Project(项目)

    oc create namespace <namespace>
  2. 将项目命名空间切换到您创建的命名空间。使用在第 1 步中创建的 Kubernetes 引擎命名空间的多集群引擎名称替换 namespace

    oc project <namespace>
  3. 创建 YAML 文件来配置 OperatorGroup 资源。每个命名空间只能有一个 operator 组。将 default 替换为 operator 组的名称。将 namespace 替换为项目命名空间的名称。请参见以下示例:

    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: <default>
      namespace: <namespace>
    spec:
      targetNamespaces:
      - <namespace>
  4. 运行以下命令来创建 OperatorGroup 资源。将 operator-group 替换为您创建的 operator 组 YAML 文件的名称:

    oc apply -f <path-to-file>/<operator-group>.yaml
  5. 创建 YAML 文件来配置 OpenShift Container Platform 订阅。文件内容应类似以下示例:

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: multicluster-engine
    spec:
      sourceNamespace: openshift-marketplace
      source: redhat-operators
      channel: stable-2.1
      installPlanApproval: Automatic
      name: multicluster-engine

    注:要在基础架构节点上安装 Kubernetes 引擎的多集群引擎,请参阅 Operator Lifecycle Manager 订阅其他配置部分。

  6. 运行以下命令来创建 OpenShift Container Platform 订阅。使用您创建的订阅文件的名称替换 subscription

    oc apply -f <path-to-file>/<subscription>.yaml
  7. 创建 YAML 文件来配置 MultiClusterEngine 自定义资源。您的默认模板应类似以下示例:

    apiVersion: multicluster.openshift.io/v1
    kind: MultiClusterEngine
    metadata:
      name: multiclusterengine
    spec: {}

    注: 要在基础架构节点上安装多集群引擎 Operator,请参阅 MultiClusterEngine 自定义资源附加配置 部分:

  8. 运行以下命令来创建 MultiClusterEngine 自定义资源。将 custom-resource 替换为自定义资源文件的名称:

    oc apply -f <path-to-file>/<custom-resource>.yaml

    如果此步骤失败并显示以下错误,则仍然会创建并应用这些资源。创建资源后几分钟内再次运行命令:

    error: unable to recognize "./mce.yaml": no matches for kind "MultiClusterEngine" in version "operator.multicluster-engine.io/v1"
  9. 运行以下命令来获取自定义资源。在运行以下命令后,在 status.phase 字段中显示 MultiClusterEngine 自定义资源状态 Available 可能需要最多 10 分钟时间:

    oc get mce -o=jsonpath='{.items[0].status.phase}'

如果您要重新安装多集群引擎 operator 且 pod 没有启动,请参阅故障排除重新安装失败以了解解决这个问题的步骤

备注:

  • 具有 ClusterRoleBindingServiceAccount 会自动向 multicluster engine operator 以及有权访问安装 multicluster engine operator 的命名空间的用户凭证授予集群管理员特权。
1.3.1.5. 在基础架构节点上安装

OpenShift Container Platform 集群可以配置为包含用于运行批准的管理组件的基础架构节点。在基础架构节点上运行组件可避免为运行这些管理组件的节点分配 OpenShift Container Platform 订阅配额。

将基础架构节点添加到 OpenShift Container Platform 集群后,请按照 OpenShift Container Platform CLI 指令安装,并将以下配置添加到 Operator Lifecycle Manager Subscription 和 MultiClusterEngine 自定义资源中。

1.3.1.5.1. 将基础架构节点添加到 OpenShift Container Platform 集群

按照 OpenShift Container Platform 文档中的 创建基础架构机器集 中所述的步骤进行操作。基础架构节点配置有 Kubernetes 污点(taint)标签(label),以便防止非管理工作负载在它们上运行。

要与多集群引擎 operator 提供的基础架构节点启用兼容,请确保您的基础架构节点应用了以下 taintlabel

metadata:
  labels:
    node-role.kubernetes.io/infra: ""
spec:
  taints:
  - effect: NoSchedule
    key: node-role.kubernetes.io/infra
1.3.1.5.2. Operator Lifecycle Manager Subscription 额外配置

在应用 Operator Lifecycle Manager 订阅前,添加以下配置:

spec:
  config:
    nodeSelector:
      node-role.kubernetes.io/infra: ""
    tolerations:
    - key: node-role.kubernetes.io/infra
      effect: NoSchedule
      operator: Exists
1.3.1.5.3. MultiClusterEngine 自定义资源额外配置

在应用 MultiClusterEngine 自定义资源前添加以下附加配置:

spec:
  nodeSelector:
    node-role.kubernetes.io/infra: ""

1.3.2. 在断开连接的网络中安装

您可能需要在没有连接到互联网的 Red Hat OpenShift Container Platform 集群上安装 multicluster engine operator。在断开连接的引擎中安装的步骤需要一些与连接安装相同的步骤。

重要: 您必须在没有安装早于 2.5 的 Red Hat Advanced Cluster Management for Kubernetes 的集群上安装多集群引擎 Operator。multicluster engine operator 无法在 2.5 之前的版本上与 Red Hat Advanced Cluster Management for Kubernetes 共存,因为它们提供了一些相同的管理组件。建议您在之前没有安装 Red Hat Advanced Cluster Management 的集群上安装 multicluster engine Operator。如果您在版本 2.5.0 或更高版本中使用 Red Hat Advanced Cluster Management for Kubernetes,则 multicluster engine operator 已安装在集群中。

您必须下载软件包副本以在安装过程中访问它们,而不是在安装过程中直接从网络访问它们。

1.3.2.1. 先决条件

在安装 multicluster engine operator 前,您必须满足以下要求:

  • Red Hat OpenShift Container Platform 版本 4.8 或更高版本必须部署到您的环境中,且必须使用 CLI 登录。
  • 您需要访问 catalog.redhat.com

    注: 要管理裸机集群,您必须使用 OpenShift Container Platform 版本 4.8 或更高版本。

    请参阅 OpenShift Container Platform 版本 4.10OpenShift Container Platform 版本 4.8

  • 您的 Red Hat OpenShift Container Platform CLI 需要版本 4.8 或更高版本,并配置为运行 oc 命令。如需有关安装和配置 Red Hat OpenShift CLI 的信息,请参阅 CLI 入门
  • 您的 Red Hat OpenShift Container Platform 权限必须允许创建命名空间。
  • 必须有一 个有互联网连接的工作站来下载 operator 的依赖软件包。
1.3.2.2. 确认 OpenShift Container Platform 安装
  • 您必须有一个受支持的 OpenShift Container Platform 版本,包括 registry 和存储服务,在集群中安装并正常工作。如需有关 OpenShift Container Platform 版本 4.8 的信息,请参阅 OpenShift Container Platform 文档
  • 连接后,您可以使用以下命令访问 OpenShift Container Platform Web 控制台来确保正确设置 OpenShift Container Platform 集群:

    kubectl -n openshift-console get route console

    请参见以下示例输出:

    console console-openshift-console.apps.new-coral.purple-chesterfield.com
    console   https   reencrypt/Redirect     None

    本例中的控制台 URL 为 https:// console-openshift-console.apps.new-coral.purple-chesterfield.com。在浏览器中打开 URL 并检查结果。

    如果控制台 URL 显示 console-openshift-console.router.default.svc.cluster.local,当安装 OpenShift Container Platform 时把 openshift_master_default_subdomain 设置为这个值。

1.3.2.3. 在断开连接的环境中安装

重要: 您需要将所需的镜像下载到镜像 registry 中,以便在断开连接的环境中安装 Operator。如果没有下载,您可能会在部署过程中收到 ImagePullBackOff 错误。

按照以下步骤在断开连接的环境中安装多集群引擎 Operator:

  1. 创建镜像 registry。如果您还没有镜像 registry,请按照 Red Hat OpenShift Container Platform 文档的 Disconnected 安装镜像 主题中的步骤来创建。

    如果已有镜像 registry,可以配置和使用现有 registry。

  2. 注: 对于裸机,您需要在 install-config.yaml 文件中为断开连接的 registry 提供证书信息。要访问受保护的断开连接的 registry 中的镜像,您必须提供证书信息,以便多集群引擎 operator 可以访问 registry。

    1. 复制 registry 中的证书信息。
    2. 在编辑器中打开 install-config.yaml 文件。
    3. 找到 additionalTrustBundle: | 条目。
    4. additionalTrustBundle 行后添加证书信息。内容应类似以下示例:

      additionalTrustBundle: |
        -----BEGIN CERTIFICATE-----
        certificate_content
        -----END CERTIFICATE-----
      sshKey: >-
  3. 重要: 如果需要以下监管策略,则需要额外的镜像 registry:

    • Container Security Operator 策略:查找 registry.redhat.io/quay 源中的镜像。
    • Compliance Operator 策略:查找 registry.redhat.io/compliance 源中的镜像。
    • Gatekeeper Operator 策略:查找 registry.redhat.io/mvapich2 源中的镜像。

      参阅以下所有三个 operator 的镜像列表示例:

        - mirrors:
          - <your_registry>/rhacm2
          source: registry.redhat.io/rhacm2
        - mirrors:
          - <your_registry>/quay
          source: registry.redhat.io/quay
        - mirrors:
          - <your_registry>/compliance
          source: registry.redhat.io/compliance
  4. 保存 install-config.yaml 文件。
  5. 创建一个包含 ImageContentSourcePolicy 的 YAML 文件,其名称为 mce-policy.yaml注: 如果您在正在运行的集群中修改此操作,则会导致所有节点的滚动重启。

    apiVersion: operator.openshift.io/v1alpha1
    kind: ImageContentSourcePolicy
    metadata:
      name: mce-repo
    spec:
      repositoryDigestMirrors:
      - mirrors:
        - mirror.registry.com:5000/multicluster-engine
        source: registry.redhat.io/multicluster-engine
  6. 输入以下命令应用 ImageContentSourcePolicy 文件:

    oc apply -f mce-policy.yaml
  7. 启用断开连接的 Operator Lifecycle Manager Red Hat Operator 和 Community Operator。

    multicluster engine operator 包含在 Operator Lifecycle Manager Red Hat Operator 目录中。

  8. 为 Red Hat Operator 目录配置离线 Operator Lifecycle Manager。按照 Red Hat OpenShift Container Platform 文档中受限网络部分中使用 Operator Lifecycle Manager 中的步骤操作。
  9. 现在,您在断开连接的 Operator Lifecycle Manager 中已有镜像,从 Operator Lifecycle Manager 目录继续为 Kubernetes 安装 multicluster engine operator。

如需了解所需步骤,请参阅在线安装

1.3.3. 升级集群

创建要使用 multicluster engine operator 管理的 Red Hat OpenShift Container Platform 集群后,您可以使用 multicluster engine operator 控制台将这些集群升级到受管集群使用的版本频道中可用的最新次版本。

在连接的环境中,会自动识别更新,并带有为在控制台中需要升级的每个集群提供的通知。

备注:

要升级到一个主要版本,您必须确定是否满足升级到该版本的所有先决条件。在可以使用控制台升级集群前,您必须更新受管集群上的版本频道。

更新受管集群上的版本频道后,多集群引擎 operator 控制台会显示可用于升级的最新版本。

此升级方法只适用于处于 Ready 状态的 OpenShift Container Platform 受管集群。

重要: 您无法使用 multicluster engine operator 控制台在 Red Hat OpenShift Dedicated 上升级 Red Hat OpenShift Kubernetes Service 受管集群或 OpenShift Container Platform 受管集群。

要在连接的环境中升级集群,请完成以下步骤:

  1. 通过导航菜单进入 Infrastructure > Clusters。如果有可用的升级,会在 Distribution version 列中显示。
  2. 选择您要升级的 Ready 状态的集群。集群必须是 OpenShift Container Platform 集群才能使用控制台升级。
  3. 选择 Upgrade
  4. 选择每个集群的新版本。
  5. 选择 Upgrade

如果集群升级失败,Operator 通常会重试升级,停止并报告故障组件的状态。在某些情况下,升级过程会一直通过尝试完成此过程进行循环。不支持在失败的升级后将集群还原到以前的版本。如果您的集群升级失败,请联系红帽支持以寻求帮助。

1.3.3.1. 选择一个频道

您可以使用控制台为 OpenShift Container Platform 版本 4.6 或更高版本上的集群升级选择频道。选择频道后,会自动提醒两个勘误版本可用的集群升级(4.8.1 > 4.8.2 > 4.8.3 等)和发行版本(4.8 > 4.9 等)。

要为集群选择频道,请完成以下步骤:

  1. 在导航中,选择 Infrastructure > Clusters
  2. 选择要更改的集群名称来查看 Cluster details 页面。如果集群有一个不同的频道,则 Channel 字段中会显示一个编辑图标。
  3. 点编辑图标,以修改字段中的设置。
  4. New channel 字段中选择一个频道。

您可以在集群的 Cluster details 页中找到有关可用频道更新的提示信息。

1.3.3.2. 升级断开连接的集群

您可以使用带有多集群引擎 operator 的 Red Hat OpenShift Update Service 来在断开连接的环境中升级集群。

在某些情况下,安全性考虑会阻止集群直接连接到互联网。这使得您很难知道什么时候可以使用升级,以及如何处理这些升级。配置 OpenShift Update Service 可能会有所帮助。

OpenShift Update Service 是一个独立的操作对象,它监控受管集群在断开连接的环境中的可用版本,并使其可用于在断开连接的环境中升级集群。配置 OpenShift Update Service 后,它可以执行以下操作:

  • 监测何时有适用于断开连接的集群的升级。
  • 使用图形数据文件识别哪些更新需要被镜像到您的本地站点进行升级。
  • 使用控制台,通知您的集群有可用的升级。

以下主题解释了升级断开连接的集群的步骤:

1.3.3.2.1. 先决条件

您必须满足以下先决条件,才能使用 OpenShift Update Service 升级断开连接的集群:

  • 部署在 Red Hat OpenShift Container Platform 版本 4.6 或更高版本上运行的 hub 集群,并配置了受限 OLM。如需了解如何 配置受限 OLM 的详细信息,请参阅在受限网络中使用 Operator Lifecycle Manager

    注: 在配置受限 OLM 时记录目录源镜像。

  • 由 hub 集群管理的 OpenShift Container Platform 集群
  • 访问您可以镜像集群镜像的本地存储库的凭证。如需有关如何创建此存储库的更多信息,请参阅 断开连接的安装镜像

    注: 您升级的集群当前版本的镜像必须始终作为镜像的一个镜像可用。如果升级失败,集群会在试图升级时恢复到集群的版本。

1.3.3.2.2. 准备断开连接的镜像 registry

您必须镜像要升级到的镜像,以及您要从本地镜像 registry 升级到的当前镜像。完成以下步骤以镜像镜像:

  1. 创建一个包含类似以下示例内容的脚本文件:

    UPSTREAM_REGISTRY=quay.io
    PRODUCT_REPO=openshift-release-dev
    RELEASE_NAME=ocp-release
    OCP_RELEASE=4.12.2-x86_64
    LOCAL_REGISTRY=$(hostname):5000
    LOCAL_SECRET_JSON=/path/to/pull/secret 1
    
    oc adm -a ${LOCAL_SECRET_JSON} release mirror \
    --from=${UPSTREAM_REGISTRY}/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE} \
    --to=${LOCAL_REGISTRY}/ocp4 \
    --to-release-image=${LOCAL_REGISTRY}/ocp4/release:${OCP_RELEASE}
    1
    /path/to/pull/secret 替换为 OpenShift Container Platform pull secret 的路径。
  2. 运行该脚本来对镜像进行镜像、配置设置并将发行镜像与发行内容分开。

    在创建 ImageContentSourcePolicy 时,您可以使用此脚本的最后一行输出。

1.3.3.2.3. 为 OpenShift Update Service 部署 Operator

要在 OpenShift Container Platform 环境中为 OpenShift Update Service 部署 Operator,请完成以下步骤:

  1. 在 hub 集群中,访问 OpenShift Container Platform operator hub。
  2. 选择 Red Hat OpenShift Update Service Operator 来部署 Operator。如果需要,更新默认值。Operator 的部署会创建一个名为 openshift-cincinnati 的新项目。
  3. 等待 Operator 的安装完成。

    您可以通过在 OpenShift Container Platform 命令行中输入 oc get pods 命令来检查安装的状态。验证 Operator 是否处于 running 状态。

1.3.3.2.4. 构建图形数据 init 容器

OpenShift Update Service 使用图形数据信息来决定可用的升级。在连接的环境中,OpenShift Update Service 会直接从 Cincinnati 图形数据GitHub 仓库中提取可用于升级的图形数据信息。由于要配置断开连接的环境,所以必须使用 init 容器使图形数据在本地存储库中可用。完成以下步骤以创建图形数据 init 容器:

  1. 输入以下命令克隆 graph data Git 存储库:

    git clone https://github.com/openshift/cincinnati-graph-data
  2. 创建一个包含您的图形数据 init 信息的文件。您可以在 cincinnati-operator GitHub 仓库中找到此 Dockerfile 示例。该文件的内容在以下示例中显示:

    FROM registry.access.redhat.com/ubi8/ubi:8.1 1
    
    RUN curl -L -o cincinnati-graph-data.tar.gz https://github.com/openshift/cincinnati-graph-data/archive/master.tar.gz 2
    
    RUN mkdir -p /var/lib/cincinnati/graph-data/ 3
    
    CMD exec /bin/bash -c "tar xvzf cincinnati-graph-data.tar.gz -C /var/lib/
    cincinnati/graph-data/ --strip-components=1"  4

    在本例中:

    1
    FROM 值是 OpenShift Update Service 查找镜像的外部 registry。
    2 3
    RUN 命令创建目录并打包升级文件。
    4
    CMD 命令将软件包文件复制到本地库并提取文件进行升级。
  3. 运行以下命令来构建 图形数据 init 容器:

    podman build -f <path_to_Dockerfile> -t <${DISCONNECTED_REGISTRY}/cincinnati/cincinnati-graph-data-container>:latest 1 2
    podman push <${DISCONNECTED_REGISTRY}/cincinnati/cincinnati-graph-data-container><2>:latest --authfile=</path/to/pull_secret>.json 3
    1
    path_to_Dockerfile 替换为您在上一步中创建文件的路径。
    2
    ${DISCONNECTED_REGISTRY}/cincinnati/cincinnati-graph-data-container 替换为本地图形数据 init 容器的路径。
    3
    /path/to/pull_secret 替换为 pull secret 文件的路径。

    注: 如果没有安装 podman,您也可以将命令中的 podman 替换为 docker

1.3.3.2.5. 为已镜像的 registry 配置证书

如果您使用安全的外部容器 registry 来存储已镜像的 OpenShift Container Platform 发行镜像,OpenShift Update Service 需要访问此 registry 来构建升级图。完成以下步骤以配置您的 CA 证书以用于 OpenShift Update Service Pod:

  1. 查找位于 image.config.openshift.io 的 OpenShift Container Platform 外部 registry API。这是存储外部 registry CA 证书的位置。

    如需更多信息,请参阅 OpenShift Container Platform 文档中的 为镜像 registry 访问 配置额外的信任存储。

  2. openshift-config 命名空间中创建 ConfigMap。
  3. 在密钥 updateservice-registry 中添加您的 CA 证书。OpenShift Update Service 使用此设置来定位您的证书:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: trusted-ca
    data:
      updateservice-registry: |
        -----BEGIN CERTIFICATE-----
        ...
        -----END CERTIFICATE-----
  4. 编辑 image.config.openshift.io API 中的 cluster 资源,将 additionalTrustedCA 字段设置为您创建的 ConfigMap 的名称。

    oc patch image.config.openshift.io cluster -p '{"spec":{"additionalTrustedCA":{"name":"trusted-ca"}}}' --type merge

    trusted-ca 替换为新 ConfigMap 的路径。OpenShift Update Service Operator 会监视 image.config.openshift.io API 和您在 openshift-config 命名空间中创建的 ConfigMap 以获取更改,然后在 CA 证书已更改时重启部署。

1.3.3.2.6. 部署 OpenShift Update Service 实例

当在 hub 集群上完成 OpenShift Update Service 实例部署时,此实例就位于集群升级的镜像镜像位置,并可供断开连接的受管集群使用。完成以下步骤以部署实例:

  1. 如果您不想使用 Operator 的默认命名空间(openshift-cincinnati), 为 OpenShift Update Service 实例创建一个命名空间:

    1. 在 OpenShift Container Platform hub 集群控制台导航菜单中,选择 Administration > Namespaces
    2. Create Namespace
    3. 添加命名空间的名称以及您的命名空间的任何其他信息。
    4. 选择 Create 来创建命名空间。
  2. 在 OpenShift Container Platform 控制台的 Installed Operators 部分中,选择 Red Hat OpenShift Update Service Operator
  3. 在菜单中选择 Create Instance
  4. 粘贴 OpenShift Update Service 实例中的内容。您的 YAML 实例可能类似以下清单:

    apiVersion: cincinnati.openshift.io/v1beta2
    kind: Cincinnati
    metadata:
      name: openshift-update-service-instance
      namespace: openshift-cincinnati
    spec:
      registry: <registry_host_name>:<port> 1
      replicas: 1
      repository: ${LOCAL_REGISTRY}/ocp4/release
      graphDataImage: '<host_name>:<port>/cincinnati-graph-data-container'2
    1
    spec.registry 值替换为镜像的本地断开连接 registry 的路径。
    2
    spec.graphDataImage 值替换为图形数据 init 容器的路径。这与运行 podman push 命令来推送图形数据 init 容器时使用的值相同。
  5. 选择 Create 来创建实例。
  6. 在 hub 集群 CLI 中输入 oc get pods 命令来查看实例创建的状态。它可能需要一段时间,但当命令结果显示实例和运算符正在运行时,进程就会完成。
1.3.3.2.7. 覆盖默认 registry (可选)

注: 本节中的步骤只在将发行版本镜像到您的镜像 registry 时才应用。

OpenShift Container Platform 具有一个默认的镜像 registry 值,用于指定它找到升级软件包的位置。在断开连接的环境中,您可以创建一个覆盖,将该值替换为镜像发行镜像的本地镜像 registry 的路径。

完成以下步骤以覆盖默认 registry:

  1. 创建名为 mirror.yaml 的 YAML 文件,该文件类似于以下内容:

    apiVersion: operator.openshift.io/v1alpha1
    kind: ImageContentSourcePolicy
    metadata:
      name: <your-local-mirror-name>1
    spec:
      repositoryDigestMirrors:
        - mirrors:
            - <your-registry>2
          source: registry.redhat.io
    1
    your-local-mirror-name 替换为您的本地镜像的名称。
    2
    your-registry 替换为本地镜像存储库的路径。

    注: 您可以通过输入 oc adm release mirror 命令来查找到本地镜像的路径。

  2. 使用受管集群的命令行,运行以下命令覆盖默认 registry:

    oc apply -f mirror.yaml
1.3.3.2.8. 部署断开连接的目录源

在受管集群中,禁用所有默认目录源并创建一个新源。完成以下步骤,将默认位置从连接的位置改为断开连接的本地 registry:

  1. 创建名为 source.yaml 的 YAML 文件,该文件类似于以下内容:

    apiVersion: config.openshift.io/v1
    kind: OperatorHub
    metadata:
      name: cluster
    spec:
      disableAllDefaultSources: true
    
    ---
    apiVersion: operators.coreos.com/v1alpha1
    kind: CatalogSource
    metadata:
      name: my-operator-catalog
      namespace: openshift-marketplace
    spec:
      sourceType: grpc
      image: '<registry_host_name>:<port>/olm/redhat-operators:v1'1
      displayName: My Operator Catalog
      publisher: grpc
    1
    spec.image 值替换为本地受限目录源镜像的路径。
  2. 在受管集群的命令行中,运行以下命令来更改目录源:

    oc apply -f source.yaml
1.3.3.2.9. 更改受管集群参数

更新受管集群的 ClusterVersion 资源信息,以更改从中检索其升级的默认位置。

  1. 在受管集群中,输入以下命令确认 ClusterVersion 上游参数目前是默认的公共 OpenShift Update Service 操作对象:

    oc get clusterversion -o yaml

    返回的内容可能类似以下内容:

    apiVersion: v1
    items:
    - apiVersion: config.openshift.io/v1
      kind: ClusterVersion
      [..]
      spec:
        channel: stable-4.12
        upstream: https://api.openshift.com/api/upgrades_info/v1/graph
  2. 在 hub 集群中,输入以下命令识别 OpenShift Update Service 操作对象的路由 URL:

    oc get routes

    记录返回的值以获取后续步骤。

  3. 在受管集群的命令行中,输入以下命令编辑 ClusterVersion 资源:

    oc edit clusterversion version

    spec.channel 的值替换为您的新版本。

    spec.upstream 值替换为 hub 集群 OpenShift Update Service 操作对象的路径。您可以完成以下步骤来确定操作对象的路径:

    1. 在 hub 集群中运行以下命令:

      oc get routes -A
    2. 查找到 cincinnati 的路径。操作对象的路径是 HOST/PORT 字段中的值。
  4. 在受管集群的命令行中,输入以下命令确认 ClusterVersion 中的 upstream 参数已更新为本地 hub 集群 OpenShift Update Service URL:

    oc get clusterversion -o yaml

    结果类似以下内容:

    apiVersion: v1
    items:
    - apiVersion: config.openshift.io/v1
      kind: ClusterVersion
      [..]
      spec:
        channel: stable-4.12
        upstream: https://<hub-cincinnati-uri>/api/upgrades_info/v1/graph
1.3.3.2.10. 查看可用升级

Clusters 页面中,如果断开连接的 registry 中有升级,集群的 Distribution version 表示有一个可用的升级。您可以通过从 Actions 菜单中选择集群并选择 Upgrade cluster 来查看可用的升级。如果可选的升级路径可用,则会列出可用的升级。

注: 如果当前版本没有镜像到本地镜像存储库,则不会显示可用的升级版本。

1.3.3.2.11. 选择一个频道

您可以使用控制台为 OpenShift Container Platform 版本 4.6 或更高版本上的集群升级选择频道。这些版本必须在镜像 registry 上可用。完成选择频道中的步骤为您的升级指定频道。

1.3.3.2.12. 升级集群

配置断开连接的 registry 后,多集群引擎 operator 和 OpenShift Update Service 使用断开连接的 registry 来确定升级是否可用。如果没有可用的升级,请确保您有集群当前级别的发行镜像,且至少有一个后续级别的镜像位于本地存储库中。如果集群当前版本的发行镜像不可用,则没有可用的升级。

Clusters 页面中,如果断开连接的 registry 中有升级,集群的 Distribution version 表示有一个可用的升级。您可以通过点 Upgrade available 并选择升级的版本来升级镜像。受管集群已更新至所选版本。

如果集群升级失败,Operator 通常会重试升级,停止并报告故障组件的状态。在某些情况下,升级过程会一直通过尝试完成此过程进行循环。不支持在失败的升级后将集群还原到以前的版本。如果您的集群升级失败,请联系红帽支持以寻求帮助。

1.3.4. 高级配置

multicluster engine operator 使用部署所有所需组件的 operator 安装。通过在 MultiClusterEngine 自定义资源中添加一个或多个以下属性,可以在安装过程中或安装后进一步配置 multicluster engine operator:

1.3.4.1. local-cluster 启用

默认情况下,运行 multicluster engine operator 的集群管理其自身。要在没有集群管理其自身的情况下安装 multicluster engine operator,在 MultiClusterEngine 部分中的 spec.overrides.components 设置中指定以下值:

apiVersion: multicluster.openshift.io/v1
kind: MultiClusterEngine
metadata:
  name: multiclusterengine
spec:
  overrides:
    components:
    - name: local-cluster
      enabled: false
  • name 值将 hub 集群标识为 local-cluster
  • enabled 设置指定功能是启用还是禁用。当值为 true 时,hub 集群会自己管理。当值为 false 时,hub 集群不自己管理。

由自身管理的 hub 集群在集群列表中被指定为 local-cluster

1.3.4.2. 自定义镜像 pull secret

如果您计划导入不是由 OpenShift Container Platform 或 multicluster engine operator 创建的 Kubernetes 集群,请生成一个包含 OpenShift Container Platform pull secret 信息的 secret,以便从发布 registry 中访问授权内容。

OpenShift Container Platform 集群的 secret 要求由 Kubernetes 的 OpenShift Container Platform 和多集群引擎自动解决,因此如果您没有导入其他类型的 Kubernetes 集群,则不必创建 secret。

重要: 这些 secret 是特定于命名空间的,因此请确保处于用于引擎的命名空间中。

  1. 选择 Download pull secretcloud.redhat.com/openshift/install/pull-secret 下载 OpenShift Container Platform pull secret 文件。您的 OpenShift Container Platform pull secret 与您的 Red Hat Customer Portal ID 相关联,在所有 Kubernetes 供应商中都是相同的。
  2. 运行以下命令来创建 secret:

    oc create secret generic <secret> -n <namespace> --from-file=.dockerconfigjson=<path-to-pull-secret> --type=kubernetes.io/dockerconfigjson
    • secret 替换为您要创建的 secret 的名称。
    • namespace 替换为项目命名空间,因为 secret 是特定于命名空间的。
    • path-to-pull-secret 替换为您下载的 OpenShift Container Platform pull secret 的路径。

以下示例显示,如果使用自定义 pull secret,要使用的 spec.imagePullSecret 模板。将 secret 替换为 pull secret 的名称:

apiVersion: multicluster.openshift.io/v1
kind: MultiClusterEngine
metadata:
  name: multiclusterengine
spec:
  imagePullSecret: <secret>
1.3.4.3. 目标命名空间

可通过在 MultiClusterEngine 自定义资源中指定位置,在指定的命名空间中安装操作对象。此命名空间在 MultiClusterEngine 自定义资源的应用程序上创建。

重要: 如果没有指定目标命名空间,Operator 将安装到 multicluster-engine 命名空间,并在 MultiClusterEngine 自定义资源规格中设置它。

以下示例显示了可以用来指定目标命名空间的 spec.targetNamespace 模板。使用目标命名空间的名称替换 target注: target 目标命名空间不能是 default 命名空间:

apiVersion: multicluster.openshift.io/v1
kind: MultiClusterEngine
metadata:
  name: multiclusterengine
spec:
  targetNamespace: <target>
1.3.4.4. availabilityConfig

hub 集群有两个可用功能: HighBasic。默认情况下,hub 集群的可用性为 High,hub 集群组件副本数2。它提供了对故障转移功能的支持,但消耗的资源数量比可用性为 Basic副本数1) 的集群多。

以下示例显示了具有 Basic 可用性的 spec.availabilityConfig 模板:

apiVersion: multicluster.openshift.io/v1
kind: MultiClusterEngine
metadata:
  name: multiclusterengine
spec:
  availabilityConfig: "Basic"
1.3.4.5. nodeSelector

您可以在 MultiClusterEngine 中定义一组节点选择器,以安装到集群中的特定节点。以下示例显示了将 pod 分配给带有标签 node-role.kubernetes.io/infra 的节点的 spec.nodeSelector

spec:
  nodeSelector:
    node-role.kubernetes.io/infra: ""
1.3.4.6. 容限(tolerations)

您可以定义容限列表,以允许 MultiClusterEngine 容许在集群中定义的特定污点。以下示例显示了与 node-role.kubernetes.io/infra 污点匹配的 spec.tolerations

spec:
  tolerations:
  - key: node-role.kubernetes.io/infra
    effect: NoSchedule
    operator: Exists

默认情况下,以上 infra-node 容限在 pod 上设置,而不在配置中指定任何容限。在配置中自定义容限将替换此默认行为。

1.3.4.7. ManagedServiceAccount 附加组件(技术预览)

默认情况下,Managed-ServiceAccount 附加组件被禁用。启用该组件后,您可以在受管集群上创建或删除服务帐户。要在启用此附加组件的环境中安装,请在 spec.overridesMultiClusterEngine 规格中包括以下内容:

apiVersion: multicluster.openshift.io/v1
kind: MultiClusterEngine
metadata:
  name: multiclusterengine
spec:
  overrides:
    components:
    - name: managedserviceaccount-preview
      enabled: true

在创建 MultiClusterEngine 后,可以在命令行中编辑资源并将 managedserviceaccount-preview 组件设置为 enabled: true 来启用 Managed-ServiceAccount 插件。或者,您可以运行以下命令,将 <multiclusterengine-name> 替换为 MultiClusterEngine 资源的名称。

oc patch MultiClusterEngine <multiclusterengine-name> --type=json -p='[{"op": "add", "path": "/spec/overrides/components/-","value":{"name":"managedserviceaccount-preview","enabled":true}}]'
1.3.4.8. Hypershift 附加组件(技术预览)

默认情况下,Hypershift 附加组件被禁用。要在启用此附加组件的环境中安装,请在 spec.overridesMultiClusterEngine 值中包含以下内容:

apiVersion: multicluster.openshift.io/v1
kind: MultiClusterEngine
metadata:
  name: multiclusterengine
spec:
  overrides:
    components:
    - name: hypershift-preview
      enabled: true

在创建 MultiClusterEngine 后,可在命令行中编辑资源,将 hypershift-preview 组件设置为 enabled: true 来启用 Hypershift 附加组件。或者,您可以运行以下命令,将 <multiclusterengine-name> 替换为 MultiClusterEngine 资源的名称:

oc patch MultiClusterEngine <multiclusterengine-name> --type=json -p='[{"op": "add", "path": "/spec/overrides/components/-","value":{"name":"hypershift-preview","enabled":true}}]'

1.3.5. 卸装

在卸载 Kubernetes 的多集群引擎时,您会看到两个不同的流程级别: 删除自定义资源完成 Operator 卸载。完成卸载过程最多可能需要五分钟。

  • 删除自定义资源是最基本的卸载类型,它会删除 MultiClusterEngine 实例的自定义资源,但会保留其他所需的 operator 资源。如果您计划使用相同的设置和组件重新安装,这个卸载级别很有用。
  • 第二个级别是更完整的卸载,可删除大多数 Operator 组件,不包括自定义资源定义等组件。当您继续执行此步骤时,它会删除所有没有通过删除自定义资源而被删除的组件和订阅。在卸载后,您必须在重新安装自定义资源前重新安装 Operator。
1.3.5.1. 先决条件:分离启用的服务

在卸载 Kubernetes 引擎的多集群引擎前,您必须分离所有由该引擎管理的集群。为了避免错误,分离仍由引擎管理的所有集群,然后尝试再次卸载。

  • 如果附加了受管集群,您可能会看到以下信息。

    Cannot delete MultiClusterEngine resource because ManagedCluster resource(s) exist

    有关分离集群的更多信息,请参阅从管理部分删除集群,在 创建集群中选择与您的供应商相关的信息。

1.3.5.2. 使用命令删除资源
  1. 如果还没有运行 oc 命令,请确保 OpenShift Container Platform CLI 配置为运行 oc 命令。如需有关如何配置 oc 命令的更多信息,请参阅 OpenShift Container Platform 文档中的 OpenShift CLI 入门
  2. 输入以下命令来更改到您的项目命名空间。将 namespace 替换为项目命名空间的名称:

    oc project <namespace>
  3. 输入以下命令删除 MultiClusterEngine 自定义资源:

    oc delete multiclusterengine --all

    您可以输入以下命令来查看进度:

    oc get multiclusterengine -o yaml
  4. 输入以下命令删除在其中安装的命名空间中 multicluster-engine ClusterServiceVersion
❯ oc get csv
NAME                         DISPLAY                              VERSION   REPLACES   PHASE
multicluster-engine.v2.0.0   multicluster engine for Kubernetes   2.0.0                Succeeded

❯ oc delete clusterserviceversion multicluster-engine.v2.0.0
❯ oc delete sub multicluster-engine

此处显示的 CSV 版本可能会有所不同。

1.3.5.3. 使用控制台删除组件

当使用 Red Hat OpenShift Container Platform 控制台卸载时,需要删除 operator。使用控制台完成以下步骤进行卸载:

  1. 在 OpenShift Container Platform 控制台导航中,选择 Operators > Installed Operators > multicluster engine for Kubernetes.
  2. 删除 MultiClusterEngine 自定义资源。

    1. 选择 Multiclusterengine 标签页
    2. 选择 MultiClusterEngine 自定义资源的 Options 菜单。
    3. 选择 Delete MultiClusterEngine
  3. 根据以下部分中的步骤运行清理脚本。

    提示: 如果您计划为 Kubernetes 版本重新安装相同的多集群引擎,您可以跳过这个过程中的其余步骤并重新安装自定义资源。

  4. 进入 Installed Operators
  5. 选择 Options 菜单并选择 Uninstall operator 来删除 Kubernetes_ operator 的 _ multicluster 引擎。
1.3.5.4. 卸载故障排除

如果没有删除多集群引擎自定义资源,请通过运行清理脚本删除潜在的剩余工件。

  1. 将以下脚本复制到一个文件中:

    #!/bin/bash
    oc delete apiservice v1.admission.cluster.open-cluster-management.io v1.admission.work.open-cluster-management.io
    oc delete validatingwebhookconfiguration multiclusterengines.multicluster.openshift.io
    oc delete mce --all

https://access.redhat.com/documentation/zh-cn/openshift_container_platform/4.11/html/installing/disconnected-installation-mirroring

1.4. 管理凭证

在使用 multicluster engine operator 的云服务供应商上创建和管理 Red Hat OpenShift Container Platform 集群需要一个凭证。凭据存储云提供商的访问信息。每个提供程序帐户都需要自己的凭据,就像单个提供程序中的每个域一样。

您可以创建和管理集群凭证。凭据存储为 Kubernetes secret。secret 复制到受管集群的命名空间,以便受管集群的控制器可以访问 secret。更新凭证时,secret 的副本会在受管集群命名空间中自动更新。

注: 对现有受管集群,对 pull secret、SSH 密钥或基域的更改不会反映,因为它们已使用原始凭证置备。

需要的访问权限: Edit

1.4.1. 为 Amazon Web Services 创建凭证

您需要一个凭证才能使用多集群引擎 operator 控制台在 Amazon Web Services (AWS)上部署和管理 Red Hat OpenShift Container Platform 集群。

需要的访问权限: Edit

注: 必须在使用 multicluster engine operator 创建集群前完成此步骤。

1.4.1.1. 先决条件

创建凭证前必须满足以下先决条件:

  • 已部署多集群引擎 operator hub 集群
  • 可通过互联网访问 multicluster engine operator hub 集群,以便它在 Amazon Web Services (AWS)上创建 Kubernetes 集群
  • AWS 登录凭证,其中包括访问密钥 ID 和 secret 访问密钥。请参阅了解和获取您的安全凭证
  • 允许在 AWS 上安装集群的帐户权限。有关如何配置的说明,请参阅配置 AWS 帐户
1.4.1.2. 使用控制台管理凭证

要从 multicluster engine operator 控制台创建凭证,请完成控制台中的步骤。

从导航菜单开始。单击 Credentials 以从现有凭证选项中进行选择。提示: 为方便起见,同时为了提高安全性,创建一个命名空间,专门用于托管您的凭证。

您可以选择为您的凭证添加基本 DNS 域。如果您将基本 DNS 域添加到凭证中,则在使用此凭证创建集群时,会自动填充到正确的字段中。请参见以下步骤:

  1. 为您的 AWS 帐户添加 AWS 访问密钥 ID。登录 AWS 以查找您的 ID。
  2. 提供新 AWS Secret 访问密钥 的内容。
  3. 如果要启用代理,请输入代理信息:

    • HTTP 代理 URL:用作 HTTP 流量的代理的 URL。
    • HTTPS 代理 URL:用于 HTTPS 流量的安全代理 URL。如果没有提供值,则使用相同的值 HTTP Proxy URL,用于 HTTPHTTPS
    • 无代理域:应当绕过代理的以逗号分隔的域列表。使用一个句点 (.) 开始的域名,包含该域中的所有子域。添加星号 (*) 以绕过所有目的地的代理。
    • 其他信任捆绑包:代理 HTTPS 连接所需的一个或多个额外 CA 证书。
  4. 输入您的 Red Hat OpenShift pull secret。您可以从 Pull secret 下载 pull secret。
  5. 添加可让您连接到集群的 SSH 私钥SSH 公钥。您可以使用现有密钥对,或使用密钥生成程序创建新密钥对。

如需有关如何 生成密钥的更多信息,请参阅生成 SSH 私钥并将其添加到代理中

要创建使用此凭证的集群,完成 Creating a cluster on Amazon Web ServicesCreating a cluster on Amazon Web Services GovCloud 中的步骤。

您可以在控制台中编辑凭证。如果使用这个供应商连接创建集群,则来自 <cluster-namespace><cluster-name>-aws-creds> secret 将使用新凭证进行更新。

注:更新凭证不适用于集群池声明的集群。

当您不再管理使用凭证的集群时,请删除凭证来保护凭证中的信息。选择要批量删除的 Actions,或者选择您要删除的凭证旁边的选项菜单。

1.4.1.3. 使用 API 创建不透明的 secret

要使用 API 为 Amazon Web Services 创建不透明 secret,请在类似以下示例的 YAML preview 窗口中应用 YAML 内容:

kind: Secret
metadata:
    name: <managed-cluster-name>-aws-creds
    namespace: <managed-cluster-namespace>
type: Opaque
data:
    aws_access_key_id: $(echo -n "${AWS_KEY}" | base64 -w0)
    aws_secret_access_key: $(echo -n "${AWS_SECRET}" | base64 -w0)

备注:

  • Opaque secret 在控制台中是不可见的。
  • 不透明 secret 在您选择的受管集群命名空间中创建。Hive 使用 opaque secret 来置备集群。当使用 Red Hat Advanced Cluster Management 控制台置备集群时,您预先创建的凭证将复制到受管集群命名空间中,作为 opaque secret。

1.4.2. 为 Microsoft Azure 创建凭证

您需要一个凭证来使用多集群引擎 operator 控制台在 Microsoft Azure 或 Microsoft Azure Government 上创建和管理 Red Hat OpenShift Container Platform 集群。

需要的访问权限: Edit

注: 这个过程是使用多集群引擎 operator 创建集群的先决条件。

1.4.2.1. 先决条件

创建凭证前必须满足以下先决条件:

  • 已部署多集群引擎 operator hub 集群。
  • 可通过互联网访问 multicluster engine operator hub 集群,以便它在 Azure 上创建 Kubernetes 集群。
  • Azure 登录凭证,其中包括您的基域资源组和 Azure Service Principal JSON。请参阅 azure.microsoft.com
  • 允许在 Azure 上安装集群的帐户权限。如需更多信息,请参阅 如何配置云服务配置 Azure 帐户
1.4.2.2. 使用控制台管理凭证

要从 multicluster engine operator 控制台创建凭证,请完成控制台中的步骤。从导航菜单开始。单击 Credentials 以从现有凭证选项中进行选择。提示: 为方便起见,同时为了提高安全性,创建一个命名空间,专门用于托管您的凭证。

  1. 可选:为您的凭证添加基本 DNS 域。如果您将基本 DNS 域添加到凭证中,则在使用此凭证创建集群时,会自动填充到正确的字段中。
  2. 选择集群的环境是 AzurePublicCloud 还是 AzureUSrianCloud。Azure Government 环境的设置有所不同,以确保正确设置了此设置。
  3. 为您的 Azure 帐户添加 基本域资源组名称。此条目是您使用 Azure 帐户创建的资源名称。您可以在 Azure 界面中选择 Home > DNS Zones 来查找您的基域资源组名称。请参阅使用 Azure CLI 创建 Azure 服务主体,以查找您的基域资源组名称。
  4. 为您的 客户端 ID 提供内容。当您使用以下命令创建服务主体时,这个值作为 appId 属性被生成:

    az ad sp create-for-rbac --role Contributor --name <service_principal> --scopes <subscription_path>

    service_principal 替换为您的服务主体名。

  5. 添加您的 客户端 Secret。当您使用以下命令创建服务主体时,这个值作为 password 属性被生成:

    az ad sp create-for-rbac --role Contributor --name <service_principal> --scopes <subscription_path>

    service_principal 替换为您的服务主体名。如需了解更多详细信息 ,请参阅使用 Azure CLI 创建 Azure 服务主体

  6. 添加您的 订阅 ID。这个值是以下命令输出中的 id 属性:

    az account show
  7. 添加您的租户 ID。这个值是以下命令输出中的 tenantId 属性:

    az account show
  8. 如果要启用代理,请输入代理信息:

    • HTTP 代理 URL:用作 HTTP 流量的代理的 URL。
    • HTTPS 代理 URL:用于 HTTPS 流量的安全代理 URL。如果没有提供值,则使用相同的值 HTTP Proxy URL,用于 HTTPHTTPS
    • 无代理域:应当绕过代理的以逗号分隔的域列表。使用一个句点 (.) 开始的域名,包含该域中的所有子域。添加星号 (*) 以绕过所有目的地的代理。
    • 其他信任捆绑包:代理 HTTPS 连接所需的一个或多个额外 CA 证书。
  9. 输入您的 Red Hat OpenShift pull secret。您可以从 Pull secret 下载 pull secret。
  10. 添加用于连接到集群的 SSH 私钥SSH 公钥。您可以使用现有密钥对,或使用密钥生成程序创建新密钥对。如需有关如何 生成密钥的更多信息,请参阅生成 SSH 私钥并将其添加到代理中

要创建使用此凭证的集群,您可以完成在 Microsoft Azure 上创建集群 中的步骤。

您可以在控制台中编辑凭证。

当您不再管理使用凭证的集群时,请删除凭证来保护凭证中的信息。选择要批量删除的 Actions,或者选择您要删除的凭证旁边的选项菜单。

1.4.2.3. 使用 API 创建不透明的 secret

要使用 API 而不是控制台为 Microsoft Azure 创建不透明 secret,请在类似以下示例的 YAML preview 窗口中应用 YAML 内容:

kind: Secret
metadata:
    name: <managed-cluster-name>-azure-creds
    namespace: <managed-cluster-namespace>
type: Opaque
data:
    baseDomainResourceGroupName: $(echo -n "${azure_resource_group_name}" | base64 -w0)
    osServicePrincipal.json: $(base64 -w0 "${AZURE_CRED_JSON}")

备注:

  • Opaque secret 在控制台中是不可见的。
  • 不透明 secret 在您选择的受管集群命名空间中创建。Hive 使用 opaque secret 来置备集群。当使用 Red Hat Advanced Cluster Management 控制台置备集群时,您预先创建的凭证将复制到受管集群命名空间中,作为 opaque secret。

1.4.3. 为 Google Cloud Platform 创建凭证

您需要一个凭证来使用 multicluster engine operator 控制台在 Google Cloud Platform (GCP)上创建和管理 Red Hat OpenShift Container Platform 集群。

需要的访问权限: Edit

注: 这个过程是使用多集群引擎 operator 创建集群的先决条件。

1.4.3.1. 先决条件

创建凭证前必须满足以下先决条件:

  • 已部署多集群引擎 operator hub 集群
  • 可通过互联网访问 multicluster engine operator hub 集群,以便它在 GCP 上创建 Kubernetes 集群
  • GCP 登录凭证,其中包括用户 Google Cloud Platform 项目 ID 和 Google Cloud Platform 服务帐户 JSON 密钥。请参阅创建和管理项目
  • 允许在 GCP 上安装集群的帐户权限。有关如何配置帐户的说明 ,请参阅配置 GCP 项目
1.4.3.2. 使用控制台管理凭证

要从 multicluster engine operator 控制台创建凭证,请完成控制台中的步骤。

从导航菜单开始。单击 Credentials 以从现有凭证选项中进行选择。提示: 为方便和安全起见,创建一个命名空间,专门用于托管您的凭证。

您可以选择为您的凭证添加基本 DNS 域。如果您将基本 DNS 域添加到凭证中,则在使用此凭证创建集群时,会自动填充到正确的字段中。请参见以下步骤:

  1. 为您的 GCP 帐户添加 Google Cloud Platform 项目 ID。登录到 GCP 以检索您的设置。
  2. 添加 Google Cloud Platform 服务帐户 JSON 密钥。请参阅(https://cloud.google.com/iam/docs/creating-managing-service-accounts)创建服务帐户 JSON 密钥。按照 GCP 控制台的步骤进行操作。
  3. 提供您的新 Google Cloud Platform 服务帐户 JSON 密钥 的内容。
  4. 如果要启用代理,请输入代理信息:

    • HTTP 代理 URL:用作 HTTP 流量的代理的 URL。
    • HTTPS 代理 URL:用于 HTTPS 流量的安全代理 URL。如果没有提供值,则使用相同的值 HTTP Proxy URL,用于 HTTPHTTPS
    • 无代理域:应当绕过代理的以逗号分隔的域列表。使用一个句点 (.) 开始的域名,包含该域中的所有子域。添加星号 (*) 以绕过所有目的地的代理。
    • 其他信任捆绑包:代理 HTTPS 连接所需的一个或多个额外 CA 证书。
  5. 输入您的 Red Hat OpenShift pull secret。您可以从 Pull secret 下载 pull secret。
  6. 添加 SSH 私钥SSH 公钥以便您访问集群。您可以使用现有密钥对,或使用密钥生成程序创建新密钥对。

如需有关如何 生成密钥的更多信息,请参阅生成 SSH 私钥并将其添加到代理中

要在创建集群时使用此连接,您可以完成在 Google Cloud Platform 上创建集群中的步骤。

您可以在控制台中编辑凭证。

当您不再管理使用凭证的集群时,请删除凭证来保护凭证中的信息。选择要批量删除的 Actions,或者选择您要删除的凭证旁边的选项菜单。

1.4.3.3. 使用 API 创建不透明的 secret

要使用 API 而不是控制台为 Google Cloud Platform 创建不透明 secret,请在类似以下示例的 YAML preview 窗口中应用 YAML 内容:

kind: Secret
metadata:
    name: <managed-cluster-name>-gcp-creds
    namespace: <managed-cluster-namespace>
type: Opaque
data:
    osServiceAccount.json: $(base64 -w0 "${GCP_CRED_JSON}")

备注:

  • Opaque secret 在控制台中是不可见的。
  • 不透明 secret 在您选择的受管集群命名空间中创建。Hive 使用 opaque secret 来置备集群。当使用 Red Hat Advanced Cluster Management 控制台置备集群时,您预先创建的凭证将复制到受管集群命名空间中,作为 opaque secret。

1.4.4. 为 VMware vSphere 创建凭证

您需要一个凭证才能使用多集群引擎 operator 控制台在 VMware vSphere 上部署和管理 Red Hat OpenShift Container Platform 集群。注:仅支持 OpenShift Container Platform 版本 4.5.x 及更新的版本。

需要的访问权限: Edit

注: 必须在使用 multicluster engine operator 创建集群前完成此步骤。

1.4.4.1. 先决条件

创建凭证前必须满足以下先决条件:

  • 在 OpenShift Container Platform 版本 4.6 或更高版本上部署了 hub 集群。
  • hub 集群的互联网访问,以便它在 VMware vSphere 上创建 Kubernetes 集群。
  • 使用安装程序置备的基础架构时为 OpenShift Container Platform 配置了 VMware vSphere 登录凭证和 vCenter 要求。请参阅使用自定义在 vSphere 上安装集群。这些凭证包括以下信息:

    • vCenter 帐户权限。
    • 集群资源。
    • DHCP 可用。
    • ESXi 主机的时间已同步(例如: NTP)。
1.4.4.2. 使用控制台管理凭证

要从 multicluster engine operator 控制台创建凭证,请完成控制台中的步骤。

从导航菜单开始。单击 Credentials 以从现有凭证选项中进行选择。提示: 为方便起见,同时为了提高安全性,创建一个命名空间,专门用于托管您的凭证。

您可以选择为您的凭证添加基本 DNS 域。如果您将基本 DNS 域添加到凭证中,则在使用此凭证创建集群时,会自动填充到正确的字段中。请参见以下步骤:

  1. 添加 VMware vCenter 服务器完全限定主机名或 IP 地址。该值必须在 vCenter 服务器 root CA 证书中定义。如果可能,请使用完全限定主机名。
  2. 添加 VMware vCenter 用户名
  3. 添加 VMware vCenter 密码
  4. 添加 VMware vCenter root CA 证书

    1. 您可以使用 VMware vCenter 服务器的证书在 download.zip 软件包中下载证书,地址为 https://<vCenter_address>/certs/download.zip。将 vCenter_address 替换为 vCenter 服务器的地址。
    2. 解包 download.zip
    3. 使用 certs/<platform> 目录中有 .0 扩展名的证书。提示: 您可以使用 ls certs/<platform> 命令列出平台的所有可用证书。

      <platform> 替换为您的平台的缩写:linmacwin.

      例如: certs/lin/3a343545.0

      最佳实践: 使用以下命令将带有 .0 扩展的多个证书链接到一起:

      cat certs/lin/*.0 > ca.crt
  5. 添加 VMware vSphere 集群名称
  6. 添加 VMware vSphere 数据中心
  7. 添加 VMware vSphere 默认数据存储
  8. 添加 VMware vSphere 磁盘类型
  9. 添加 VMware vSphere 文件夹
  10. 添加 VMware vSphere 资源池
  11. 只用于断开连接的安装:使用所需信息完成 Configuration for disconnected installation 子字段:

    • 镜像内容源:此值包含断开连接的 registry 路径。该路径包含所有用于断开连接的安装镜像的主机名、端口和库路径。示例: repository.com:5000/openshift/ocp-release

      该路径会在 install-config.yaml 中创建一个到 Red Hat OpenShift Container Platform 发行镜像的镜像内容源策略映射。例如,repository.com:5000 生成此 imageContentSource 内容:

      - mirrors:
        - registry.example.com:5000/ocp4
        source: quay.io/openshift-release-dev/ocp-release-nightly
      - mirrors:
        - registry.example.com:5000/ocp4
        source: quay.io/openshift-release-dev/ocp-release
      - mirrors:
        - registry.example.com:5000/ocp4
        source: quay.io/openshift-release-dev/ocp-v4.0-art-dev
    • Additional trust bundle:此值提供访问镜像 registry 所需的证书文件内容。

      注: 如果您要从断开连接的环境中的一个 hub 部署受管集群,并希望在安装后自动导入它们,使用 YAML 编辑器将镜像内容源策略添加到 install-config.yaml 文件中。以下示例中显示了一个示例:

      - mirrors:
        - registry.example.com:5000/rhacm2
        source: registry.redhat.io/rhacm2
  12. 如果要启用代理,请输入代理信息:

    • HTTP 代理 URL:用作 HTTP 流量的代理的 URL。
    • HTTPS 代理 URL:用于 HTTPS 流量的安全代理 URL。如果没有提供值,则使用相同的值 HTTP Proxy URL,用于 HTTPHTTPS
    • 无代理域:应当绕过代理的以逗号分隔的域列表。使用一个句点 (.) 开始的域名,包含该域中的所有子域。添加星号 (*) 以绕过所有目的地的代理。
    • 其他信任捆绑包:代理 HTTPS 连接所需的一个或多个额外 CA 证书。
  13. 输入您的 Red Hat OpenShift pull secret。您可以从 Pull secret 下载 pull secret。
  14. 添加可让您连接到集群的 SSH 私钥SSH 公钥

    您可以使用现有密钥对,或使用密钥生成程序创建新密钥对。如需更多信息,请参阅为集群节点 SSH 访问生成密钥对

要创建使用此凭证的集群,您可以完成在 VMware vSphere 上创建集群 中的步骤。

您可以在控制台中编辑凭证。

当您不再管理使用凭证的集群时,请删除凭证来保护凭证中的信息。选择要批量删除的 Actions,或者选择您要删除的凭证旁边的选项菜单。

1.4.4.3. 使用 API 创建不透明的 secret

要使用 API 而不是控制台为 VMware vSphere 创建不透明 secret,请在类似以下示例的 YAML preview 窗口中应用 YAML 内容:

kind: Secret
metadata:
    name: <managed-cluster-name>-vsphere-creds
    namespace: <managed-cluster-namespace>
type: Opaque
data:
    username: $(echo -n "${VMW_USERNAME}" | base64 -w0)
    password.json: $(base64 -w0 "${VMW_PASSWORD}")

备注:

  • Opaque secret 在控制台中是不可见的。
  • 不透明 secret 在您选择的受管集群命名空间中创建。Hive 使用 opaque secret 来置备集群。当使用 Red Hat Advanced Cluster Management 控制台置备集群时,您预先创建的凭证将复制到受管集群命名空间中,作为 opaque secret。

1.4.5. 为 Red Hat OpenStack 创建凭证

您需要一个凭证才能使用多集群引擎 operator 控制台在 Red Hat OpenStack Platform 上部署和管理 Red Hat OpenShift Container Platform 集群。注:仅支持 OpenShift Container Platform 版本 4.5.x 及更新的版本。

注: 必须在使用 multicluster engine operator 创建集群前完成此步骤。

1.4.5.1. 先决条件

创建凭证前必须满足以下先决条件:

  • 在 OpenShift Container Platform 版本 4.6 或更高版本上部署了 hub 集群。
  • 可通过互联网访问 hub 集群,以便它在 Red Hat OpenStack Platform 上创建 Kubernetes 集群。
  • 使用安装程序置备的基础架构时,为 OpenShift Container Platform 配置 Red Hat OpenStack Platform 登录凭证和 Red Hat OpenStack Platform 要求。请参阅使用自定义配置在 OpenStack 上安装集群
  • 下载或创建 clouds.yaml 文件来访问 CloudStack API。在 clouds.yaml 文件中:

    • 确定要使用的云身份验证部分名称。
    • username 行后马上添加一个 password 行。
1.4.5.2. 使用控制台管理凭证

要从 multicluster engine operator 控制台创建凭证,请完成控制台中的步骤。

从导航菜单开始。单击 Credentials 以从现有凭证选项中进行选择。提示: 为方便起见,同时为了提高安全性,创建一个命名空间,专门用于托管您的凭证。

  1. 添加 Red Hat OpenStack Platform cloud.yaml 文件内容。clouds.yaml 文件的内容(包括密码)提供了连接到 Red Hat OpenStack Platform 服务器所需的信息。文件内容必须包含密码,您可以在 用户名 后马上添加到新行中。
  2. 对于使用内部证书颁发机构的配置,请修改 clouds.yaml 文件来引用 Hive 部署器 pod 中证书捆绑包的最终位置。Hive 将证书捆绑包 secret 挂载到部署器 pod 中的 /etc/openstack-ca 中。该目录中的文件对应于创建集群时提供的 secret 中的键。

    假设 secret 中使用了密钥 ca.crt,将 cacert 参数添加到 clouds.yaml 文件中,如下例所示:

    clouds:
      openstack:
        auth:
          auth_url: https://openstack.example.local:13000
          username: "svc-openshift"
          project_id: aa0owet0wfwerj
          user_domain_name: "idm"
          password: REDACTED
          region_name: "regionOne"
          interface: "public"
          identity_api_version: 3
          cacert: /etc/openstack-ca/ca.crt
  3. 添加您的 Red Hat OpenStack Platform 名称。此条目是在 clouds.yaml 的 cloud 部分中指定的名称,用于建立与 Red Hat OpenStack Platform 服务器的通信。
  4. 您可以选择为您的凭证添加基本 DNS 域。如果您将基本 DNS 域添加到凭证中,则在使用此凭证创建集群时,会自动填充到正确的字段中。
  5. 只用于断开连接的安装:使用所需信息完成 Configuration for disconnected installation 子字段:

    • Cluster OS image:此值包含用于 Red Hat OpenShift Container Platform 集群机器的镜像的 URL。
    • 镜像内容源:此值包含断开连接的 registry 路径。该路径包含所有用于断开连接的安装镜像的主机名、端口和库路径。示例: repository.com:5000/openshift/ocp-release

      该路径会在 install-config.yaml 中创建一个到 Red Hat OpenShift Container Platform 发行镜像的镜像内容源策略映射。例如,repository.com:5000 生成此 imageContentSource 内容:

      - mirrors:
        - registry.example.com:5000/ocp4
        source: quay.io/openshift-release-dev/ocp-release-nightly
      - mirrors:
        - registry.example.com:5000/ocp4
        source: quay.io/openshift-release-dev/ocp-release
      - mirrors:
        - registry.example.com:5000/ocp4
        source: quay.io/openshift-release-dev/ocp-v4.0-art-dev
    • Additional trust bundle:此值提供访问镜像 registry 所需的证书文件内容。

      注: 如果您要从断开连接的环境中的一个 hub 部署受管集群,并希望在安装后自动导入它们,使用 YAML 编辑器将镜像内容源策略添加到 install-config.yaml 文件中。以下示例中显示了一个示例:

      - mirrors:
        - registry.example.com:5000/rhacm2
        source: registry.redhat.io/rhacm2
  6. 如果要启用代理,请输入代理信息:

    • HTTP 代理 URL:用作 HTTP 流量的代理的 URL。
    • HTTPS 代理 URL:用于 HTTPS 流量的安全代理 URL。如果没有提供值,则使用相同的值 HTTP Proxy URL,用于 HTTPHTTPS
    • 无代理域:应当绕过代理的以逗号分隔的域列表。使用一个句点 (.) 开始的域名,包含该域中的所有子域。添加星号 (*) 以绕过所有目的地的代理。
    • 其他信任捆绑包:代理 HTTPS 连接所需的一个或多个额外 CA 证书。
  7. 输入 Red Hat OpenShift Pull Secret。您可以从 Pull secret 下载 pull secret。
  8. 添加可让您连接到集群的 SSH 私钥和 SSH 公钥。您可以使用现有密钥对,或使用密钥生成程序创建新密钥对。如需更多信息,请参阅为集群节点 SSH 访问生成密钥对
  9. Create
  10. 查看新凭据信息,然后单击 Add。添加凭证时,会将其添加到凭证列表中。

要创建使用此凭证的集群,您可以完成在 Red Hat OpenStack Platform 上创建集群 中的步骤。

您可以在控制台中编辑凭证。

当您不再管理使用凭证的集群时,请删除凭证来保护凭证中的信息。选择要批量删除的 Actions,或者选择您要删除的凭证旁边的选项菜单。

1.4.5.3. 使用 API 创建不透明的 secret

要使用 API 而不是控制台为 Red Hat OpenStack Platform 创建不透明 secret,请在类似以下示例的 YAML preview 窗口中应用 YAML 内容:

kind: Secret
metadata:
    name: <managed-cluster-name>-osp-creds
    namespace: <managed-cluster-namespace>
type: Opaque
data:
    clouds.yaml: $(base64 -w0 "${OSP_CRED_YAML}") cloud: $(echo -n "openstack" | base64 -w0)

备注:

  • Opaque secret 在控制台中是不可见的。
  • 不透明 secret 在您选择的受管集群命名空间中创建。Hive 使用 opaque secret 来置备集群。当使用 Red Hat Advanced Cluster Management 控制台置备集群时,您预先创建的凭证将复制到受管集群命名空间中,作为 opaque secret。

1.4.6. 为 Red Hat Virtualization 创建凭证

您需要一个凭证才能使用多集群引擎 operator 控制台在 Red Hat Virtualization 上部署和管理 Red Hat OpenShift Container Platform 集群。

注: 必须在使用 multicluster engine operator 创建集群前完成此步骤。

1.4.6.1. 先决条件

创建凭证前必须满足以下先决条件:

  • 在 OpenShift Container Platform 版本 4.7 或更高版本上部署了 hub 集群。
  • 可通过互联网访问 hub 集群,以便它在 Red Hat Virtualization 上创建 Kubernetes 集群。
  • 配置 Red Hat Virtualization 环境的 Red Hat Virtualization 登录凭证。请参阅 Red Hat Virtualization 文档中的安装指南。以下列表显示所需信息:

    • oVirt URL
    • oVirt 完全限定域名 (FQDN)
    • oVirt 用户名
    • oVirt 密码
    • oVirt CA/证书
  • 可选:代理信息(如果启用了代理)。
  • Red Hat OpenShift Container Platform pull secret 信息。您可以从 Pull secret 下载 pull secret。
  • 用于传输最终集群的 SSH 私钥和公钥。
  • 允许在 oVirt 上安装集群的帐户权限。
1.4.6.2. 使用控制台管理凭证

要从 multicluster engine operator 控制台创建凭证,请完成控制台中的步骤。

从导航菜单开始。单击 Credentials 以从现有凭证选项中进行选择。提示: 为方便起见,同时为了提高安全性,创建一个命名空间,专门用于托管您的凭证。

  1. 为新凭证添加基本信息。当使用此凭证创建集群时,您可以选择添加基本 DNS 域,该域会在正确的字段中自动填充。如果您没有将其添加到凭证中,您可以在创建集群时添加它。
  2. 为 Red Hat Virtualization 环境添加所需信息。
  3. 如果要启用代理,请输入代理信息:

    • HTTP Proxy URL:应该用作 HTTP 流量的代理的 URL。
    • HTTPS Proxy URL:在使用 HTTPS 流量时应使用的安全代理 URL。如果没有提供值,则使用相同的值 HTTP Proxy URL,用于 HTTPHTTPS
    • 无代理域:应当绕过代理的以逗号分隔的域列表。使用一个句点 (.) 开始的域名,包含该域中的所有子域。添加星号 (*) 以绕过所有目的地的代理。
  4. 输入 Red Hat OpenShift Container Platform pull secret。您可以从 Pull secret 下载 pull secret。
  5. 添加可让您连接到集群的 SSH 私钥和 SSH 公钥。您可以使用现有密钥对,或使用密钥生成程序创建新密钥对。如需更多信息,请参阅为集群节点 SSH 访问生成密钥对
  6. 查看新凭据信息,然后单击 Add。添加凭证时,会将其添加到凭证列表中。

要创建使用此凭证的集群,您可以完成在 Red Hat Virtualization 上创建集群 中的步骤。

您可以在控制台中编辑凭证。

当您不再管理使用凭证的集群时,请删除凭证来保护凭证中的信息。选择要批量删除的 Actions,或者选择您要删除的凭证旁边的选项菜单。

1.4.7. 为 Red Hat OpenShift Cluster Manager 创建凭证

添加 OpenShift Cluster Manager 凭证,以便您可以发现集群。

需要的访问权限: Administrator

1.4.7.1. 先决条件

您需要一个 console.redhat.com 帐户。稍后,您将需要这个值,它可从 console.redhat.com/openshift/token 获取。

1.4.7.2. 使用控制台管理凭证

您需要添加凭证来发现集群。要从 multicluster engine operator 控制台创建凭证,请完成控制台中的步骤。

从导航菜单开始。单击 Credentials 以从现有凭证选项中进行选择。提示: 为方便起见,同时为了提高安全性,创建一个命名空间,专门用于托管您的凭证。

输入 OpenShift Cluster Manager API 令牌,该令牌可以从 console.redhat.com/openshift/token 获取。

您可以在控制台中编辑凭证。

当您不再管理使用凭证的集群时,请删除凭证来保护凭证中的信息。选择要批量删除的 Actions,或者选择您要删除的凭证旁边的选项菜单。

如果您的凭证被删除,或者 OpenShift Cluster Manager API 令牌已过期或被撤销,则会删除相关的发现集群。

1.4.8. 为 Ansible Automation Platform 创建凭证

您需要一个凭证才能使用多集群引擎 operator 控制台来部署和管理使用 Red Hat Ansible Automation Platform 的 Red Hat OpenShift Container Platform 集群。

需要的访问权限: Edit

注: 必须在创建 Automation 模板前完成此步骤,以便在集群中启用自动化。

1.4.8.1. 先决条件

创建凭证前必须满足以下先决条件:

  • 已部署多集群引擎 operator hub 集群
  • 多集群引擎 operator hub 集群的互联网访问
  • Ansible 登录凭证,其中包括 Ansible Automation Platform 主机名和 OAuth 令牌;请参阅 Ansible Automation Platform 的凭证
  • 允许您安装 hub 集群并使用 Ansible 的帐户权限。了解有关 Ansible 用户的更多信息。
1.4.8.2. 使用控制台管理凭证

要从 multicluster engine operator 控制台创建凭证,请完成控制台中的步骤。

从导航菜单开始。单击 Credentials 以从现有凭证选项中进行选择。提示: 为方便起见,同时为了提高安全性,创建一个命名空间,专门用于托管您的凭证。

您在创建 Ansible 凭据时提供的 Ansible 令牌和主机 URL 会自动更新,以便在您编辑凭据时使用该凭据的自动化。更新复制到任何使用 Ansible 凭据的自动化中,包括与集群生命周期、监管和应用程序管理自动化相关的自动化。这可确保自动化在更新凭证后继续运行。

您可以在控制台中编辑凭证。Ansible 凭据在自动化中自动更新,您在凭据中更新该凭据时使用该凭据。

要创建使用此凭证的 Ansible 作业,您可以完成 配置 Ansible Automation Platform 任务以在受管集群上运行 的步骤。

当您不再管理使用凭证的集群时,请删除凭证来保护凭证中的信息。选择要批量删除的 Actions,或者选择您要删除的凭证旁边的选项菜单。

1.4.9. 为内部环境创建凭证

您需要一个凭证才能使用控制台在内部环境中部署和管理 Red Hat OpenShift Container Platform 集群。凭证指定用于集群的连接。

需要的访问权限: Edit

1.4.9.1. 先决条件

创建凭证前需要满足以下先决条件:

1.4.9.2. 使用控制台管理凭证

要从控制台创建凭证,请完成控制台中的步骤。

从导航菜单开始。单击 Credentials 以从现有凭证选项中进行选择。提示: 为方便起见,同时为了提高安全性,创建一个命名空间,专门用于托管您的凭证。

  1. 为您的凭证类型选择 Host inventory
  2. 您可以选择为您的凭证添加基本 DNS 域。如果您将基本 DNS 域添加到凭证中,则在使用此凭证创建集群时,会自动填充到正确的字段中。如果没有添加 DNS 域,您可以在创建集群时添加它。
  3. 输入您的 Red Hat OpenShift pull secret。您可以从 Pull secret 下载 pull secret。如需有关 pull secret 的更多信息,请参阅使用镜像 pull secret。
  4. 选择 Add 来创建您的凭证。

要创建使用此凭证的集群,您可以完成 在内部环境中创建集群中的步骤

当您不再管理使用凭证的集群时,请删除凭证来保护凭证中的信息。选择要批量删除的 Actions,或者选择您要删除的凭证旁边的选项菜单。

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 clustersmanaged 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 安装的组件:

Cluster lifecycle architecture diagram

集群生命周期管理架构的组件包括以下项目:

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 集群架构不同的架构中创建集群。

例如,您可以从 ppc64leaarch64s390x 架构上运行的 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 镜像创建发行镜像,请完成类似以下架构类型的步骤:

  1. OpenShift Container Platform release registry 中,创建一个 清单列表,其中包含 x86_64s390xaarch64ppc64le 发行镜像。

    1. 使用以下命令,从 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
    2. 登录到维护镜像的私有存储库:

      podman login <private-repo>

      使用存储库的路径替换 private-repo

    3. 运行以下命令,将发行镜像清单添加到私有存储库中:

      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

    4. 为新信息创建清单:

      podman manifest create mymanifest
    5. 将两个发行镜像的引用添加到清单列表中:

      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

    6. 将清单列表中的列表与现有清单合并:

      podman manifest push mymanifest docker://<private-repo>/ocp-release:4.10.1

      使用存储库的路径替换 private-repo

  2. 在 hub 集群中,创建一个发行版本镜像来引用存储库中的清单。

    1. 创建一个 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

    2. 在 hub 集群中运行以下命令以应用更改:

      oc apply -f <file-name>.yaml

      file-name 替换为您刚才创建的 YAML 文件的名称。

  3. 在创建 OpenShift Container Platform 集群时选择新的发行镜像。
  4. 如果使用 Red Hat Advanced Cluster Management 控制台部署受管集群,在集群创建过程中在 Architecture 字段中指定受管集群的架构。

创建流程使用合并的发行镜像来创建集群。

1.5.2.2. 连接时维护自定义的发行镜像列表

您可能想要在所有集群中使用相同的发行镜像。为简化操作,您可以创建自己的自定义列表,在其中包含创建集群时可用的发行镜像。完成以下步骤以管理可用发行镜像:

  1. acm-hive-openshift-releases GitHub 仓库 2.7 分支进行分叉(fork )。
  2. 为创建集群时可用的镜像添加 YAML 文件。使用 Git 控制台或终端将镜像添加到 ./clusterImageSets/stable/./clusterImageSets/fast/ 目录中。
  3. multicluster-engine 命名空间中创建一个名为 cluster-image-set-git-repoConfigMap。请参见以下示例:
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 文件:

  1. 将更改提交并合并到您的已分叉仓库。
  2. 要在克隆 acm-hive-openshift-releases 仓库后同步 fast 发行镜像列表,请将 cluster-image-set-git-repo ConfigMap 中的 channel 字段的值更新为 fast
  3. 要同步并显示 stable 发行镜像,请将 cluster-image-set-git-repo ConfigMap 中的 channel 字段的值更新为 stable

更新 ConfigMap 后,可用稳定镜像列表会在约一分钟内更新为当前可用镜像。默认情况下,Red Hat Advanced Cluster Management 会预加载几个 ClusterImageSets。

  1. 您可以使用以下命令列出可用内容并删除默认值。将 <clusterImageSet_NAME > 替换为正确的名称:

    oc get clusterImageSets
    oc delete clusterImageSet <clusterImageSet_NAME>

在创建集群时,在控制台中查看当前可用发行镜像的列表。

有关通过 ConfigMap 提供的其他字段的信息,请查看 cluster-image-set-controller GitHub 仓库 README

1.5.2.3. 断开连接时维护自定义的发行镜像列表

在某些情况下,当节点集群没有互联网连接时,您需要维护一个自定义的发行镜像列表。您可以创建自己的自定义列表,在其中包含创建集群时可用的发行镜像。完成以下步骤以在断开连接的情况下管理可用发行镜像:

  1. 在连接的系统中时,进入 acm-hive-openshift-releases GitHub 仓库,以访问可用于版本 2.7 的集群镜像集。
  2. clusterImageSets 目录复制到可以访问断开连接的多集群引擎 operator 集群的系统中。
  3. 通过完成以下步骤,添加受管集群和带有集群镜像的断开连接的存储库之间的映射:

  4. 使用控制台或 CLI 为您希望在创建集群时可用的镜像添加 YAML 文件,以手动添加 clusterImageSet YAML 内容。
  5. 修改 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 中载入镜像。

  6. 通过为每个 YAML 文件输入以下命令来创建每个 clusterImageSets:

    oc create -f <clusterImageSet_FILE>

    clusterImageSet_FILE 替换为集群镜像集文件的名称。例如:

    oc create -f img4.11.9-x86_64.yaml

    为要添加的每个资源运行此命令后,可用发行镜像列表可用。

  7. 另外,您还可以将镜像 URL 直接粘贴到创建集群控制台中。如果镜像 URL 不存在,则添加镜像 URL 会创建新的 clusterImageSets
  8. 在创建集群时,在控制台中查看当前可用发行镜像的列表。

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. 创建裸机主机自定义资源定义

在启用中央基础架构管理服务前,您需要裸机主机自定义资源定义。

  1. 运行以下命令,检查是否已有一个裸机主机自定义资源定义:

    oc get crd baremetalhosts.metal3.io
    • 如果您有裸机主机自定义资源定义,输出会显示创建资源的日期。
    • 如果您没有资源,您会收到类似如下的错误:

      Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "baremetalhosts.metal3.io" not found
  2. 如果您没有裸机主机自定义资源定义,请下载 metal3.io_baremetalhosts.yaml 文件,并通过运行以下命令来应用内容来创建资源:

    oc apply -f
1.5.3.1.3. 创建或修改 置备 资源

在启用中央基础架构管理服务前,您需要 置备 资源。

  1. 运行以下命令,检查您是否有 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 集群安装在不同的平台上,请继续 在断开连接的环境中启用中央基础架构管理或者在连接的环境中启用中央基础架构管理

  1. 运行以下命令,修改 Provisioning 资源以允许 Bare Metal Operator 监视所有命名空间:

    oc patch provisioning provisioning-configuration --type merge -p '{"spec":{"watchAllNamespaces": true }}'
1.5.3.1.3.2. 创建 置备 资源

如果您没有 Provisioning 资源,请完成以下步骤:

  1. 通过添加以下 YAML 内容来创建 Provisioning 资源:

    apiVersion: metal3.io/v1alpha1
    kind: Provisioning
    metadata:
      name: provisioning-configuration
    spec:
      provisioningNetwork: "Disabled"
      watchAllNamespaces: true
  2. 运行以下命令来应用内容:

    oc apply -f
1.5.3.1.4. 在断开连接的环境中启用中央基础架构管理

要在断开连接的环境中启用中央基础架构管理,请完成以下步骤:

  1. 在与基础架构 Operator 相同的命名空间中创建 ConfigMap,为您的镜像 registry 指定 ca-bundle.crtregistry.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 不需要身份验证。

  2. 通过在 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

重要:如果您使用更新的绑定功能以及 AgentServiceConfig 自定义资源中的 spec.osImages 发行版本是 4.13 或更高版本,则您在创建集群时使用的 OpenShift Container Platform 发行镜像必须是 4.13 或更高版本。版本 4.13 及更新版本的 Red Hat Enterprise Linux CoreOS 镜像与版本 4.13 之前的版本不兼容。

您可以通过检查 assisted-serviceassisted-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-serviceassisted-image-service 部署,确定 pod 已就绪并在运行,来验证其状态是否正常。

1.5.3.1.6. 其他资源
1.5.3.2. 在 Amazon Web Services 上启用中央基础架构管理

如果您在 Amazon Web Services 上运行 hub 集群并希望启用中央基础架构管理服务,请在 启用中央基础架构管理服务 后完成以下步骤:

  1. 确保您已在 hub 集群中登录,并通过运行以下命令来查找在 assisted-image-service 上配置的唯一域:

    oc get routes --all-namespaces | grep assisted-image-service

    您的域可能类似以下示例:assisted-image-service-multicluster-engine.apps.<yourdomain>.com

  2. 确保您已在 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
  3. <yourdomain> 添加到 IngressController 中的 domain 参数,方法是使用 <yourdomain> 替换 nlb-apps.<domain>.com<domain>
  4. 运行以下命令来应用新的 IngressController

    oc apply -f ingresscontroller.yaml
  5. 通过完成以下步骤,确保新 IngressControllerspec.domain 参数的值不与现有 IngressController 冲突:

    1. 运行以下命令列出所有 IngressController

      oc get ingresscontroller -n openshift-ingress-operator
    2. 在每个 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 路由。

  6. 运行以下命令来编辑 assisted-image-service 路由以使用 nlb-apps 位置:

    oc edit route assisted-image-service -n <namespace>

    默认命名空间是您安装 multicluster engine operator 的位置。

  7. assisted-image-service 路由中添加以下行:

    metadata:
      labels:
        router-type: nlb
      name: assisted-image-service
  8. assisted-image-service 路由中,找到 spec.host 的 URL 值。URL 可能类似以下示例:

    assisted-image-service-multicluster-engine.apps.<yourdomain>.com
  9. 将 URL 中的 apps 替换为 nlb-apps,以匹配新 IngressController 中配置的域。
  10. 要验证 Amazon Web Services 上是否启用了中央基础架构管理服务,请运行以下命令来验证 pod 是否健康:

    oc get pods -n multicluster-engine | grep assist
  11. 创建新主机清单,并确保下载 URL 使用新的 nlb-apps URL。
1.5.3.3. 使用控制台创建主机清单

您可以创建一个主机清单(基础架构环境)来发现您可以在其上安装 OpenShift Container Platform 集群的物理或虚拟集群。

1.5.3.3.1. 先决条件
  • 您必须启用中央基础架构管理服务。如需更多信息 ,请参阅启用中央基础架构管理服务
1.5.3.3.2. 创建主机清单

完成以下步骤,使用控制台创建主机清单:

  1. 在控制台中,导航到 Infrastructure > Host inventory,再点 Create infrastructure environment
  2. 在主机清单设置中添加以下信息:

    • 名称 :您的基础架构环境的唯一名称。使用控制台创建基础架构环境也会使用您选择的名称为 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. 创建主机清单

完成以下步骤,使用命令行界面创建主机清单(基础架构环境):

  1. 运行以下命令登录到您的 hub 集群:

    oc login
  2. 为资源创建命名空间。

    1. 创建 namespace.yaml 文件并添加以下内容:

      apiVersion: v1
      kind: Namespace
      metadata:
        name: <your_namespace> 1
      1
      在控制台中使用命名空间和基础架构环境相同的名称来监控您的清单。
    2. 运行以下命令来应用 YAML 内容:

      oc apply -f namespace.yaml
  3. 创建包含 OpenShift Container Platform pull secretSecret 自定义资源。

    1. 创建 pull-secret.yaml 文件并添加以下内容:

      apiVersion: v1
      kind: Secret
      type: kubernetes.io/dockerconfigjson
      metadata:
        name: pull-secret 1
        namespace: <your_namespace>
      stringData:
        .dockerconfigjson: <your_pull_secret> 2
      1
      添加您的名称sapce。
      2
      添加 pull secret。
    2. 运行以下命令来应用 YAML 内容:

      oc apply -f pull-secret.yaml
  4. 创建基础架构环境。

    1. 创建 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>
表 1.3. InfraEnv 字段表
字段可选或必需的描述

proxy

选填

定义使用 InfraEnv 资源的代理和集群的代理设置。如果没有设置 proxy 值,则代理不会配置为使用代理。

httpProxy

选填

HTTP 请求的代理的 URL。URL 必须以 http 开头。不支持 HTTPS。

httpsProxy

选填

HTTP 请求的代理的 URL。URL 必须以 http 开头。不支持 HTTPS。

noProxy

选填

您不想将代理与逗号分开的域和 CIDR 列表。

additionalNTPSources

选填

要添加到所有主机的网络时间协议(NTP)源(主机名或 IP)的列表。它们添加到使用其他选项(如 DHCP)配置的 NTP 源中。

sshAuthorizedKey

选填

添加到所有主机的 SSH 公钥,以便在发现阶段进行调试。发现阶段是主机引导发现镜像时。

name

必需

包含 pull secret 的 Kubernetes secret 名称。

agentLabels

选填

自动添加到 代理资源的标签,代表您的 InfraEnv 发现的主机。确保添加您的键和值。

nmStateConfigLabelSelector

选填

整合主机的高级网络配置,如静态 IP、网桥和绑定。主机网络配置在一个或多个 NMStateConfig 资源中指定,使用您选择的标签。nmStateConfigLabelSelector 属性是一个 Kubernetes 标签选择器,它与您选择的标签匹配。与此标签选择器匹配的所有 NMStateConfig 标签的网络配置都包含在 Discovery Image 中。当您引导时,每个主机会将每个配置与其网络接口进行比较,并应用适当的配置。要了解更多有关高级网络配置的信息,请参阅 为主机清单配置高级网络 的链接。

clusterRef

选填

引用描述独立内部集群的现有 ClusterDeployment 资源。默认不设置。如果没有设置 clusterRef,则主机稍后可以绑定到一个或多个集群。您可以从一个集群中删除主机并将其添加到另一个集群中。如果设置了 clusterRef,则通过 InfraEnv 发现的所有主机都会自动绑定到指定的集群。如果集群还没有安装,则所有发现的主机都属于其安装的一部分。如果已安装集群,则会添加所有发现的主机。

ignitionConfigOverride

选填

修改 Red Hat CoreOS live 镜像的 ignition 配置,如添加文件。如果需要,请确保只使用 ignitionConfigOverride。必须使用 ignition 版本 3.1.0,无论集群版本是什么。

cpuArchitecture

选填

选择以下支持的 CPU 架构之一:x86_64、aarch64、ppc64le 或 s390x。默认值为 x86_64。

ipxeScriptType

选填

当设置为 DiscoveryImageAlways 的默认值以及使用 iPXE 引导时,导致镜像服务始终提供 iPXE 脚本。因此,主机从网络发现镜像引导。将值设为 BootOrderControl 会导致镜像服务决定何时返回 iPXE 脚本,具体取决于主机状态,这会导致主机在主机调配并且是集群的一部分时从磁盘引导。

kernelArguments

选填

允许在发现镜像引导时修改内核参数。操作 可能的值有 附加replace 或删除

additionalTrustBundle

选填

如果主机位于带有重新加密 man-in-the-middle (MITM)代理的网络中,或者主机需要信任证书进行其他目的,则需要 PEM 编码的 X.509 证书捆绑包。InfraEnv 发现的主机信任此捆绑包中的证书。从 InfraEnv 发现的主机创建的集群也会信任此捆绑包中的证书。

osImageVersion

选填

用于 InfraEnv 的 Red Hat CoreOS 镜像版本。确保版本引用 AgentServiceConfig.spec.osImages 或默认 OS 镜像列表中指定的 OS 镜像。每个发行版本都有一组特定的 Red Hat CoreOS 镜像版本。OSImageVersion 必须与 OS 镜像列表中的 OpenShift Container Platform 版本匹配。您不能同时指定 OSImageVersionClusterRef。如果要使用默认不存在的 Red Hat CoreOS 镜像的另一个版本,则必须在 AgentServiceConfig.spec.osImages 中指定版本来手动添加版本。要了解更多有关添加版本的信息 ,请参阅启用中央基础架构管理服务

  1. 运行以下命令来应用 YAML 内容:

    oc apply -f infra-env.yaml
  2. 要验证您的主机清单是否已创建,请使用以下命令检查状态:

    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. 使用命令行界面配置高级网络

要使用命令行界面为您的基础架构环境配置高级网络,请完成以下步骤:

  1. 创建名为 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"
表 1.4. NMStateConfig 字段表
字段可选或必需的描述

name

必需

使用与您要配置的主机或主机相关的名称。

namespace

必需

命名空间必须与 InfraEnv 资源的命名空间匹配。

some-key

必需

InfraEnv 资源中添加一个或多个与 nmStateConfigLabelSelector 匹配的标签。

config

选填

描述 NMstate 格式的网络设置。有关格式规格和其他示例,请参阅 Declarative Network API。配置也可以应用到单个主机,其中每个主机都有一个 NMStateConfig 资源,也可以描述单个 NMStateConfig 资源中的多个主机的接口。

interfaces

选填

描述主机上指定 NMstate 配置和 MAC 地址中找到的接口名称之间的映射。确保映射使用主机上存在的物理接口。例如,当 NMState 配置定义了绑定或 VLAN 时,映射仅包含父接口的条目。映射有以下目的:* 允许您在配置中使用与主机上的接口名称不匹配的接口名称。您可能会发现此功能很有用,因为操作系统选择接口名称,这可能不可预测。* 告知主机在引导后查找哪些 MAC 地址并应用正确的 NMstate 配置。

注: 当您更新任何 InfraEnv 属性或更改与其标签选择器匹配的 NMStateConfig 资源时,Image Service 会自动创建一个新镜像。如果在创建 InfraEnv 资源后添加 NMStateConfig 资源,请通过检查 InfraEnv 中的 createdTime 属性来确保 InfraEnv 创建一个新的 Discovery 镜像。如果您已经引导主机,请使用最新的发现镜像再次引导它们。

  1. 运行以下命令来应用 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:

  1. 在控制台中选择 Infrastructure > Host inventory
  2. 从列表中选择您的基础架构环境。
  3. 单击 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. 使用控制台添加裸机主机

完成以下步骤,使用控制台自动将裸机主机添加到主机清单中:

  1. 在控制台中选择 Infrastructure > Host inventory
  2. 从列表中选择您的基础架构环境。
  3. Add hosts 并选择 With BMC Form
  4. 添加所需信息并点 Create
1.5.3.7.3. 使用命令行界面添加裸机主机

完成以下步骤,使用命令行界面自动将裸机主机添加到主机清单中。

  1. 通过应用以下 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 的命名空间相同。
  2. 通过应用以下 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. 其他资源
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

    设置集群中主机的角色。可能的值有 masterworkerauto-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 条件,带有 TrueFalse 值:

    • SpecSynced :如果所有指定属性都成功应用,则为 True如果遇到 一些错误,则为 false。
    • connected :如果代理连接到安装服务,则为 True。如果代理在一段时间内没有联系安装服务,则为 false。
    • requirementsMet: 如果主机准备好开始安装,则为 True
    • validated: 如果所有主机验证都通过,则为 True
    • installed :如果主机作为 OpenShift 节点安装,则为 True
    • bound: 如果主机绑定到集群,则为 True
    • cleanup:如果删除 Agent resouce 的请求失败,则为 False
  • debugInfo

    包含用于下载安装日志和事件的 URL。

  • validationsInfo

    包含有关代理在发现主机后运行的验证信息,以确保安装成功。如果值为 False,则进行故障排除。

  • installation_disk_id

    您所选的安装磁盘的 ID 在主机的清单中可见。

1.5.3.8.3. 其他资源

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 集群。请参见以下步骤:

  1. 运行以下命令来克隆:

    git clone https://github.com/stolostron/acm-hive-openshift-releases.git
    cd acm-hive-openshift-releases
    git checkout origin/backplane-2.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

    资源清单 ConfigMapspec.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,用于 HTTPHTTPS
    • 没有代理站点:应绕过代理的、以逗号分隔的站点列表。使用一个句点 (.) 开始的域名,包含该域中的所有子域。添加一个星号 * 以绕过所有目的地的代理。
    • 其他信任捆绑包:代理 HTTPS 连接所需的一个或多个额外 CA 证书。
1.5.4.3.3. 使用控制台创建集群

要创建新集群,请参阅以下步骤。如果您希望导入一个现有的集群,请参阅将目标受管集群导入到 hub 集群

注: 您不必运行随集群提供的集群详情的 oc 命令。创建集群时,它由 multicluster engine operator 管理自动配置。

  1. 进入 Infrastructure > Clusters
  2. Clusters 页面上。点 Cluster > Create cluster 并完成控制台中的步骤。
  3. 可选: 在控制台中输入信息时,选择 YAML: On 查看内容更新。

如果您需要创建凭证,请参阅为 Amazon Web Services 创建凭证

集群的主机名用于集群的主机名。

1.5.4.3.4. 其他资源
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。

  1. 使用专用子网为受管集群创建 VPC。
  2. 使用专用子网为受管集群服务端点创建一个或多个 VPC。区域中的每个 VPC 限制为 255 个 VPC 端点,因此您需要多个 VPC 来支持该区域中的 255 个集群。
  3. 对于每个 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
  4. 确保所有 hub 环境(hub 集群 VPC)都有与您为使用对等、传输网关和所有 DNS 设置创建的 VPC 创建的 VPC 的网络连接。
  5. 收集解决 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.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,用于 HTTPHTTPS
  • 无代理域:应当绕过代理的以逗号分隔的域列表。使用一个句点 (.) 开始的域名,包含该域中的所有子域。添加一个星号 * 以绕过所有目的地的代理。
  • 其他信任捆绑包:代理 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 上创建集群前请查看以下先决条件:

注: 如果您在云供应商上更改云供应商访问密钥,则需要在 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,用于 HTTPHTTPS
  • 无代理:应绕过代理的以逗号分隔的域列表。使用一个句点 (.) 开始的域名,包含该域中的所有子域。添加一个星号 * 以绕过所有目的地的代理。
  • 其他信任捆绑包:代理 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 上创建集群前请查看以下先决条件:

注: 如果您在云供应商上更改云供应商访问密钥,则需要在 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,用于 HTTPHTTPS
  • 没有代理站点:应绕过代理的、以逗号分隔的站点列表。使用一个句点 (.) 开始的域名,包含该域中的所有子域。添加一个星号 * 以绕过所有目的地的代理。
  • 其他信任捆绑包:代理 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 节点。该信息包括 每个插槽的内核数CPUMemory_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,用于 HTTPHTTPS
  • 没有代理站点:提供以逗号分隔的站点列表,这些站点应绕过代理。使用一个句点 (.) 开始的域名,包含该域中的所有子域。添加一个星号 * 以绕过所有目的地的代理。
  • 其他信任捆绑包:代理 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 地址
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 代理 相同的值用于 HTTPHTTPS
  • 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 文件:

  1. 使用 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----
  2. 修改 Hive ClusterDeployment 对象,在 spec.platform.openstack 中指定 certificate SecretRef 的值,如下例所示:

    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,用于 HTTPHTTPS
  • 没有代理站点:提供以逗号分隔的站点列表,这些站点应绕过代理。使用一个句点 (.) 开始的域名,包含该域中的所有子域。添加一个星号 * 以绕过所有目的地的代理。
  • 其他信任捆绑包:代理 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:

  1. 在控制台中,导航到 Infrastructure > Clusters,再选择您创建的或想要访问的集群名称。
  2. 选择 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.comquay.ioregistry.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
指定创建集群的环境的平台类型。有效值为 BareMetalVSphereExternal
2
使用与 ClusterDeployment 资源相同的名称。
3
使用在生成一个ClusterImageSet 中生成的 ClusterImageSet
4
您可以指定 SSH 公钥,该密钥可让您在安装后访问主机。
1.5.4.10.3.6. 可选:创建 NMStateConfig 自定义资源

只有在有主机级别网络配置(如静态 IP 地址)时才需要 NMStateConfig 自定义资源。如果包含此自定义资源,则必须在创建 InfraEnv 自定义资源前完成此步骤。NMStateConfigInfraEnv 自定义资源中的 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
标签名称和标签值必须与您在 Optional: Create the NMStateConfig 自定义资源中创建的 NMStateConfig 自定义资源的 label 部分中的值匹配。
1.5.4.10.3.8. 从发现镜像引导主机

剩余的步骤解释了如何从之前的步骤发现 ISO 镜像引导主机。

  1. 运行以下命令,从命名空间下载发现镜像:

    curl --insecure -o image.iso $(kubectl -n sample-namespace get infraenvs.agent-install.openshift.io myinfraenv -o=jsonpath="{.status.isoDownloadURL}")
  2. 将发现镜像移到虚拟介质、USB 驱动器或其他存储位置,并从您下载的发现镜像引导主机。
  3. 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 创建的集群,请完成以下步骤:

  1. 在导航菜单中选择 Infrastructure > Clusters。确保已选中 Manage cluster 选项卡。
  2. 从集群的 Options 菜单中选择 Hibernate cluster注:如果 Hibernate cluster 选项不可用,您就无法休眠该群集。当集群导入且不是由 multicluster engine operator 创建时,会出现这种情况。

当进程完成后,Clusters 页面中的集群状态为 Hibernating

提示:您可以通过在 Clusters 页面上选择要休眠的集群并选择 Actions > Hibernate clusters来休眠多个集群。

您选择的集群正在休眠。

1.5.4.11.2. 使用 CLI Hibernate 集群

要使用 CLI 休眠由多集群引擎 operator 创建的集群,请完成以下步骤:

  1. 输入以下命令编辑您要休眠的集群设置:

    oc edit clusterdeployment <name-of-cluster> -n <namespace-of-cluster>

    name-of-cluster 替换为您要休眠的集群的名称。

    namespace-of-cluster 替换为您要休眠的集群的命名空间。

  2. spec.powerState 的值改为 Hibernating
  3. 输入以下命令查看集群的状态:

    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. 使用控制台恢复休眠集群的一般操作

要使用控制台恢复休眠集群的一般操作,请完成以下步骤:

  1. 在导航菜单中选择 Infrastructure > Clusters。确保已选中 Manage cluster 选项卡。
  2. 从您要恢复的集群的 Options 菜单中选择 Resume cluster

当进程完成后,Clusters 页面中的集群状态为 Ready

提示:您可以通过在 Clusters 页面上选择要恢复的集群并选择 Actions > Resume clusters来休眠多个集群。

所选集群恢复正常操作。

1.5.4.11.4. 使用 CLI 恢复休眠集群的一般操作

要使用 CLI 恢复休眠集群的一般操作,请完成以下步骤:

  1. 输入以下命令来编辑集群的设置:

    oc edit clusterdeployment <name-of-cluster> -n <namespace-of-cluster>

    name-of-cluster 替换为您要休眠的集群的名称。

    namespace-of-cluster 替换为您要休眠的集群的命名空间。

  2. spec.powerState 的值改为 Running
  3. 输入以下命令查看集群的状态:

    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 集群的通信。

要创建使用代理配置的集群,请完成以下步骤:

  1. 通过将以下信息添加到存储于您的 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 表示)。

    添加前面的值后,设置将应用到集群。

  2. 通过完成创建集群的步骤来置备集群。请参阅创建集群以选择您的供应商。

注: 在部署集群时,只能使用 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,请完成以下步骤:

  1. cloud.redhat.com 下载 Kubernetes pull secret。
  2. 将 pull secret 添加到 hub 集群的命名空间。
  3. 运行以下命令在 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-agentopen-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 模板,以便在集群升级时运行。

提供 kubeconfig 文件

复制并粘贴您要导入的集群的 kubeconfig 文件的内容。您可以指定一个 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,或创建一个服务帐户来保护个人凭证。

  1. 生成并复制导入命令:

    1. 从控制台导航中选择 Infrastructure > Clusters
    2. 选择 Import cluster
    3. 以表单填写 DetailsAutomation 信息,将 Import mode 选择设置为 手动运行导入命令。点 Generate 命令后,会显示集群概览页面。
    4. Copy 命令将生成 的命令复制到剪贴板。
  2. 对于 OpenShift Container Platform Dedicated 环境,请完成以下步骤(如果您不使用 OpenShift Container Platform Dedicated 环境,请跳至第 3 步):

    1. 登录到您要导入的集群的 OpenShift Container Platform 控制台。
    2. 在您要导入的集群中创建 open-cluster-management-agentopen-cluster-management 命名空间或项目。
    3. 在 OpenShift Container Platform 目录中找到 klusterlet Operator。
    4. open-cluster-management 命名空间中或您创建的项目中安装它。

      重要: 不要在 open-cluster-management-agent 命名空间中安装 Operator。

    5. 通过完成以下步骤,从导入命令中提取 bootstrap secret:

      1. 将导入命令粘贴到您创建的名为 import-command 的文件中。
      2. 运行以下命令以将内容插入新文件中:

        cat import-command | awk '{split($0,a,"&&"); print a[3]}' | awk '{split($0,a,"|"); print a[1]}' | sed -e "s/^ echo //" | base64 -d
      3. 在输出中找到并复制名为 bootstrap-hub-kubeconfig 的 secret。
      4. 将 secret 应用到受管集群上的 open-cluster-management-agent 命名空间。
      5. 使用安装的 Operator 中的示例创建 klusterlet 资源。将 clusterName 值更改为与导入过程中设置的集群名称相同的名称。

        注:managedcluster 资源成功注册到 hub 时,会安装两个 klusterlet operator。一个 klusterlet operator 位于 open-cluster-management 命名空间中,另一个位于 open-cluster-management-agent 命名空间中。具有多个 Operator 不会影响 klusterlet 的功能。

  3. 输入以下命令确保您的 kubectl 登录到您要导入的集群:

    kubectl cluster-info
  4. 运行您复制的命令,将 open-cluster-management-agent-addon 部署到受管集群。

如果要配置集群 API 地址,请按照 可选的步骤进行: 配置集群 API 地址

1.5.5.1.3.2. 可选:配置集群 API 地址

完成以下步骤,通过配置运行 oc get managedcluster 命令时表中显示的 URL 来选择性地配置集群详情页面上的 Cluster API 地址

  1. 使用具有 cluster-admin 权限的 ID 登录到 hub 集群。
  2. 为目标受管集群配置 kubeconfig 文件。
  3. 运行以下命令,编辑您要导入的集群的受管集群条目:

    oc edit managedcluster <cluster-name>

    cluster-name 替换为受管集群的名称。

  4. 在 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. 其他资源
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 导入受管集群前,您必须完成以下步骤:

  1. 运行以下命令登录到您的 hub 集群:

    oc login
  2. 在 hub 集群上运行以下命令以创建项目和命名空间。在 < cluster_name& gt; 中定义的集群名称也用作 YAML 文件和命令中的集群命名空间:

    oc new-project <cluster_name>

    重要: cluster.open-cluster-management.io/managedCluster 标签会自动添加到受管集群命名空间中并从中删除。不要手动将其添加到受管集群命名空间中或从受管集群命名空间中删除。

  3. 使用以下示例内容,创建一个名为 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

    cloudvendor 的值被设置为 auto-detect 时,Red Hat Advanced Cluster Management 会检测您要导入的集群的云和厂商类型。您可以选择将 auto-detect 的值替换为集群的 cloud 和 vendor 值。请参见以下示例:

    cloud: Amazon
    vendor: OpenShift
  4. 运行以下命令,将 YAML 文件应用到 ManagedCluster 资源:

    oc apply -f managed-cluster.yaml

现在,您可以使用 自动导入 secret手动导入集群来继续导入集群

1.5.5.2.4. 使用自动导入 secret 功能导入集群

要使用自动导入 secret 导入受管集群,您必须创建一个 secret,其中包含集群的 kubeconfig 文件,或 kube API 服务器和集群的令牌对。完成以下步骤,使用自动导入 secret 导入集群:

  1. 检索您要导入的受管集群的 kubeconfig 文件或 kube API 服务器和令牌。请参阅 Kubernetes 集群的文档,了解在哪里可以找到您的 kubeconfig 文件或 kube API 服务器和令牌。
  2. 在 ${CLUSTER_NAME} 命名空间中创建 auto-import-secret.yaml 文件。

    1. 使用类似以下模板的内容,创建一个名为 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
    2. 运行以下命令,在 <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=""
  3. 验证您的导入集群的 JOINEDAVAILABLE 状态。在 hub 集群中运行以下命令:

    oc get managedcluster <cluster_name>
  4. 在集群中运行以下命令来登录到受管集群:

    oc login
  5. 您可以运行以下命令来验证您要导入的集群中的 pod 状态:

    oc get pod -n open-cluster-management-agent

现在 ,您可以继续导入 klusterlet 附加组件

1.5.5.2.5. 手动导入集群

重要: 导入命令包含复制到每个导入的受管集群中的 pull secret 信息。具有访问导入集群权限的所有用户都可以查看 pull secret 信息。

完成以下步骤以手动导入受管集群:

  1. 运行以下命令,获取由导入控制器在 hub 集群上生成的 klusterlet-crd.yaml 文件:

    oc get secret <cluster_name>-import -n <cluster_name> -o jsonpath={.data.crds\\.yaml} | base64 --decode > klusterlet-crd.yaml
  2. 运行以下命令,获取导入控制器在 hub 集群上生成的 import.yaml 文件:

    oc get secret <cluster_name>-import -n <cluster_name> -o jsonpath={.data.import\\.yaml} | base64 --decode > import.yaml

    在要导入的集群中执行以下步骤:

  3. 输入以下命令登录到您导入的受管集群:

    oc login
  4. 运行以下命令应用您在第 1 步中生成的 klusterlet-crd.yaml

    oc apply -f klusterlet-crd.yaml
  5. 运行以下命令应用您之前生成的 import.yaml 文件:

    oc apply -f import.yaml
  6. 您可以从 hub 集群中运行以下命令来验证您要导入的受管集群的 JOINEDAVAILABLE 状态:

    oc get managedcluster <cluster_name>

现在 ,您可以继续导入 klusterlet 附加组件

1.5.5.2.6. 导入 klusterlet 附加组件

实现 KlusterletAddonConfig klusterlet 附加组件配置,以在受管集群上启用其他附加组件。通过完成以下步骤来创建并应用配置文件:

  1. 创建一个类似以下示例的 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
  2. 将文件保存为 klusterlet-addon-config.yaml
  3. 运行以下命令来应用 YAML:

    oc apply -f klusterlet-addon-config.yaml

    附加组件会在您导入的受管集群状态变为 AVAILABLE 后安装。

  4. 您可以运行以下命令来验证您要导入的集群中的附加组件的 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 集群,没有静态网络或裸机主机,并准备好添加节点:

  1. 通过应用以下 YAML 内容,为要导入的 OpenShift Container Platform 集群创建一个命名空间:

    apiVersion: v1
    kind: Namespace
    metadata:
      name: managed-cluster
  2. 通过应用以下 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
  3. 通过应用以下 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。
  4. kubeconfig 从 OpenShift Container Platform 集群复制到 hub 集群。

    1. 运行以下命令,从 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
    2. 运行以下命令,将 kubeconfig 复制到 hub 集群。确保将 kubeconfig 设置为 hub 集群:

      oc -n managed-cluster create secret generic some-other-cluster-admin-kubeconfig --from-file=kubeconfig=/tmp/kubeconfig.some-other-cluster
  5. 通过应用以下 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
    1
    为集群选择一个名称。
    2
    如果使用单节点 OpenShift 集群,请使用 1。如果您使用多节点集群,请使用 3
    3
    添加可选的 sshPublicKey 字段以登录到节点以进行故障排除。
  6. 通过应用以下 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
    1
    为集群选择一个名称。
    2
    确保 baseDomain 与用于 OpenShift Container Platform 集群的域匹配。
    3
    设置为 true,以自动将 OpenShift Container Platform 集群导入为生产环境集群。
    4
    引用在第 4 步中创建的 kubeconfig
    5 6
    在生产环境中将 clusterIDinfraID 留空。
  7. 通过应用以下 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: ""
表 1.5. InfraEnv 字段表
字段可选或必需的描述

clusterRef

选填

如果您使用 late 绑定,则 clusterRef 字段是可选的。如果没有使用更新的绑定,您必须添加 clusterRef

sshAuthorizedKey

选填

添加可选的 sshAuthorizedKey 字段以登录到节点以进行故障排除。

  1. 如果导入成功,则会出现下载 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 集群中:

  1. 从您之前下载的 ISO 中引导您要用作 worker 节点的机器。

    注: 确保 worker 节点满足 OpenShift Container Platform worker 节点的要求。

  2. 运行以下命令后等待代理注册:

    watch -n 5 "oc get agent -n managed-cluster"
  3. 如果代理注册是 succesful,则会列出代理。批准安装的代理。这可能需要几分钟时间。

    注: 如果没有列出代理,请按 Ctrl 和 C 退出 watch 命令,然后登录到 worker 节点以排除故障。

  4. 如果使用更新的绑定,请运行以下命令将待处理的未绑定代理与 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
  5. 运行以下命令来批准任何待处理的代理以进行安装:

    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 名称。
  • 列出每个 sourcemirror registry 的值。将 mirrored-image-registry-addressimage-registry-address 替换为每个 registry 的 mirrorsource 的值。

    • 示例 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 自定义资源定义自定义的集群:

  1. 在您要导入集群的命名空间中创建 pull secret。对于这些步骤,命名空间是 myNamespace

    $ kubectl create secret docker-registry myPullSecret \
      --docker-server=<your-registry-server> \
      --docker-username=<my-name> \
      --docker-password=<my-password>
  2. 在您创建的命名空间中创建一个放置。

    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 容限才能使配置来选择集群。

  3. 创建一个 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
  4. 在命名空间中创建 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
  5. 从控制台导入受管集群并将其添加到受管集群集中。
  6. 在标签 open-cluster-management.io/image-registry=myNamespace.myImageRegistry 添加到受管集群后,在受管集群中复制并运行导入命令。

1.5.6. 访问集群

要访问创建和管理的 Red Hat OpenShift Container Platform 集群,请完成以下步骤:

  1. 在控制台中,导航到 Infrastructure > Clusters,再选择您创建的或想要访问的集群名称。
  2. 选择 Reveal credentials 来查看集群的用户名和密码。记下这些值以便在登录到集群时使用。

    注: Reveal credentials 选项不适用于导入的集群。

  3. 选择 Console URL 以链接到集群。
  4. 使用在第 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 资源上启用自动扩展,请完成以下步骤:

    1. 在导航中,选择 Infrastructure > Clusters
    2. 点目标集群的名称并选择 Machine pool 选项卡。
    3. 在 machine pool 页中,从目标机器池的 Options 菜单中选择 Enable autoscale
    4. 选择机器设置副本的最小和最大数量。计算机集副本直接映射到集群中的节点。

      在点 Scale 后,更改可能需要几分钟时间来反映控制台。您可以通过单击 Machine pool 选项卡中的通知中的 View machine 来查看扩展操作的状态。

  • 要使用命令行在 MachinePool 资源上启用自动扩展,请完成以下步骤:

    1. 输入以下命令查看您的机器池列表,将 managed-cluster-namespace 替换为目标受管集群的命名空间。

      oc get machinepools -n <managed-cluster-namespace>
    2. 输入以下命令为机器池编辑 YAML 文件:

      oc edit machinepool <MachinePool-resource-name> -n <managed-cluster-namespace>
      • MachinePool-resource-name 替换为 MachinePool 资源的名称。
      • managed-cluster-namespace 替换为受管集群的命名空间的名称。
    3. 从 YAML 文件删除 spec.replicas 字段。
    4. 在资源 YAML 中添加 spec.autoscaling.minReplicas 设置和 spec.autoscaling.maxReplicas 项。
    5. 将最小副本数添加到 minReplicas 设置。
    6. 将最大副本数添加到 maxReplicas 设置中。
    7. 保存文件以提交更改。
1.5.7.1.2. 禁用自动扩展

您可以使用控制台或命令行禁用自动扩展。

  • 要使用控制台禁用自动扩展,请完成以下步骤:

    1. 在导航中,选择 Infrastructure > Clusters
    2. 点目标集群的名称并选择 Machine pool 选项卡。
    3. 在 machine pool 页面中,从目标机器池的 Options 菜单中选择 Disable autoscale
    4. 选择您想要的机器集副本数量。机器集副本直接与集群中的节点映射。

      在点 Scale 后,在控制台中显示可能需要几分钟时间。您可以点 Machine pools 选项卡中的通知中的 View machine 来查看扩展的状态。

  • 要使用命令行禁用自动扩展,请完成以下步骤:

    1. 输入以下命令查看您的机器池列表:

      oc get machinepools -n <managed-cluster-namespace>

      managed-cluster-namespace 替换为目标受管集群的命名空间。

    2. 输入以下命令为机器池编辑 YAML 文件:

      oc edit machinepool <name-of-MachinePool-resource> -n <namespace-of-managed-cluster>

      name-of-MachinePool-resource 替换为 MachinePool 资源的名称。

      namespace-of-managed-cluster 替换为受管集群的命名空间的名称。

    3. 从 YAML 文件中删除 spec.autoscaling 字段。
    4. spec.replicas 字段添加到资源 YAML。
    5. 将副本数添加到 replicas 设置中。
    6. 保存文件以提交更改。
1.5.7.1.3. 启用手动扩展

您可以从控制台和命令行手动扩展。

1.5.7.1.3.1. 使用控制台启用手动扩展

要使用控制台扩展 MachinePool 资源,请完成以下步骤:

  1. 如果启用了 MachinePool,请禁用自动扩展。请参阅前面的步骤。
  2. 在控制台中点 Infrastructure > Clusters
  3. 点目标集群的名称并选择 Machine pool 选项卡。
  4. 在 machine pool 页面中,从 Options 菜单中为目标集群池选择 Scale machine pool
  5. 选择您想要的机器集副本数量。机器集副本直接与集群中的节点映射。在点 Scale 后,更改可能需要几分钟时间来反映控制台。您可以从 Machine pool 选项卡的 notification 中点 View machine 来查看扩展操作的状态。
1.5.7.1.3.2. 使用命令行启用手动扩展

要使用命令行扩展 MachinePool 资源,请完成以下步骤:

  1. 输入以下命令查看您的机器池列表,将 < managed-cluster-namespace > 替换为目标受管集群命名空间的命名空间:

    oc get machinepools -n <managed-cluster-namespace>
  2. 输入以下命令为机器池编辑 YAML 文件:

    oc edit machinepool <MachinePool-resource-name> -n <managed-cluster-namespace>
    • MachinePool-resource-name 替换为 MachinePool 资源的名称。
    • managed-cluster-namespace 替换为受管集群的命名空间的名称。
  3. 从 YAML 文件中删除 spec.autoscaling 字段。
  4. 使用您想要的副本数修改 YAML 文件中的 spec.replicas 字段。
  5. 保存文件以提交更改。

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 集群和受管集群配置集群代理附加组件,请完成以下步骤:

  1. 通过完成以下步骤,配置 kubeconfig 文件以访问受管集群 kube-apiserver

    1. 为受管集群提供有效的访问令牌。

      注: 您可以使用服务帐户的对应令牌。您还可以使用位于 default 命名空间中的 default 服务帐户。

      1. 运行以下命令导出受管集群的 kubeconfig 文件:

        export KUBECONFIG=<managed-cluster-kubeconfig>
      2. 在服务帐户中添加一个角色,允许它通过运行以下命令来访问 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
      3. 运行以下命令来查找服务帐户令牌的 secret:

        oc get secret -n default | grep <default-token>

        default-token 替换为您的 secret 的名称。

      4. 运行以下命令复制令牌:

        export MANAGED_CLUSTER_TOKEN=$(kubectl -n default get secret <default-token> -o jsonpath={.data.token} | base64 -d)

        default-token 替换为您的 secret 的名称。

    2. 在 Red Hat Advanced Cluster Management hub 集群中配置 kubeconfig 文件。

      1. 运行以下命令,在 hub 集群中导出当前的 kubeconfig 文件:

        oc config view --minify --raw=true > cluster-proxy.kubeconfig
      2. 使用编辑器修改 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
      3. 输入以下命令删除原始用户凭证:

        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
      4. 添加服务帐户的令牌:

        sed -i'' -e '$a\    token: '"$MANAGED_CLUSTER_TOKEN"'' cluster-proxy.kubeconfig
  2. 运行以下命令,列出目标受管集群的目标命名空间中的所有 pod:

    oc get pods --kubeconfig=cluster-proxy.kubeconfig -n <default>

    default 命名空间替换为您要使用的命名空间。

  3. 访问受管集群中的其他服务。当受管集群是 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
  4. 使用以下命令获取受管集群的 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 模板的详情,请完成控制台中的步骤:

  1. 从导航中选择 Infrastructure > Automation
  2. 选择适用于您的问题单的适用路径:

    • 如果要创建新模板,请单击 Create Ansible template 并继续第 3 步。
    • 如果要修改现有模板,请在要修改的模板的 Options 菜单中点击 Edit template,然后继续第 5 步。
  3. 输入模板的唯一名称,其中包含小写字母数字字符或连字符(-)。
  4. 选择您要用于新模板的凭据。要将 Ansible 凭证链接到 Ansible 模板,请完成以下步骤:

    1. 在导航中,选择 Automation。任何未链接到凭证的模板列表中的模板都包含可用于将模板链接到现有凭证的 Link to credential 图标。仅显示与模板相同的命名空间中的凭证。
    2. 如果没有可以选择的凭证,或者您不想使用现有凭证,请从您要链接的模板的 Options 菜单中选择 Edit template
    3. 如果需要创建自己的凭证,点 Add credential 并完成为 Ansible Automation Platform 创建一个凭证中的步骤。
    4. 在与模板相同的命名空间中创建凭据后,在编辑模板时,在 Ansible Automation Platform credential 字段中选择凭据。
  5. 如果要在安装集群前启动任何 Ansible 作业,在 Pre-install Automation templates 部分中选择 Add an Automation template
  6. 选择或输入 prehook 和 posthook Ansible 作业的名称,以添加到集群的安装或升级中。

    注: Automation 模板 名称必须与 Ansible Automation Platform 上的 Ansible 作业的名称匹配。

  7. 如有必要,拖动 Ansible 作业以更改顺序。
  8. 对于您要在 Post-install Automation templates 部分、Pre-upgrade Automation templatesPost-upgrade Automation templates 部分安装集群后启动的任何自动化模板,重复步骤 5 - 7。

您的 Ansible 模板已配置为在集群中运行,在指定操作发生时指定此模板。

1.5.9.4. 查看 Ansible 作业的状态

您可以查看正在运行的 Ansible 作业的状态,以确保它启动并在成功运行。要查看正在运行的 Ansible 作业的当前状态,请完成以下步骤:

  1. 在菜单中,选择 Infrastructure > Clusters 以访问 Clusters 页面。
  2. 选择集群名称来查看其详情。
  3. 在集群信息上查看 Ansible 作业最后一次运行的状态。该条目显示以下状态之一:

    • 当安装 prehook 或 posthook 任务失败时,集群状态会显示 Failed
    • 当升级 prehook 或 posthook 任务失败时,会在 Distribution 字段中显示升级失败的警告信息。

      提示: 如果集群 prehook 或 posthook 失败,您可以从 Clusters 页面重试升级。

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:

声明名称保留可变描述

id.k8s.io

true

false

在上游社区定义的 ClusterID

kubeversion.open-cluster-management.io

true

true

Kubernetes 版本

platform.open-cluster-management.io

true

false

运行受管集群的平台,如 AWS、GCE 和 Equinix Metal

product.open-cluster-management.io

true

false

产品名称,如 OpenShift、Anthos、EKS 和 GKE

id.openshift.io

false

false

OpenShift Container Platform 外部 ID,它仅适用于 OpenShift Container Platform 集群

consoleurl.openshift.io

false

true

管理控制台的 URL,仅适用于 OpenShift Container Platform 集群

version.openshift.io

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
    inst