1.8. 将目标受管集群导入到 hub 集群

您可以从不同的 Kubernetes 云供应商导入集群。导入后,目标集群就成为 Red Hat Advanced Cluster Management for Kubernetes hub 集群的受管集群。除非另有指定,否则在可以访问 hub 集群和目标受管集群的任意位置完成导入任务。

hub 集群无法管理任何其他 hub 集群,但可以管理自己。hub 集群被配置为自动导入和自助管理。您不需要手动导入 hub 集群。

但是,如果您删除 hub 集群并尝试再次导入它,则需要添加 local-cluster:true 标签。

从以下说明中进行选择以通过控制台或 CLI 设置受管集群:

所需的用户类型或访问权限级别:集群管理员

1.8.1. 使用控制台导入现有集群

安装 Red Hat Advanced Cluster Management for Kubernetes 后,就可以导入集群来进行管理。您可以从控制台和 CLI 导入。按照以下步骤从控制台导入。在此过程中,您需要通过终端来进行身份验证。

1.8.1.1. 先决条件

  • 您需要一个已部署的 Red Hat Advanced Cluster Management for Kubernetes hub 集群。如果要导入裸机集群,则必须在 Red Hat OpenShift Container Platform 版本 4.6 或更高版本上安装了 hub 集群。
  • 您需要一个要管理的集群,以及互联网连接。
  • 安装 kubectl。要安装 kubectl,请参阅 Kubernetes 文档中的安装和设置 kubectl
  • 您需要一个要管理的集群,以及互联网连接。
  • 您需要 base64 命令行工具。
  • 如果您导入不是由 Red Hat OpenShift Container Platform 创建的集群,则需要定义一个 multiclusterhub.spec.imagePullSecret。安装 Red Hat Advanced Cluster Management for Kubernetes 时可能已创建此 secret。如需有关定义 secret 的更多信息,请参阅从 OperatorHub 安装
  • 确保您要导入的集群中已删除代理。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 权限才能使用 Red Hat Advanced Cluster Management for Kubernetes 导入和管理集群。

所需的用户类型或访问权限级别:集群管理员

1.8.1.2. 导入集群

您可以从 Red Hat Advanced Cluster Management for Kubernetes 控制台中为每个可用的云供应商导入现有集群。

注: hub 集群无法管理不同的 hub 集群。hub 集群被设置为自动导入和管理自身,因此您不必手动导入 hub 集群来管理自己。

  1. 在导航菜单中选择 Infrastructure > Clusters
  2. Add a cluster
  3. 点击 Import an existing cluster
  4. 为集群提供名称。默认情况下,命名空间用于集群名称和命名空间。
  5. 可选: 添加任何 附加标签

    注: 如果您导入 Red Hat OpenShift Dedicated 集群,且没有添加 vendor=OpenShiftDedicated 标签指定一个厂商,或者添加了 vendor=auto-detect 标签,则 managed-by=platform 标签会自动添加到集群中。您可以使用此添加标签将集群标识为一个 Red Hat OpenShift Dedicated 集群,并作为一个组来获取 Red Hat OpenShift Dedicated 集群。

  6. 选择您要用来标识从以下选项导入的集群的导入模式

    • 手动运行导入命令:根据您提供的信息生成可复制和运行的导入命令。点 Save import and generate code 生成用于部署 open-cluster-management-agent-addon 的命令。此时会显示确认信息。

      1. Import an existing cluster 窗口中,选择 Copy 命令将生成的命令和令牌复制到剪贴板。

        重要:命令中包含复制到每个导入集群的 pull secret 信息。具有访问导入集群权限的所有用户都可以查看 pull secret 信息。考虑在 https://cloud.redhat.com/ 创建一个二级 pull secret,或创建一个服务帐户来保护个人凭证。如需了解更多与 pull secret 相关的信息,请参阅使用镜像 pull secret了解并创建服务帐户

      2. 登录到您要导入的受管集群。
      3. 对于 Red Hat OpenShift Dedicated 环境,完成以下步骤:

        1. 创建 open-cluster-management-agentopen-cluster-management 命名空间或受管集群上的项目。
        2. 在 OpenShift Container Platform 目录中找到 klusterlet Operator。
        3. open-cluster-management 命名空间中或您创建的项目中安装它。

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

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

          1. 生成导入命令:

            1. 从 Red Hat Advanced Cluster Management 控制台主导航中选择 Infrastructure > Clusters
            2. 选择 Add a cluster > Import an existing cluster
            3. 添加集群信息,选择 Save import and generate code
          2. 复制导入命令。
          3. 将导入命令粘贴到您创建的名为 import-command 的文件中。
          4. 运行以下命令以将内容插入新文件中:

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

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

      4. 对于不在 Red Hat OpenShift Dedicated 环境中的集群导入,请完成以下步骤:

        1. 如有必要,为您的受管集群配置 kubectl 命令。

          请参阅支持的云以了解如何配置 kubectl 命令行界面。

        2. 要将 open-cluster-management-agen-addon 部署到受管集群,请运行您复制的命令和令牌。
      5. 选择 View clusterOverview 页面中查看集群概述。
    • 为现有集群输入服务器 URL 和 API 令牌 :提供您要导入的集群的服务器 URL 和 API 令牌。
    • kubeconfig :复制并粘贴您要导入的集群 kubeconfig 文件的内容。
  7. 可选: 在集群详情页中配置 Cluster API address,它为运行 oc get managedcluster 命令时在表中显示的 URL。

    1. 使用具有 cluster-admin 权限的 ID 登录到 hub 集群。
    2. 为目标受管集群配置 kubectl

      请参阅支持的云了解如何配置 kubectl

    3. 输入以下命令编辑您要导入的集群的受管集群条目:

      oc edit managedcluster <cluster-name>

      使用受管集群的名称替换 cluster-name

    4. 在 YAML 文件中的 ManagedCluster spec 中添加 ManagedClusterClientConfigs,如下例所示:

      spec:
        hubAcceptsClient: true
        managedClusterClientConfigs:
        - url: https://multicloud-console.apps.new-managed.dev.redhat.com

      将 URL 值替换为提供对您要导入的受管集群的外部访问的 URL。

集群已导入。您可以选择 Import another 来导入另一个。

1.8.1.3. 删除导入的集群

完成以下步骤以删除导入的集群以及在受管集群上创建的 open-cluster-management-agent-addon

  1. Clusters 页面的表中查找您导入的集群。
  2. 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 主题。