第 8 章 将目标受管集群导入到 hub 集群
您可以从不同的 Kubernetes 云供应商导入集群。导入后,目标集群就成为 Red Hat Advanced Cluster Management for Kubernetes hub 集群的受管集群。除非另有指定,否则在可以访问 hub 集群和目标受管集群的任意位置完成导入任务。
hub 集群无法管理任何其他 hub 集群,但可以管理自己。hub 集群被配置为自动导入和自助管理。您不需要手动导入 hub 集群。
但是,如果您删除 hub 集群并尝试再次导入它,则需要添加 local-cluster:true
标签。
从以下说明中进行选择以通过控制台或 CLI 设置受管集群:
所需的用户类型或访问权限级别:集群管理员
8.1. 使用控制台导入现有集群
安装 Red Hat Advanced Cluster Management for Kubernetes 后,就可以导入集群来进行管理。您可以从控制台和 CLI 导入。按照以下步骤从控制台导入。在此过程中,您需要通过终端来进行身份验证。
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 安装。 用于在 Red Hat OpenShift Dedicated 环境中导入:
- 您必须在 Red Hat OpenShift Dedicated 环境中部署了 hub 集群。
-
Red Hat OpenShift Dedicated 的默认权限是 dedicated-admin,但不包含创建命名空间的所有权限。您必须具有
cluster-admin
权限才能使用 Red Hat Advanced Cluster Management for Kubernetes 导入和管理集群。
所需的用户类型或访问权限级别:集群管理员
8.1.2. 导入集群
您可以从 Red Hat Advanced Cluster Management for Kubernetes 控制台中为每个可用的云供应商导入现有集群。
注: hub 集群无法管理不同的 hub 集群。hub 集群被设置为自动导入和管理自身,因此您不必手动导入 hub 集群来管理自己。
- 在导航菜单中选择 Infrastructure > Clusters。
- 点 Add a cluster。
- 点击 Import an existing cluster。
- 为集群提供名称。默认情况下,命名空间用于集群名称和命名空间。
可选: 添加任何 附加标签。
注: 如果您导入 Red Hat OpenShift Dedicated 集群,且没有添加
vendor=OpenShiftDedicated
标签指定一个厂商,或者添加了vendor=auto-detect
标签,则managed-by=platform
标签会自动添加到集群中。您可以使用此添加标签将集群标识为一个 Red Hat OpenShift Dedicated 集群,并作为一个组来获取 Red Hat OpenShift Dedicated 集群。选择您要用来标识从以下选项导入的集群的导入模式 :
手动运行导入命令:根据您提供的信息生成可复制和运行的导入命令。点 Save import and generate code 生成用于部署
open-cluster-management-agent-addon
的命令。此时会显示确认信息。在 Import an existing cluster 窗口中,选择 Copy 命令将生成的命令和令牌复制到剪贴板。
重要:命令中包含复制到每个导入集群的 pull secret 信息。具有访问导入集群权限的所有用户都可以查看 pull secret 信息。考虑在 https://cloud.redhat.com/ 创建一个二级 pull secret,或创建一个服务帐户来保护个人凭证。如需了解更多与 pull secret 相关的信息,请参阅使用镜像 pull secret 或了解并创建服务帐户。
- 登录到您要导入的受管集群。
对于 Red Hat OpenShift Dedicated 环境,完成以下步骤:
-
创建
open-cluster-management-agent
和open-cluster-management
命名空间或受管集群上的项目。 - 在 OpenShift Container Platform 目录中找到 klusterlet Operator。
在
open-cluster-management
命名空间中或您创建的项目中安装它。重要: 不要在
open-cluster-management-agent
命名空间中安装 Operator。通过完成以下步骤,从导入命令中提取 bootstrap secret:
生成导入命令:
- 从 Red Hat Advanced Cluster Management 控制台主导航中选择 Infrastructure > Clusters。
- 选择 Add a cluster > Import an existing cluster。
- 添加集群信息,选择 Save import and generate code。
- 复制导入命令。
-
将导入命令粘贴到您创建的名为
import-command
的文件中。 运行以下命令以将内容插入新文件中:
cat import-command | awk '{split($0,a,"&&"); print a[3]}' | awk '{split($0,a,"|"); print a[1]}' | sed -e "s/^ echo //" | base64 -d
-
在输出中找到并复制名为
bootstrap-hub-kubeconfig
的 secret。 -
将 secret 应用到受管集群上的
open-cluster-management-agent
命名空间。 使用安装的 Operator 中的示例创建 klusterlet 资源,clusterName 应该与导入过程中设置的集群名称相同。
注: 当
managedcluster
资源在 hub 中成功注册时,会安装两个 klusterlet operator。一个 klusterlet operator 位于open-cluster-management
命名空间中,另一个位于open-cluster-management-agent
命名空间中。多个 operator 并不会影响 klusterlet 的功能。
-
创建
对于不在 Red OpenShift Dedicated 环境中的集群导入,完成以下步骤:
如有必要,为您的受管集群配置
kubectl
命令。请参阅支持的云以了解如何配置
kubectl
命令行界面。-
要将
open-cluster-management-agen-addon
部署到受管集群,请运行您复制的命令和令牌。
- 选择 View cluster 在 Overview 页面中查看集群概述。
- 为现有集群输入服务器 URL 和 API 令牌 :提供您要导入的集群的服务器 URL 和 API 令牌。
-
kubeconfig :复制并粘贴您要导入的集群
kubeconfig
文件的内容。
可选: 在集群详情页中配置 Cluster API address,它为运行
oc get managedcluster
命令时在表中显示的 URL。-
使用具有
cluster-admin
权限的 ID 登录到 hub 集群。 为目标受管集群配置
kubectl
。请参阅支持的云了解如何配置
kubectl
。输入以下命令编辑您要导入的集群的受管集群条目:
oc edit managedcluster <cluster-name>
使用受管集群的名称替换
cluster-name
。在 YAML 文件中的
ManagedCluster
spec 中添加ManagedClusterClientConfigs
,如下例所示:spec: hubAcceptsClient: true managedClusterClientConfigs: - url: https://multicloud-console.apps.new-managed.dev.redhat.com
将 URL 值替换为提供对您要导入的受管集群的外部访问的 URL。
-
使用具有
集群已导入。您可以选择 Import another 来导入另一个。
8.1.3. 删除导入的集群
完成以下步骤以删除导入的集群以及在受管集群上创建的 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 集群的值,如在线安装所述。