1.3. 在线安装

Red Hat Advanced Cluster Management for Kubernetes 通过 Operator Lifecycle Manager 安装,它管理安装、升级和删除包含 Red Hat Advanced Cluster Management hub 集群的组件。

在开始前,请查看 要求和建议 部分,然后参阅以下文档:

需要的访问权限:集群管理员。OpenShift Container Platform Dedicated 环境需要访问权限:您必须具有 cluster-admin 权限。默认情况下,dedicated-admin 角色没有在 OpenShift Container Platform Dedicated 环境中创建命名空间所需的权限。

  • 默认情况下,hub 集群组件安装在 OpenShift Container Platform 集群的 worker 节点上,无需额外配置。您可以使用 OpenShift Container Platform OperatorHub Web 控制台界面或使用 OpenShift Container Platform CLI 将 hub 集群安装到 worker 节点上。
  • 如果您使用基础架构节点配置了 OpenShift Container Platform 集群,您可以使用带有其他资源参数的 OpenShift Container Platform CLI 将 hub 集群安装到这些基础架构节点上。详情请参阅在基础架构节点上安装 Red Hat Advanced Cluster Management hub 集群部分。
  • 如果您计划导入不是由 OpenShift Container Platform 或 Red Hat Advanced Cluster Management 创建的 Kubernetes 集群,则需要配置镜像 pull secret。

有关如何配置高级配置的详情,请查看文档中的 MultiClusterHub 高级配置部分中的选项。

1.3.1. 先决条件

在安装 Red Hat Advanced Cluster Management 前,请查看以下要求:

  • 您的 Red Hat OpenShift Container Platform 集群必须通过 OpenShift Container Platform 控制台访问 OperatorHub 目录中的 Red Hat Advanced Cluster Management operator。
  • 您需要访问 catalog.redhat.com
  • OpenShift Container Platform 版本 4.8 或更高版本必须部署到您的环境中,且必须通过 OpenShift Container Platform CLI 登录。OpenShift Container Platform 版本 4.8 或更高版本必须部署到您的环境中,且必须通过 OpenShift Container Platform CLI 登录。如需了解 OpenShift Container Platform 的以下安装文档,并改为更早的版本:OpenShift Container Platform 版本 4.10
  • 您的 OpenShift Container Platform 命令行界面(CLI)被配置为运行 oc 命令。如需有关安装和配置 OpenShift Container Platform CLI 的信息,请参阅 CLI 入门
  • OpenShift Container Platform 权限必须允许创建命名空间。如果没有命名空间,安装将失败。
  • 需要有一个互联网连接来访问 Operator 的依赖项。
  • 重要:要在 OpenShift Container Platform Dedicated 环境中安装,请参阅以下要求:

    • 您必须已配置并运行了 OpenShift Container Platform Dedicated 环境。
    • 您必须在要安装 hub 集群的 OpenShift Container Platform Dedicated 环境中具有 cluster-admin 授权。
    • 要导入,必须使用 klusterlet Operator 的 stable-2.0 频道进行 2.5。

1.3.2. 确认 OpenShift Container Platform 安装

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

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

    kubectl -n openshift-console get route

    请参见以下示例输出:

    openshift-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

您可以使用控制台或 CLI 继续运行 Red Hat Advanced Cluster Management。这两个流程都已被记录在文档中。

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

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

  1. 选择 Operators > OperatorHub 以访问可用操作器列表,然后选择 Advanced Cluster Management for Kubernetes operator。
  2. Operator subscription 页中,选择安装选项:

    • 命名空间信息:

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

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

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

  3. 选择 Install 以应用您的更改并创建 Operator。
  4. 创建 MultiClusterHub 自定义资源。

    1. 在 OpenShift Container Platform 控制台导航中,选择 Installed Operators > Advanced Cluster Management for Kubernetes
    2. 选择 MultiClusterHub 标签页。
    3. 选择 Create MultiClusterHub
    4. 更新 YAML 文件中的默认值。请参阅文档中的 MultiClusterHub 高级配置 部分中的选项。

      • 下例显示了默认模板。确认 namespace 是项目的命名空间。请参阅以下示例:
      apiVersion: operator.open-cluster-management.io/v1
      kind: MultiClusterHub
      metadata:
        name: multiclusterhub
        namespace: <namespace>
  5. 选择 Create 来初始化自定义资源。Red Hat Advanced Cluster Management hub 集群最多可能需要 10 分钟才能构建和启动。

    创建 Red Hat Advanced Cluster Management hub 集群后,MultiClusterHub 资源状态会在 Red Hat Advanced Cluster Management operator 的 MultiClusterHub 标签页中显示 Running。现在,您可以访问 Red Hat Advanced Cluster Management hub 集群的控制台。请参见以下步骤:

  6. 在 OpenShift Container Platform 控制台导航中,选择 Networking > Routes
  7. 在列表中查看 Red Hat Advanced Cluster Management hub 集群的 URL,并导航到它以访问控制台。

1.3.4. 通过 OpenShift Container Platform CLI 安装

  1. 创建一个包含 Operator 要求的 Red Hat Advanced Cluster Management hub 集群命名空间。运行以下命令,其中 namespace 是 Red Hat Advanced Cluster Management hub 集群命名空间的名称。在 OpenShift Container Platform 环境中,namespace 的值可能被称为 Project(项目)

    oc create namespace <namespace>
  2. 将项目命名空间切换到您创建的命名空间。使用在第 1 步中创建的 Red Hat Advanced Cluster Management hub 集群命名空间的名称替换 namespace

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

    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: <default>
    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: acm-operator-subscription
    spec:
      sourceNamespace: openshift-marketplace
      source: redhat-operators
      channel: release-2.5
      installPlanApproval: Automatic
      name: advanced-cluster-management

    注: 要在基础架构节点上安装 Red Hat Advanced Cluster Management hub 集群,请参阅 Operator Lifecycle Manager 订阅附加配置 部分。

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

    oc apply -f <path-to-file>/<subscription>.yaml
  7. 创建一个 YAML 文件来配置 MultiClusterHub 自定义资源。您的默认模板应当类似于以下示例。将 namespace 替换为项目命名空间的名称:

    apiVersion: operator.open-cluster-management.io/v1
    kind: MultiClusterHub
    metadata:
      name: multiclusterhub
      namespace: <namespace>
    spec: {}

    注: 要在基础架构节点上安装 Red Hat Advanced Cluster Management hub 集群,请参阅 MultiClusterHub 自定义资源附加配置 部分:

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

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

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

    error: unable to recognize "./mch.yaml": no matches for kind "MultiClusterHub" in version "operator.open-cluster-management.io/v1"
  9. 运行以下命令来获取自定义资源。在运行命令后,MultiClusterHub 自定义资源状态可能需要最多 10 分钟才能在 status.phase 字段中显示为 Running

    oc get mch -o=jsonpath='{.items[0].status.phase}'
  10. 状态变为 Running 后,查看查找路由的路由列表:

    oc get routes

如果您重新安装 Red Hat Advanced Cluster Management,且 pod 没有启动,请参阅对安装失败进行故障排除以了解解决这个问题的步骤。

备注:

  • 具有 ClusterRoleBindingServiceAccount 会自动向 Red Hat Advanced Cluster Management 以及有权访问安装 Red Hat Advanced Cluster Management 的命名空间的用户凭证授予集群管理员特权。
  • 安装还会创建一个名为 local-cluster 的命名空间,该命名空间在由自身管理时为 Red Hat Advanced Cluster Management hub 集群保留。因此,不能已存在名为 local-cluster 的命名空间。为安全起见,请不要将 local-cluster 命名空间的访问权限授予任何尚未具有 cluster-administrator 访问权限的用户。

1.3.5. 在基础架构节点上安装 Red Hat Advanced Cluster Management hub 集群

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

将基础架构节点添加到 OpenShift Container Platform 集群后,请遵循 OpenShift Container Platform CLI 指令的安装,并将配置添加到 Operator Lifecycle Manager 订阅和 MultiClusterHub 自定义资源中。

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

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

要与 Red Hat Advanced Cluster Management 提供的基础架构节点启用兼容,请确保您的基础架构节点应用了以下 污点标签

metadata:
  labels:
    node-role.kubernetes.io/infra: ""
spec:
  taints:
  - effect: NoSchedule
    key: node-role.kubernetes.io/infra

1.3.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.5.3. MultiClusterHub 自定义资源附加配置

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

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