搜索

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

download PDF

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

推荐的操作

详情和链接

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.