第 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.5 或更高版本上安装了 hub 集群。
- 您需要一个要管理的集群,以及互联网连接。
-
安装
kubectl。要安装kubectl,请参阅 Kubernetes 文档中的安装和设置 kubectl。
-
您需要
base64命令行工具。 对于在 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 集群来管理自己。
- 从导航菜单中,将鼠标悬停在 Automate 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的命令。此时会显示确认信息。 可选:通过配置运行
oc get managedcluster命令时在表中显示的 URL,在集群详情页面中配置 Cluster API 地址。-
使用具有
cluster-admin权限的 ID 登录到 hub 集群。 为目标受管集群配置
kubectl。请参阅支持的云了解如何配置
kubectl。输入以下命令编辑您要导入的集群的受管集群条目:
oc edit managedcluster <cluster-name>
oc edit managedcluster <cluster-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用受管集群的名称替换
cluster-name。在 YAML 文件中的
ManagedClusterspec 中添加ManagedClusterClientConfigs,如下例所示:spec: hubAcceptsClient: true managedClusterClientConfigs: - url: https://multicloud-console.apps.new-managed.dev.redhat.com
spec: hubAcceptsClient: true managedClusterClientConfigs: - url: https://multicloud-console.apps.new-managed.dev.redhat.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 URL 值替换为提供对您要导入的受管集群的外部访问的 URL。
-
使用具有
在 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 控制台主导航中选择 Automate infrastructure > Clusters。
- 选择 Add a cluster > Import an existing cluster。
- 添加集群信息,选择 Save import and generate code。
- 复制导入命令。
-
将导入命令粘贴到您创建的名为
import-command的文件中。 根据您的 Red Hat Advanced Cluster Management 版本 2.2.x,运行以下命令之一来解码导入命令:
如果您运行的是升级的 Red Hat Advanced Cluster Management 版本 2.2.x 的 z-stream 版本(例如,2.2.2)请运行以下命令:
cat import-command | awk '{split($0,a,"&&"); print a[3]}' | awk '{split($0,a,"|"); print a[1]}' | sed -e "s/^ echo //" | sed 's/\"//g' | base64 -dcat import-command | awk '{split($0,a,"&&"); print a[3]}' | awk '{split($0,a,"|"); print a[1]}' | sed -e "s/^ echo //" | sed 's/\"//g' | base64 -dCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您的 Red Hat Advanced Cluster Management 版本 2.2 没有升级到更新的 z-stream 版本(例如,运行 2.2.0 版本),请运行以下命令:
cat import-command | awk '{split($0,a,"&&"); print a[3]}' | awk '{split($0,a,"|"); print a[1]}' | sed -e "s/^ echo //" | base64 -dcat import-command | awk '{split($0,a,"&&"); print a[3]}' | awk '{split($0,a,"|"); print a[1]}' | sed -e "s/^ echo //" | base64 -dCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
在输出中找到并复制名为
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 页面中查看集群概述。
集群已导入。您可以选择 Import another 来导入另一个。
8.1.3. 删除导入的集群 复制链接链接已复制到粘贴板!
完成以下步骤以删除导入的集群以及在受管集群上创建的 open-cluster-management-agent-addon。
- 在 Clusters 页面的表中查找您导入的集群。
- 点 Actions > Detach cluster 从管理中删除集群。
备注:如果您试图分离名为 local-cluster 的 hub 集群,请注意 disableHubSelfManagement 的默认设置为 false。此设置会导致 hub 集群在分离时会重新导入自己并管理自己,并协调 MultiClusterHub 控制器。hub 集群可能需要几小时时间来完成分离过程并重新导入。如果要在等待进程完成后重新导入 hub 集群,您可以输入以下命令来重启 multiclusterhub-operator pod 并更快地重新导入:
oc delete po -n open-cluster-management `oc get pod -n open-cluster-management | grep multiclusterhub-operator| cut -d' ' -f1`
oc delete po -n open-cluster-management `oc get pod -n open-cluster-management | grep multiclusterhub-operator| cut -d' ' -f1`
您可以通过将 disableHubSelfManagement 值改为 true 来更改 hub 集群的值,如在线安装所述。