1.4. 使用多集群引擎 operator 的集群生命周期发行注记
了解新功能、增强功能、支持、弃用、删除和勘误程序错误修复。
重要: OpenShift Container Platform 发行注记没有包括在此文档中。对于 OpenShift Container Platform 集群,请参阅 OpenShift Container Platform 发行注记。git Deprecated: multicluster engine operator 2.3 及更早的版本不再被支持。文档可能仍然可用,但没有任何勘误或其他更新。
最佳实践: 升级到最新版本。
- 除非仅在最新版本的 OpenShift Container Platform 上引入并测试特定组件或功能,否则文档会参考最早支持的 OpenShift Container Platform 版本。
- 有关完全支持信息,请参阅 multicluster engine operator 支持列表。如需生命周期信息,请参阅 Red Hat OpenShift Container Platform 生命周期政策。
- 如果您在当前支持的某个版本或产品文档时遇到问题,请访问 红帽支持,您可以在其中进行故障排除、查看知识库文章、与支持团队连接,或创建一个问题单。您必须使用您的凭证登录。
- 您还可以访问红帽客户门户文档,Red Hat Customer Portal FAQ。
1.4.1. 使用多集群引擎 operator 的集群生命周期新功能
了解在不同基础架构云供应商、私有云和内部数据中心的创建、导入、管理和销毁 Kubernetes 集群的新功能。
有关完全支持信息,请参阅 multicluster engine operator 支持列表。如需生命周期信息,请参阅 Red Hat OpenShift Container Platform 生命周期政策。
重要: 集群管理现在支持所有通过云原生计算基础(CNCF) Kubernetes 一致性计划认证的供应商。为您的混合云多集群管理选择 CNFC 可识别的供应商。
请参阅以下有关使用 CNFC 供应商的信息:
- 了解 CNFC 如何通过认证的 Kubernetes 一致性进行认证。
- 有关 CNFC 第三方供应商的信息,请参阅红帽 与第三方组件的支持,或 联系红帽支持。
-
如果您具有自己的 CNFC 一致性认证集群,您需要将 OpenShift Container Platform CLI
oc
命令改为 Kubernetes CLI 命令kubectl
。
1.4.1.1. 组件的新功能和增强
了解有关特定组件的新功能的更多信息。
注意: 一些功能和组件 作为技术预览 发布。
重要: 托管 control plane 文档现在包括在 OpenShift Container Platform 文档中。请参阅 OpenShift Container Platform 文档中的 托管 control plane 概述。
如果您使用 multicluster engine operator 2.6 及更早版本,则托管的 control plane 文档位于 Red Hat Advanced Cluster Management 产品文档中。请参阅 Red Hat Advanced Cluster Management Hosted control plane。
1.4.1.2. 集群管理
了解 multicluster engine operator 的集群生命周期的新功能和增强。
-
现在,您可以设置一个持续时间来选择 klusterlet 清单中的
kubeconfig
bootstrap 何时过期。如需更多信息,请参阅 导入集群。 - 现在,您可以在将 Assisted Installer 安装的受管集群从一个 hub 集群移动到另一个 hub 集群后,导入所有集群资源并继续使用它们。如需更多信息,请参阅 导入集群资源。
- 现在,您可以使用服务帐户凭证连接到 OpenShift Cluster Manager。如需更多信息,请参阅为 Red Hat OpenShift Cluster Manager 创建凭证。
- 现在,您可以在导入受管集群时指定 CA 捆绑包。如需更多信息,请参阅 导入受管集群(技术预览)时自定义 hub 集群 API 服务器的服务器 URL 和 CA 捆绑包。
-
现在,您可以手动配置 hub 集群
KubeAPIServer
验证策略。如需更多信息,请参阅配置 hub 集群KubeAPIServer
验证策略
1.4.2. 使用多集群引擎 Operator 的集群生命周期的勘误更新
对于多集群引擎 operator,勘误更新会在发布时自动应用。
如果没有列出发行注记,则该产品目前没有勘误版本。
重要: 为了便于参考,JIRA 链接和 JIRA 号可能会添加到内容中并在内部使用。用户可能不能使用访问的链接。
1.4.2.1. Errata 2.7.3
- 为一个或多个产品容器镜像提供更新。
1.4.2.2. Errata 2.7.2
1.4.2.3. Errata 2.7.1
- 为一个或多个产品容器镜像提供更新。
1.4.3. 使用多集群引擎 Operator 的集群生命周期的已知问题和限制
查看 multicluster engine operator 的集群生命周期 的已知问题和限制,或从上一版本中继续存在的已知问题。
集群管理已知问题和限制是 multicluster engine operator 文档的集群生命周期 的一部分。与 Red Hat Advanced Cluster Management 集成的 {mce-short 的已知问题记录在 Red Hat Advanced Cluster Management 发行注记中。
重要: OpenShift Container Platform 发行注记没有包括在此文档中。对于 OpenShift Container Platform 集群,请参阅 OpenShift Container Platform 发行注记。
1.4.3.1. 安装
了解在 multicluster engine operator 安装过程中已知的问题和限制。
1.4.3.1.1. 在带有托管 control plane 集群的 OpenShift Service on AWS 上安装时,状态会卡住
当在带有托管 control plane 集群的 OpenShift Service 上安装 multicluster engine operator 时,安装状态可能会处于 Installing
状态。local-cluster
可能也处于 Unknown
状态。
当您检查 hub 集群上的 open-cluster-management-agent
命名空间中的 klusterlet-agent
pod 日志时,您会看到类似如下的错误:
E0809 18:45:29.450874 1 reflector.go:147] k8s.io/client-go@v0.29.4/tools/cache/reflector.go:229: Failed to watch *v1.CertificateSigningRequest: failed to list *v1.CertificateSigningRequest: Get "https://api.xxx.openshiftapps.com:443/apis/certificates.k8s.io/v1/certificatesigningrequests?limit=500&resourceVersion=0": tls: failed to verify certificate: x509: certificate signed by unknown authority
要解决这个问题,请配置 hub 集群 API 服务器验证策略。完成以下步骤:
-
如果
KlusterletConfig
资源不存在,则创建一个名为global
的 KlusterletConfig 资源。 将
spec.hubKubeAPIServerConfig.serverVerificationStrategy
设置为UseSystemTruststore
。请参见以下示例:apiVersion: config.open-cluster-management.io/v1alpha1 kind: KlusterletConfig metadata: name: global spec: hubKubeAPIServerConfig: serverVerificationStrategy: UseSystemTruststore
通过在 hub 集群中运行以下命令来应用资源。将
<filename
> 替换为您的文件的名称:oc apply -f <filename>
如果
local-cluster
状态在一分钟内没有恢复,请在 hub 集群中运行以下命令来导出并解码import.yaml
文件:oc get secret local-cluster-import -n local-cluster -o jsonpath={.data.import\.yaml} | base64 --decode > import.yaml
在 hub 集群中运行以下命令来应用该文件:
oc apply -f import.yaml
1.4.3.1.2. installNamespace 字段只能有一个值
启用 managed-serviceaccount
附加组件时,ManagedClusterAddOn
资源中的 installNamespace
字段必须有 open-cluster-management-agent-addon
值。其他值将被忽略。managed-serviceaccount
附加组件代理总是在受管集群上的 open-cluster-management-agent-addon
命名空间中部署。
1.4.3.2. Cluster
了解 multicluster engine operator 的集群生命周期的已知问题和限制,如创建、发现、导入和删除集群的问题,以及 multicluster engine operator 的更多集群管理问题。
1.4.3.2.1. nmstate的限制
通过配置复制和粘贴功能来加快开发速度。要在 assisted-installer
中配置 copy-from-mac
功能,您必须将 mac-address
添加到 nmstate
定义接口和 mac-mapping
接口。mac-mapping
接口在 nmstate
定义接口之外提供。因此,您必须提供相同的 mac-address
两次。
如果您安装了不同版本的 VolSync,请将 v0.6.0
替换为您的安装版本。
1.4.3.2.2. 删除受管集群集不会自动删除其标签
删除 ManagedClusterSet
后,添加到每个受管集群的标签不会被自动删除。从已删除受管集群集中包含的每个受管集群手动删除该标签。该标签类似以下示例:cluster.open-cluster-management.io/clusterset:<ManagedClusterSet Name>
。
1.4.3.2.3. ClusterClaim 错误
如果您针对 ClusterPool
创建 Hive ClusterClaim
并手动将 ClusterClaimspec
生命周期字段设置为无效的 golang 时间值,则产品将停止实现并协调所有 ClusterClaims
,而不仅仅是不正确的声明。
您在 clusterclaim-controller
pod 日志中看到以下错误,这是带有 PoolName
和无效生命周期的 特定示例
:
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.4.3.2.4. 产品频道与置备的集群不同步
clusterimageset
处于 fast
频道,但置备的集群处于 stable
频道。目前,产品不会将 频道
同步到置备的 OpenShift Container Platform 集群。
进入 OpenShift Container Platform 控制台中的正确频道。点 Administration > Cluster Settings > Details Channel。
1.4.3.2.5. 在创建内部集群时需要选择子网
使用控制台创建内部集群时,您必须为集群选择一个可用的子网。它没有标记为必填字段。
1.4.3.2.6. 在代理环境中使用 Ansible 自动化进行集群置备失败
当满足以下条件时,配置为自动置备受管集群的 Automation 模板可能会失败:
- hub 集群启用了集群范围代理。
- Ansible Automation Platform 只能通过代理访问。
1.4.3.2.7. 无法手动删除受管集群命名空间
您无法手动删除受管集群的命名空间。受管集群命名空间会在受管集群分离后自动删除。如果在分离受管集群前手动删除受管集群命名空间,受管集群会在删除受管集群后显示持续终止状态。要删除此正在终止的受管集群,请从分离的受管集群中手动删除终结器。
1.4.3.2.8. 不支持为置备的集群进行自动 secret 更新
当您在云供应商一端更改云供应商访问密钥时,您还需要在 multicluster engine operator 的控制台中更新此云供应商的对应凭证。当凭证在托管受管集群的云供应商过期并尝试删除受管集群时,需要此项。
1.4.3.2.9. 销毁集群的进程没有完成
当销毁受管集群时,在一小时后仍然继续显示 Destroying
状态,且集群不会被销毁。要解决这个问题请完成以下步骤:
- 手动确保云中没有孤立的资源,,且清理与受管集群关联的所有供应商资源。
输入以下命令为正在删除的受管集群打开
ClusterDeployment
:oc edit clusterdeployment/<mycluster> -n <namespace>
将
mycluster
替换为您要销毁的受管集群的名称。使用受管集群的命名空间替换
namespace
。-
删除
hive.openshift.io/deprovision
finalizer,以强制停止尝试清理云中的集群资源的进程。 -
保存您的更改,验证
ClusterDeployment
是否已不存在。 运行以下命令手动删除受管集群的命名空间:
oc delete ns <namespace>
使用受管集群的命名空间替换
namespace
。
1.4.3.2.10. 无法使用控制台在 OpenShift Container Platform Dedicated 上升级 OpenShift Container Platform 受管集群
您不能使用 Red Hat Advanced Cluster Management 控制台升级 OpenShift Container Platform Dedicated 环境中的 OpenShift Container Platform 受管集群。
1.4.3.2.11. 工作管理器附加搜索详情
特定受管集群中特定资源的搜索详情页面可能会失败。在进行搜索前,您必须确保受管集群中的 work-manager 附加组件处于 Available
状态。
1.4.3.2.12. 非 OpenShift Container Platform 受管集群需要 ManagedServiceAccount 或 LoadBalancer 用于 pod 日志
在 Red Hat Advanced Cluster Management 版本 2.10 及更新的版本中默认启用 ManagedServiceAccount
和集群代理附加组件。如果升级后禁用了附加组件,您必须手动启用 ManagedServiceAccount
和集群代理附加组件,以便在非 OpenShift Container Platform 受管集群上使用 pod 日志功能。
请参阅 ManagedServiceAccount 附加组件 以了解如何启用 ManagedServiceAccount
和使用集群代理附加组件 以了解如何启用集群代理附加组件。
1.4.3.2.13. OpenShift Container Platform 4.10.z 不支持使用代理配置托管的 control plane 集群
当您在 OpenShift Container Platform 4.10.z 上使用集群范围代理配置创建托管服务集群时,nodeip-configuration.service
服务不会在 worker 节点上启动。
1.4.3.2.14. 客户端无法访问 iPXE 脚本
iPXE 是开源网络引导固件。如需了解更多详细信息,请参阅 iPXE。
引导节点时,一些 DHCP 服务器中的 URL 长度限制会关闭 InfraEnv
自定义资源定义中的 ipxeScript
URL,从而导致在控制台中的以下错误消息:
no bootable devices
要临时解决这个问题,请完成以下步骤:
在使用辅助安装时应用
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.12/latest/rhcos-live-kernel-x86_64 rootfs: https://mirror.openshift.com/pub/openshift-v4/x86_64/dependencies/rhcos/4.12/latest/rhcos-live-rootfs.x86_64.img
-
创建代理服务器以使用短 URL 公开
bootArtifacts
。 运行以下命令复制
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
-
将
ipxeScript
工件代理 URL 添加到libvirt.xml
中的bootp
参数。
1.4.3.2.15. 升级 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.4.3.2.16. 受管集群在部署后处于 Pending 状态
聚合流是置备的默认过程。当您使用 Bare Metal Operator (BMO)将主机连接到 live ISO 时,Ironic Python 代理执行以下操作:
- 它运行裸机安装程序置备基础架构中的步骤。
- 它启动 Assisted Installer 代理,代理处理其余的安装和配置过程。
如果 Assisted Installer 代理启动缓慢,且部署受管集群,受管集群可能会处于 Pending
状态,且没有任何代理资源。您可以通过禁用聚合流来解决这个问题。
重要: 当您禁用聚合流时,只有 Assisted Installer 代理在 live ISO 中运行,减少打开的端口数量并禁用您在 Ironic Python 代理代理启用的任何功能,包括:
- 预置备磁盘清理
- iPXE 引导固件
- BIOS 配置
要决定要在不禁用聚合流的情况下启用或禁用哪些端口号,请参阅 网络配置。
要禁用聚合流,请完成以下步骤:
在 hub 集群中创建以下 ConfigMap:
apiVersion: v1 kind: ConfigMap metadata: name: my-assisted-service-config namespace: multicluster-engine data: ALLOW_CONVERGED_FLOW: "false" 1
- 1
- 当您将参数值设置为 "false" 时,您也会禁用 Ironic Python Agent 启用的任何功能。
运行以下命令来应用 ConfigMap:
oc annotate --overwrite AgentServiceConfig agent unsupported.agent-install.openshift.io/assisted-service-configmap=my-assisted-service-config
1.4.3.2.17. ManagedClusterSet API 规格限制
使用 Clustersets API 时不支持 selectorType: LaberSelector
设置。支持 selectorType: ExclusiveClusterSetLabel
设置。
1.4.3.2.18. Cluster curator 不支持 OpenShift Container Platform Dedicated 集群
当使用 ClusterCurator
资源升级 OpenShift Container Platform Dedicated 集群时,升级会失败,因为 Cluster curator 不支持 OpenShift Container Platform Dedicated 集群。
1.4.3.2.19. 自定义入口域无法正确应用
您可以在安装受管集群时使用 ClusterDeployment
资源指定自定义 ingress 域,但更改仅在使用 SyncSet
资源安装后才会生效。因此,clusterdeployment.yaml
文件中的 spec
字段显示您指定的自定义入口域,但 status
仍然会显示默认域。
1.4.3.2.20. ManagedClusterAddOn
状态会卡住
如果您在 ManagedClusterAddon
中定义配置来覆盖 ClusterManagementAddon
中的一些配置,则 ManagedClusterAddon
可能会处于以下状态:
progressing... mca and work configs mismatch
当您检查 ManagedClusterAddon
状态时,配置的一部分有一个空的 spec
哈希,即使配置存在。请参见以下示例:
status: conditions: - lastTransitionTime: "2024-09-09T16:08:42Z" message: progressing... mca and work configs mismatch reason: Progressing status: "True" type: Progressing ... configReferences: - desiredConfig: name: deploy-config namespace: open-cluster-management-hub specHash: b81380f1f1a1920388d90859a5d51f5521cecd77752755ba05ece495f551ebd0 group: addon.open-cluster-management.io lastObservedGeneration: 1 name: deploy-config namespace: open-cluster-management-hub resource: addondeploymentconfigs - desiredConfig: name: cluster-proxy specHash: "" group: proxy.open-cluster-management.io lastObservedGeneration: 1 name: cluster-proxy resource: managedproxyconfigurations
要解决这个问题,请运行以下命令来删除 ManagedClusterAddon
,以重新安装并恢复 ManagedClusterAddon
。将 <cluster-name&
gt; 替换为 ManagedClusterAddon
命名空间。将 <addon-name&
gt; 替换为 ManagedClusterAddon
名称:
oc -n <cluster-name> delete managedclusteraddon <addon-name>
1.4.3.3. 中央基础架构管理
1.4.3.3.1. 使用 Red Hat OpenShift 的 infrastructure operator 进行集群置备会失败
当使用 infrastructure operator for Red Hat OpenShift 创建 OpenShift Container Platform 集群时,ISO 镜像的文件名可能太长。镜像名称长会导致镜像置备和集群置备失败。要确定这是否是问题,请完成以下步骤:
运行以下命令,查看您要置备的集群的裸机主机信息:
oc get bmh -n <cluster_provisioning_namespace>
运行
describe
命令以查看错误信息:oc describe bmh -n <cluster_provisioning_namespace> <bmh_name>
类似以下示例的错误表示文件名的长度问题:
Status: Error Count: 1 Error Message: Image provisioning failed: ... [Errno 36] File name too long ...
如果出现这个问题,这通常位于以下 OpenShift Container Platform 版本中,因为 Red Hat OpenShift 的基础架构 Operator 不使用镜像服务:
- 4.8.17 及更早版本
- 4.9.6 及更早版本
为了避免这个错误,将 OpenShift Container Platform 升级到 4.8.18 或更高版本,或 4.9.7 或更高版本。
1.4.3.3.2. 无法使用主机清单来通过发现镜像引导,并自动添加主机
您不能使用主机清单或 InfraEnv
自定义资源来通过发现镜像进行两个引导,并自动添加主机。如果您将之前的 InfraEnv
资源用于 BareMetalHost
资源,并且希望自行引导镜像,您可以通过创建一个新的 InfraEnv
资源来解决此问题。
1.4.3.3.3. 单节点 OpenShift 集群安装需要与 Red Hat OpenShift 的基础架构 operator 匹配的 OpenShift Container Platform
如果要在 4.16 之前使用 Red Hat OpenShift Container Platform 版本安装单节点 OpenShift 集群,您的 InfraEnv
自定义资源和引导的主机必须使用相同的 OpenShift Container Platform 版本来安装单节点 OpenShift 集群。如果版本不匹配,安装会失败。
要临时解决这个问题,请在使用 Discovery ISO 引导主机前编辑 InfraEnv
资源,并包含以下内容:
apiVersion: agent-install.openshift.io/v1beta1 kind: InfraEnv spec: osImageVersion: 4.15
osImageVersion
字段必须与您要安装的 Red Hat OpenShift Container Platform 集群版本匹配。
1.4.3.3.4. tolerations 和 nodeSelector 设置不会影响 managed-serviceaccount 代理
在 MultiClusterEngine
和 MultiClusterHub
资源中配置的 tolerations
和 nodeSelector
设置不会影响本地集群中部署的 managed-serviceaccount
代理。本地集群中并不总是需要 managed-serviceaccount
附加组件。
如果需要 managed-serviceaccount
附加组件,您可以通过完成以下步骤来临时解决这个问题:
-
创建
addonDeploymentConfig
自定义资源。 -
为本地集群和
managed-serviceaccount
代理设置tolerations
和nodeSelector
值。 -
更新本地集群命名空间中的
managed-serviceaccount
ManagedClusterAddon
,以使用您创建的addonDeploymentConfig
自定义资源。
请参阅为 klusterlet 附加组件配置 nodeSelectors 和 tolerations,以了解如何使用 addonDeploymentConfig
自定义资源为附加组件配置 tolerations(容限)
和 nodeSelector
。
1.4.3.3.5. 在删除 BareMetalHost
资源后节点关闭
如果您从 hub 集群中删除 BareMetalHost
资源,节点会关闭。您可以再次手动打开节点电源。
1.4.4. 使用多集群引擎 Operator 弃用和删除集群生命周期
了解产品何时被弃用或从多集群引擎 operator 中删除。考虑推荐操作中的备选操作和详细信息,它们显示在当前版本的表中和之前两个版本。如果没有为该部分添加条目,则会删除表。
已弃用: 不再支持 multicluster engine operator 2.3 及更早的版本。文档可能仍然可用,但没有任何勘误或其他更新。
最佳实践: 升级到最新版本。
1.4.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.4.4.1.1. API 弃用
产品或类别 | 受影响的项 | Version | 推荐的操作 | 详情和链接 |
---|---|---|---|---|
ManagedServiceAccount |
| 2.4 |
使用 | None |
KlusterletConfig |
| 2.7 |
使用 | None |
KlusterletConfig |
| 2.7 |
使用 | None |
KlusterletConfig |
| 2.7 |
使用 | None |
1.4.4.2. 删除
一个删除(removed) 的项通常是在之前的版本中被弃用的功能,在该产品中不再可用。您必须将 alternatives 用于删除的功能。考虑使用推荐操作中的相应的替代操作,详情在下表中提供:
产品或类别 | 受影响的项 | Version | 推荐的操作 | 详情和链接 |
---|---|---|---|---|
集群生命周期 | 在 Red Hat Virtualization 上创建集群 | 2.6 | None | None |
集群生命周期 | klusterlet Operator Lifecycle Manager Operator | 2.6 | None | None |