1.3. 已知问题


检查应用程序管理的已知问题。以下列表包含本发行版本的已知问题,或从上一版本中继承的问题。

对于 Red Hat OpenShift Container Platform 集群,请参阅 OpenShift Container Platform 已知问题

有关弃用和删除的更多信息,请参阅弃用和删除

集群管理或 集群生命周期 由带有或没有 Red Hat Advanced Cluster Management 的多集群引擎 operator 提供。有关仅适用于 Red Hat Advanced Cluster Management 的集群管理,请参阅以下已知问题和限制。大多数已知的与集群管理相关的问题包括在 集群生命周期文档中

1.3.1. 已知的与安装相关的问题

查看安装和升级的已知问题。以下列表包含本发行版本的已知问题,或从上一版本中继承的问题。

对于 Red Hat OpenShift Container Platform 集群,请参阅 OpenShift Container Platform 已知问题

有关弃用和删除的更多信息,请参阅弃用和删除

如果稍后要安装早期版本,然后从 OpenShift Container Platform 卸载 Red Hat Advanced Cluster Management 可能会导致问题。例如,从 OpenShift Container Platform 卸载 Red Hat Advanced Cluster Management 时,安装早期版本的 Red Hat Advanced Cluster Management 并升级该版本,升级可能会失败。如果没有删除 StorageVersionMigration 自定义资源,升级会失败。

卸载 Red Hat Advanced Cluster Management 时,您需要在重新安装和升级前手动删除以前的 StorageVersionMigration

例如,如果您从 OpenShift Container Platform 卸载 Red Hat Advanced Cluster Management 2.10,以使用早期版本的 Red Hat Advanced Cluster Management,然后尝试再次升级到 2.10,除非删除 StorageVersionMigration 资源,否则升级会失败。

安装 infrastructure-operator 时,与 ARM 聚合流无法正常工作。将 ALLOW_CONVERGED_FLOW 设置为 false 以解决这个问题。

  1. 运行以下命令来创建 ConfigMap 资源:

    oc create -f
    Copy to Clipboard Toggle word wrap
  2. 运行 oc apply -f 以应用您的文件。请参阅以下文件示例,并将 ALLOW_CONVERGED_FLOW 设置为 false

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: my-assisted-service-config
      namespace: assisted-installer
    data:
      ALLOW_CONVERGED_FLOW: false
    Copy to Clipboard Toggle word wrap
  3. 使用以下命令注解 agentserviceconfig

    oc annotate --overwrite AgentServiceConfig agent unsupported.agent-install.openshift.io/assisted-service-configmap=my-assisted-service-config
    Copy to Clipboard Toggle word wrap

当问题解决时,代理会出现在清单中。

从 2.4.x 升级到 2.5.x,然后再升级到 2.6.x,受管集群命名空间中的已弃用资源可能会被保留。如果版本 2.6.x 从 2.4.x 升级,则需要手动删除这些已弃用的资源:

注: 在从 2.5.x 升级到 2.6.x 版本前,您需要等待 30 分钟或更长时间。

您可以从控制台中删除,也可以运行类似以下示例的命令,用于您要删除的资源:

oc delete -n <managed cluster namespace> managedclusteraddons.addon.open-cluster-management.io <resource-name>
Copy to Clipboard Toggle word wrap

查看可能保留的已弃用资源列表:

managedclusteraddons.addon.open-cluster-management.io:
policy-controller
manifestworks.work.open-cluster-management.io:
-klusterlet-addon-appmgr
-klusterlet-addon-certpolicyctrl
-klusterlet-addon-crds
-klusterlet-addon-iampolicyctrl
-klusterlet-addon-operator
-klusterlet-addon-policyctrl
-klusterlet-addon-workmgr
Copy to Clipboard Toggle word wrap

将 Red Hat Advanced Cluster Management 升级到新版本后,属于 StatefulSet 的少数 pod 可能会处于 failed 状态。这个问题不经常出现,是由一个已知的 Kubernetes 问题造成的。

这个问题的一个临时解决方案是删除失败的 pod。Kubernetes 会自动使用正确的设置重新启动它。

当 OpenShift Container Platform 集群处于升级阶段时,集群 Pod 会被重启,并且集群可能在大约 1 到 5 分钟之内会处于升级失败状态。这个行为是正常的,在几分钟后自动解决。

1.3.1.6. Create MultiClusterEngine 按钮无法正常工作

在 Red Hat OpenShift Container Platform 控制台中安装 Red Hat Advanced Cluster Management for Kubernetes 后,会出现一个带有以下信息的弹出窗口:

MultiClusterEngine required

创建一个 MultiClusterEngine 实例来使用这个 Operator。

弹出窗口中的 Create MultiClusterEngine 按钮可能无法正常工作。要临时解决这个问题,在 Provided APIs 部分的 MultiClusterEngine 标题中选择 Create instance

1.3.2. 已知的业务连续问题

查看 Red Hat Advanced Cluster Management for Kubernetes 中的已知问题。以下列表包含本发行版本的已知问题,或从上一版本中继承的问题。

对于 Red Hat OpenShift Container Platform 集群,请参阅 OpenShift Container Platform 已知问题

有关弃用和删除的更多信息,请参阅弃用和删除

1.3.2.1. 备份和恢复已知问题

此处列出了备份和恢复已知问题和限制,如果可用,以及临时解决方案。

Red Hat Advanced Cluster Management 2.10.4 将 OpenShift API 用于数据保护(OADP) 1.4,它对 OpenShift Container Platform 4.13 的支持有限。要使用支持的备份和恢复功能,请使用 Red Hat Advanced Cluster Management for Kubernetes 2.10.4 时移至 OpenShift Container Platform 4.14 或更高版本。

当您备份 Red Hat Advanced Cluster Management hub 集群时,卸载它,在同一集群中重新安装它,然后恢复它,cluster-proxy-addon 无法正常工作。您会看到 pod 日志中的以下出错信息:

E0430 19:11:20.810624 1 clientset.go:188] "cannot connect once" err="rpc error: code = Unavailable desc = connection error: desc = \"transport: authentication handshake failed: tls: failed to verify certificate: x509: certificate signed by unknown authority\""
Copy to Clipboard Toggle word wrap

要解决这个问题,请完成以下步骤:

  1. 运行以下命令禁用 cluster-proxy-addon

    oc patch mce multiclusterengine --type=merge -p '{"spec":{"overrides":{"components":[
    
    {"name":"cluster-proxy-addon","enabled": false}
    ]}}}'
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令重新安装 cluster-proxy-addon

    oc patch mce multiclusterengine --type=merge -p '{"spec":{"overrides":{"components":[
    
    {"name":"cluster-proxy-addon","enabled": true}
    ]}}}'
    Copy to Clipboard Toggle word wrap

当在 MultiClusterHub 资源中禁用 cluster-backup 组件时,如果您有一个由 Red Hat Advanced Cluster Management 恢复操作创建的 Velero 恢复资源,open-cluster-management-backup 命名空间将处于 Terminating 状态。

Terminating 状态是 Velero 恢复资源等待 restore. velero.io/external-resources-finalizer 的结果。要解决这个问题,请完成以下步骤:

  1. 删除所有 Red Hat Advanced Cluster Management 恢复资源,并等待在 MultiClusterHub 资源中禁用集群备份选项前清理 Velero 恢复。
  2. 如果您的 open-cluster-management-backup 命名空间已处于 Terminating 状态,请编辑所有 Velero 恢复资源并删除终结器。
  3. 允许 Velero 资源删除命名空间和资源。

如果使用 Red Hat Advanced Cluster Management 备份和恢复功能,则裸机集群会备份并恢复到辅助 hub 集群,则受管集群会在节点上重新安装,这会销毁现有受管集群。

注: 这只会影响使用零接触置备部署的裸机集群,这意味着它们有 BareMetalHost 资源来管理打开和关闭裸机节点,并附加虚拟介质引导。如果受管集群部署中没有使用 BareMetalHost 资源,则没有负面影响。

要临时解决这个问题,主 hub 集群上的 BareMetalHost 资源不再使用受管集群备份备份。

如果您有不同的用例,并且希望主 hub 集群上的受管 BareMetalHost 资源被备份,请将以下备份标签添加到主 hub 集群上的 BareMetalHost 资源中: cluster.open-cluster-management.io/backup

要了解有关使用此备份标签备份通用资源的更多信息,请参阅 备份 的资源 主题。

启用 Red Hat Advanced Cluster Management 备份和恢复组件并成功创建 DataProtectionApplication 资源后,会创建一个 BackupStorageLocation 资源,状态为 Available。当您使用 OADP 版本 1.1.2 或更高版本时,您可能会在创建 BackupSchedule 资源后收到以下信息,其状态为 FailedValidation

oc get backupschedule -n open-cluster-management-backup
NAME PHASE MESSAGE
rosa-backup-schedule FailedValidation Backup storage location is not available. Check velero.io.BackupStorageLocation and validate storage credentials.
Copy to Clipboard Toggle word wrap

此错误是由 BackupStorageLocation 资源中的 ownerReference 缺少的值造成的。DataProtectionApplication 资源的值应用作 ownerReference 的值。

要临时解决这个问题,请手动将 ownerReference 添加到 BackupStorageLocation 中:

  1. 运行以下命令,打开 oadp-operator.v1.1.2 文件:

    oc edit csv -n open-cluster-management-backup oadp-operator.v1.1.2
    Copy to Clipboard Toggle word wrap
  2. 通过将 1 替换为 OADP operator CSV 中的 0 来编辑 spec.deployments.label.spec.replicas 的值。
  3. 对 YAML 脚本中的 ownerReference 注解进行补丁,如下例所示:

    metadata:
    resourceVersion: '273482'
    name: dpa-sample-1
    uid: 4701599a-cdf5-48ac-9264-695a95b935a0
    namespace: open-cluster-management-backup
    ownerReferences: <<
    
    apiVersion: oadp.openshift.io/v1alpha1
    blockOwnerDeletion: true
    controller: true
    kind: DataProtectionApplication
    name: dpa-sample
    uid: 52acd151-52fd-440a-a846-95a0d7368ff7
    Copy to Clipboard Toggle word wrap
  4. spec.deployments.label.spec.replicas 的值改回到 1,以使用新设置启动数据保护应用进程。
1.3.2.1.6. Velero 恢复限制

如果在其中恢复数据的新 hub 集群有用户创建的资源,则这个新的 hub 集群可能会有与活跃的 hub 集群不同的配置。例如,在将备份的数据恢复到新的 hub 集群中之前,在这个新的 hub 集群上可能已包括了一个现存的策略。

如果不是恢复的备份的一部分,Velero 会跳过现存的资源,因此新 hub 集群上的策略不会改变,这会导致新 hub 集群和活跃 hub 集群之间的不同配置。

为解决这个问题,集群备份和恢复 Operator 可以运行一个恢复后的操作以清理由用户创建的资源,或在 restore.cluster.open-cluster-management.io 资源时执行不同的恢复操作。

如需更多信息 ,请参阅安装备份和恢复 Operator 主题

1.3.2.1.7. 被动配置不显示受管集群

只有在被动 hub 集群上恢复激活数据时,才会显示受管集群。

1.3.2.1.8. 未恢复受管集群资源

当您恢复 local-cluster 受管集群资源的设置并覆盖新 hub 集群中的 local-cluster 数据时,设置会被错误配置。上一个 hub 集群 local-cluster 的内容没有备份,因为资源包含 local-cluster 特定信息,如集群 URL 详情。

您必须在恢复集群中手动应用与 local-cluster 资源相关的配置更改。请参阅 安装备份和恢复 Operator 主题 中的 准备新的 hub 集群

当您为 Hive 受管集群恢复更改或轮转颁发机构 (CA) 的备份时,受管集群将无法连接到新的 hub 集群。连接会失败,因为此受管集群的 admin kubeconfig secret 通过备份提供,所以不再有效。

您必须在新 hub 集群中手动更新受管集群的恢复的 admin kubeconfig secret。

在主 hub 集群上手动导入的受管集群会在被动 hub 集群上恢复激活数据时显示一个 Pending Import 状态。如需更多信息,请参阅使用受管服务帐户连接集群

当在新 hub 集群上恢复 hub 集群数据时,appliedmanifestwork 不会从没有固定集群集的应用程序订阅的放置规则的受管集群中删除。

有关不是固定集群集的应用程序订阅,请参阅以下放置规则示例:

spec:
  clusterReplicas: 1
  clusterSelector:
    matchLabels:
      environment: dev
Copy to Clipboard Toggle word wrap

因此,当受管集群从恢复的 hub 集群分离时,应用程序会被孤立。

要避免这个问题,请在放置规则中指定固定的集群集。请参见以下示例:

spec:
  clusterSelector:
    matchLabels:
      environment: dev
Copy to Clipboard Toggle word wrap

您还可以通过运行以下命令来手动删除剩余的 appliedmanifestwork

oc delete appliedmanifestwork <the-left-appliedmanifestwork-name>
Copy to Clipboard Toggle word wrap

当您将 Red Hat Advanced Cluster Management 2.6 用作主 hub 集群时,但您的恢复 hub 集群位于 2.7 或更高版本的版本时,appliedmanifestworks 规格中缺少 agentID,因为此字段在 2.7 发行版本中引入。这会为受管集群上的主 hub 生成额外的 appliedmanifestworks

要避免这个问题,请将主 hub 集群升级到 Red Hat Advanced Cluster Management 2.7,然后在新的 hub 集群中恢复备份。

通过为每个 appliedmanifestwork 手动设置 spec.agentID 来修复受管集群。

  1. 运行以下命令来获取 agentID

    oc get klusterlet klusterlet -o jsonpath='{.metadata.uid}'
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令,为每个 appliedmanifestwork 设置 spec.agentID

    oc patch appliedmanifestwork <appliedmanifestwork_name> --type=merge -p '{"spec":{"agentID": "'$AGENT_ID'"}}'
    Copy to Clipboard Toggle word wrap

如果您使用 Managed Service Account,则受管集群 appliedmanifestwork addon-managed-serviceaccount-deploy 会从导入的受管集群中删除,而无需在新 hub 集群的 multicluster engine for Kubernetes operator 资源中启用它。

受管集群仍然导入到新的 hub 集群,但 managed-serviceaccount add-on 状态显示 Unknown

在 multicluster engine operator 资源中启用 Managed Service Account 后,您可以恢复 managed-serviceaccount 附加组件。请参阅启用自动导入以了解如何启用受管服务帐户。

1.3.3. 已知的控制台问题

查看控制台的已知问题。以下列表包含本发行版本的已知问题,或从上一版本中继承的问题。

对于 Red Hat OpenShift Container Platform 集群,请参阅 OpenShift Container Platform 已知问题

有关弃用和删除的更多信息,请参阅弃用和删除

1.3.3.1. 无法在控制台中升级 OpenShift Dedicated

从控制台中,您可以请求 OpenShift Dedicated 集群的升级,但升级会失败,并显示 Cannot upgrade non openshift cluster 错误信息。目前没有临时解决方案。

search-postgres pod 处于 CrashLoopBackoff 状态。如果 Red Hat Advanced Cluster Management 部署到启用了 hugepages 参数的节点,并且 search-postgres pod 调度到这些节点中,则 pod 不会启动。

完成以下步骤以增加 search-postgres pod 的内存:

  1. 使用以下命令暂停 search-operator pod:

    oc annotate search search-v2-operator search-pause=true
    Copy to Clipboard Toggle word wrap
  2. 使用对 hugepages 参数的限制更新 search-postgres 部署。运行以下命令,将 hugepages 参数设置为 512Mi

    oc patch deployment search-postgres --type json -p '[{"op": "add", "path": "/spec/template/spec/containers/0/resources/limits/hugepages-2Mi", "value":"512Mi"}]'
    Copy to Clipboard Toggle word wrap
  3. 在验证 pod 的内存用量前,请确保您的 search-postgres pod 处于 Running 状态。运行以下命令:

    oc get pod <your-postgres-pod-name>  -o jsonpath="Status: {.status.phase}"
    Copy to Clipboard Toggle word wrap
  4. 运行以下命令,以验证 search-postgres pod 的内存用量:

    oc get pod <your-postgres-pod-name> -o jsonpath='{.spec.containers[0].resources.limits.hugepages-2Mi}'
    Copy to Clipboard Toggle word wrap

出现以下值 :512Mi

1.3.3.3. 无法编辑集群集的命名空间绑定

当使用 admin 角色或 bind 角色编辑集群集的命名空间绑定时,您可能会遇到类似以下消息的错误:

ResourceError: managedclustersetbindings.cluster.open-cluster-management.io "<cluster-set>" is forbidden: User "<user>" cannot create/delete resource "managedclustersetbindings" in API group "cluster.open-cluster-management.io" in the namespace "<namespace>".

要解决这个问题,请确保还有权在您要绑定的命名空间中创建或删除 ManagedClusterSetBinding 资源。角色绑定只允许将集群集绑定到命名空间。

置备托管的 control plane 集群后,如果 ClusterVersionUpgradeable 参数太长,您可能无法在 Red Hat Advanced Cluster Management 控制台的集群概述中水平滚动。因此,您无法查看隐藏的数据。

要临时解决这个问题,请使用浏览器缩放控制来缩放,增加 Red Hat Advanced Cluster Management 控制台窗口大小,或者复制文本并将其粘贴到不同的位置。

1.3.3.5. EditApplicationSet 扩展功能重复

当您添加多个标签表达式或尝试为 ApplicationSet 输入集群选择器时,您可能会重复收到以下信息,"Expand to enter expression"。尽管出现这个问题,您可以输入集群选择。

1.3.4. 已知的与应用程序相关的问题和限制

检查应用程序管理的已知问题。以下列表包含本发行版本的已知问题,或从上一版本中继承的问题。

对于 Red Hat OpenShift Container Platform 集群,请参阅 OpenShift Container Platform 已知问题

有关弃用和删除的更多信息,请参阅弃用和删除

请参阅以下对应用程序生命周期组件的已知问题。

如果您有 OpenShift Container Platform 4.17,则搜索 serviceaccount 缺少一些权限,需要以用户身份运行。因此,Argo CD pull 模型资源同步控制器无法从搜索 API 访问应用程序资源列表。

要临时解决这个问题,请完成以下步骤:

  1. 运行以下命令来修补搜索 clusterRole

     oc patch clusterrole search --type='json' -p='[{"op":"add", "path":"/rules/-", "value": {"verbs":["impersonate"], "apiGroups":["authentication.k8s.io"], "resources":["userextras/authentication.kubernetes.io/credential-id", "userextras/authentication.kubernetes.io/node-name", userextras/authentication.kubernetes.io/node-uid]}}]'
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令来停止 search-api pod:

    oc scale deployment search-api -n open-cluster-management --replicas=0
    Copy to Clipboard Toggle word wrap
  3. 运行以下命令来启动 search-api pod:

    oc scale deployment search-api -n open-cluster-management  --replicas=1
    Copy to Clipboard Toggle word wrap

注: Red Hat Advanced Cluster Management 支持(OpenShift Container Platform 3.11 已被弃用。

创建以 OpenShift Container Platform 3.11 集群为目标的订阅应用程序后,应用程序拓扑会显示错误用于 ReplicaSetPod 资源,因为 Kubernetes 中的一个缺陷。这个缺陷是 pod-template-hashReplicaSetPod 资源名称中的哈希不匹配的位置。更新的 Kubernetes 版本已被修正,但 OpenShift Container Platform 3.11 不会被修复。详情请参阅 Kubernetes 错误参考

由于这个程序错误,拓扑可能无法反映资源的状态。例如,podreplicaset 不会反映,但这些资源存在。

  • 请参阅以下受管集群命令和 pod 的输出:

    oc get pod -n test-helloworld
    Copy to Clipboard Toggle word wrap
    NAME                                     READY   STATUS    RESTARTS   AGE
    helloworld-app-deploy-596765ff66-ndrv8   1/1     Running   0          20m
    Copy to Clipboard Toggle word wrap
  • 请参阅以下受管集群命令和 replicaset 的输出:

    oc get replicaset -n test-helloworld
    Copy to Clipboard Toggle word wrap
    NAME                               DESIRED   CURRENT   READY   AGE
    helloworld-app-deploy-596765ff66   1         1         1       20m
    Copy to Clipboard Toggle word wrap

应用程序附加组件组件使用 Kubernetes Lease API ,leases.coordination.k8s.io,OpenShift Container Platform 3.11 用户缺少这个组件。Kubernetes 1.14 中引入了 Kubernetes Lease API,但 OpenShift Container Platform 3.11 捆绑包 Kubernetes 版本 1.11。

要解决这个问题,手动将以下 Kubernetes Lease API CustomResourceDefinition 应用到 OpenShift Container Platform 3.11 受管集群:

apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: leases.coordination.k8s.io
spec:
  group: coordination.k8s.io
  names:
    kind: Lease
    listKind: LeaseList
    plural: leases
    singular: lease
    shortNames:
    - ls
  scope: Namespaced
  versions:
  - name: v1
    served: true    storage: true    schema:
      openAPIV3Schema:
        description: Lease defines a lease concept.
        type: object
        properties:
          apiVersion:
            type: string
          kind:
            type: string
          metadata:
            type: object
          spec:
            type: object
            properties:
              acquireTime:
                format: date-time
                type: string
              holderIdentity:
                type: string
              leaseDurationSeconds:
                format: int64
                type: integer
              leaseTransitions:
                format: int64
                type: integer
              renewTime:
                format: date-time
                type: string
            required:
            - holderIdentity
            - leaseDurationSeconds
            - renewTime
        required:
        - kind
        - metadata
        - spec
  additionalPrinterColumns:
  - JSONPath: .metadata.creationTimestamp
    name: Age
    type: date
  subresources:
    status: {}
Copy to Clipboard Toggle word wrap

注: Red Hat Advanced Cluster Management 支持(OpenShift Container Platform 3.11 已被弃用。

1.3.4.4. 服务帐户没有自动 secret

当您在 Red Hat OpenShift Container Platform 4.15 中创建服务帐户时,一些云供应商(如 IBM VMware 和 Bare Metal)置备的服务帐户时,帐户不会自动创建 secret。因此,Red Hat Advanced Cluster Management gitopsCluster 控制器无法为 Argo CD push 模型生成受管集群 secret。

此问题不会在 AWS 置备的 Red Hat OpenShift Container Platform 4.15 中发生。但是,这个问题可能会在由其他云供应商置备的 Red Hat OpenShift Container Platform 4.15 中发生。这个问题在 Red Hat Advanced Cluster Management 2.10.3 中以及 Red Hat Advanced Cluster Management 2.9.4 中提供。

要解决这个问题,您必须手动创建一个 secret,并将其附加到服务帐户 open-cluster-management-agent-addon/application-manager。要做到这一点,请完成以下步骤:

  1. 登录到受管集群。
  2. 运行以下 secret 模板来创建 secret:

    apiVersion: v1
    kind: Secret
    metadata:
      name: application-manager-dockercfg
      namespace: open-cluster-management-agent-addon
      annotations:
        kubernetes.io/service-account.name: application-manager
        openshift.io/token-secret.name: application-manager-dockercfg
        openshift.io/token-secret.value: application-manager-dockercfg
    type: kubernetes.io/service-account-token
    Copy to Clipboard Toggle word wrap
  3. 运行以下命令,从创建的 secret 检索令牌:

    % oc get secrets -n open-cluster-management-agent-addon application-manager-dockercfg -o yaml
    data:
      token: <token1>
    Copy to Clipboard Toggle word wrap
  4. 运行以下命令来解码 data.token

    echo <token1 copied from data.token> |base64 -d
    Copy to Clipboard Toggle word wrap
  5. 运行以下命令,将令牌更新至创建的 secret 注解:

    % oc edit secrets -n open-cluster-management-agent-addon application-manager-dockercfg
    metadata:
      annotations:
        openshift.io/token-secret.value: <paste the decoded token>
    Copy to Clipboard Toggle word wrap
  6. 运行以下命令,将修改后的 secret 链接到您的服务帐户:

    % oc edit sa -n open-cluster-management-agent-addon application-manager
    ....
    secrets:
    - name: application-manager-dockercfg
    Copy to Clipboard Toggle word wrap

要验证您是否已成功创建了 secret 并将其附加到服务帐户,请完成以下步骤:

  1. 进入 hub 集群中的集群命名空间。
  2. 运行以下命令验证集群 secret 是否生成:

    % oc get secrets -n perf5 perf5-cluster-secret
    NAME                   TYPE     DATA   AGE
    perf5-cluster-secret   Opaque   3      7m40s
    Copy to Clipboard Toggle word wrap

创建引用 PlacementRule 资源的订阅应用程序后,控制台的 YAML 不会在 YAML 编辑器中显示。使用您的终端编辑订阅 YAML 文件。

使用 Helm Chart,您可以在 Kubernetes secret 中定义隐私数据,并在 Helm Chart 的 value.yaml 文件中引用此 secret。

用户名和密码由引用的 Kubernetes secret 资源 dbsecret 提供。例如,请参阅以下 value.yaml 文件示例:

credentials:
  secretName: dbsecret
  usernameSecretKey: username
  passwordSecretKey: password
Copy to Clipboard Toggle word wrap

带有 secret 依赖项的 Helm Chart 只在 Helm 二进制 CLI 中被支持。operator SDK Helm 库不支持它。Red Hat Advanced Cluster Management 订阅控制器应用 operator SDK Helm 库来安装和升级 Helm Chart。因此,Red Hat Advanced Cluster Management 订阅无法使用 secret 依赖项部署 Helm Chart。

无法为 OpenShift Container Platform 3.11 受管集群上的 Argo CD Push 模型创建自定义集群 secret。这是因为 OpenShift Container Platform 3.11 受管集群不支持受管服务帐户附加组件。

当您使用 Argo CD pull 模型来部署 ApplicationSet 应用程序,且应用程序资源名称会被自定义时,每个集群的资源名称可能会有所不同。当发生这种情况时,拓扑无法正确显示您的应用程序。

hub 集群应用程序集部署到目标受管集群,但本地集群(一个受管 hub 集群)作为目标受管集群排除。

因此,如果 Argo CD 应用程序由 Argo CD pull 模型传播到本地集群,则不会清理本地集群 Argo CD 应用程序,即使本地集群已从 Argo CD ApplicationSet 资源的放置决定中删除。

要临时解决这个问题并清理本地集群 Argo CD 应用程序,请从本地集群 Argo CD 应用程序中删除 skip-reconcile 注解。请参阅以下注解:

annotations:
    argocd.argoproj.io/skip-reconcile: "true"
Copy to Clipboard Toggle word wrap

另外,如果您在 Argo CD 控制台的 Applications 部分手动刷新 pull model Argo CD 应用程序,则不会处理刷新,Argo CD 控制台中的 REFRESH 按钮被禁用。

要临时解决这个问题,请从 Argo CD 应用程序中删除 refresh 注解。请参阅以下注解:

annotations:
    argocd.argoproj.io/refresh: normal
Copy to Clipboard Toggle word wrap

Argo CD 控制器和传播控制器可能会在同一应用程序资源上协调,并导致受管集群中应用程序部署的重复实例,但来自不同部署模型。

对于使用 pull 模型部署应用程序,当 Argo CD argocd.argoproj.io/skip-reconcile 注解添加到 ApplicationSet 的 template 部分时,Argo CD 控制器会忽略这些应用程序资源。

argocd.argoproj.io/skip-reconcile 注解仅适用于 GitOps operator 版本 1.9.0 或更高版本。为防止冲突,请等待 hub 集群和所有受管集群都升级到 GitOps operator 版本 1.9.0,然后再实施 pull 模型。

1.3.4.11. 资源无法部署

MulticlusterApplicationSetReport 中列出的所有资源实际上都部署到受管集群中。如果资源无法部署,则资源不包含在资源列表中,但原因会在错误消息中列出。

1.3.4.12. 资源分配可能需要几分钟时间

对于超过 1000 个受管集群和 Argo CD 应用程序集的大型环境,部署到数百个受管集群,hub 集群上的 Argo CD 应用程序创建可能需要几分钟时间。您可以在应用程序集的 clusterDecisionResource 生成器中将 requeueAfterSeconds 设置为 zero,如下例所示:

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: cm-allclusters-app-set
  namespace: openshift-gitops
spec:
  generators:
  - clusterDecisionResource:
      configMapRef: ocm-placement-generator
      labelSelector:
        matchLabels:
          cluster.open-cluster-management.io/placement: app-placement
      requeueAfterSeconds: 0
Copy to Clipboard Toggle word wrap

您不能在 subscription-admin 角色中使用 ObjectBucket 频道类型指定 allow 和 deny 列表。在其他频道类型中,订阅中的 allow 和 deny 列表表示可以部署哪些 Kubernetes 资源,以及不应部署哪些 Kubernetes 资源。

控制台中的 Argo ApplicationSet 无法部署到 3.x OpenShift Container Platform 受管集群,因为 Infrastructure.config.openshift.io API 在 3.x 上不可用。

在受管集群中运行的 application-manager 附加组件现在由 subscription operator 处理,后者之前由 klusterlet operator 处理。订阅 operator 没有管理 multicluster-hub,因此对 multicluster-hub 镜像清单 ConfigMap 中的 multicluster_operators_subscription 镜像的更改不会自动生效。

如果订阅 operator 使用的镜像通过更改 multicluster-hub 镜像清单 ConfigMap 中的 multicluster_operators_subscription 镜像覆盖,则受管集群中的 application-manager add-on 不会使用新镜像,直到订阅 operator pod 重启为止。您需要重启 pod。

1.3.4.15. 除非根据订阅管理员部署策略资源

对于 Red Hat Advanced Cluster Management 版本 2.4,默认情况下,policy.open-cluster-management.io/v1 资源不再被应用程序订阅部署。

订阅管理员需要部署应用程序订阅以更改此默认行为。

如需更多信息,请参阅以订阅管理员身份创建允许和拒绝列表。在之前的 Red Hat Advanced Cluster Management 版本中,由现有应用程序订阅部署的 policy.open-cluster-management.io/v1 资源仍然保留,除非应用程序订阅由订阅管理员部署。

1.3.4.16. 应用程序 Ansible hook 独立模式

不支持 Ansible hook 独立模式。要使用订阅在 hub 集群上部署 Ansible hook,您可以使用以下订阅 YAML:

apiVersion: apps.open-cluster-management.io/v1
kind: Subscription
metadata:
  name: sub-rhacm-gitops-demo
  namespace: hello-openshift
annotations:
  apps.open-cluster-management.io/github-path: myapp
  apps.open-cluster-management.io/github-branch: master
spec:
  hooksecretref:
      name: toweraccess
  channel: rhacm-gitops-demo/ch-rhacm-gitops-demo
  placement:
     local: true
Copy to Clipboard Toggle word wrap

但是,此配置可能永远不会创建 Ansible 实例,因为 spec.placement.local:true 有以 standalone 模式运行的订阅。您需要在 hub 模式中创建订阅。

  1. 创建部署到 local-cluster 的放置规则。请参阅以下示例,其中 local-cluster: "true" 代表 hub 集群:

    apiVersion: apps.open-cluster-management.io/v1
    kind: PlacementRule
    metadata:
      name: <towhichcluster>
      namespace: hello-openshift
    spec:
      clusterSelector:
        matchLabels:
          local-cluster: "true"
    Copy to Clipboard Toggle word wrap
  2. 在您的订阅中引用该放置规则。请参见以下示例:

    apiVersion: apps.open-cluster-management.io/v1
    kind: Subscription
    metadata:
      name: sub-rhacm-gitops-demo
      namespace: hello-openshift
    annotations:
      apps.open-cluster-management.io/github-path: myapp
      apps.open-cluster-management.io/github-branch: master
    spec:
      hooksecretref:
          name: toweraccess
      channel: rhacm-gitops-demo/ch-rhacm-gitops-demo
      placement:
         placementRef:
            name: <towhichcluster>
            kind: PlacementRule
    Copy to Clipboard Toggle word wrap

应用两者后,您应该看到 hub 集群中创建的 Ansible 实例。

如果应用程序在更新放置规则后没有部署,请验证 application-manager pod 是否正在运行。application-manager 是需要在受管集群上运行的订阅容器。

您可以运行 oc get pods -n open-cluster-management-agent-addon |grep application-manager 来验证。

您还可以在控制台中搜索 kind:pod cluster:yourcluster 来查看 application-manager 是否在运行。

如果无法验证,请尝试再次导入集群并重新验证。

1.3.4.18. Subscription operator 不会创建一个 SCC

如需了解更多与 Red Hat OpenShift Container Platform SCC 相关的信息,请参阅 管理 Security Context Constraints (SCC)。它是受管集群所需的一个额外的配置。

不同的部署有不同的安全性上下文和不同的服务帐户。订阅 operator 无法自动创建 SCC CR。pod 的管理员控制权限。需要一个安全性上下文约束(SCC)CR,以便为相关服务帐户启用适当的权限,以便在非默认命名空间中创建 pod。要手动在命名空间中创建 SCC CR,完成以下操作:

  1. 找到在部署中定义的服务帐户。例如,查看以下 nginx 部署:

    nginx-ingress-52edb
    nginx-ingress-52edb-backend
    Copy to Clipboard Toggle word wrap
  2. 在命名空间中创建 SCC CR 为服务帐户或帐户分配所需的权限。请参见以下示例,其中添加了 kind: SecurityContextConstraints

    apiVersion: security.openshift.io/v1
     defaultAddCapabilities:
     kind: SecurityContextConstraints
     metadata:
       name: ingress-nginx
       namespace: ns-sub-1
     priority: null
     readOnlyRootFilesystem: false
     requiredDropCapabilities:
     fsGroup:
       type: RunAsAny
     runAsUser:
       type: RunAsAny
     seLinuxContext:
       type: RunAsAny
     users:
     - system:serviceaccount:my-operator:nginx-ingress-52edb
     - system:serviceaccount:my-operator:nginx-ingress-52edb-backend
    Copy to Clipboard Toggle word wrap

1.3.4.19. 应用程序频道需要唯一的命名空间

在同一命名空间中创建多个频道可能会导致 hub 集群出现错误。

例如,安装程序将命名空间 charts-v1 作为 Helm 类型频道使用,因此不要在 charts-v1 中创建任何其他频道。确保您在唯一命名空间中创建频道。所有频道需要单独的命名空间,但 GitHub 频道除外,它们可与另一个 GitHub 频道共享命名空间。

1.3.4.20. Ansible Automation Platform 作业失败

当您选择不兼容的选项时,Ansible 作业无法运行。只有选择了 -cluster 范围内的频道选项时,Ansible Automation Platform 才起作用。这会影响需要执行 Ansible 作业的所有组件。

Red Hat Ansible Automation Platform Operator 无法访问启用了代理的 OpenShift Container Platform 集群之外的 Ansible Automation Platform。要解决这个问题,您可以在代理中安装 Ansible Automation Platform。请参阅 Ansible Automation Platform 提供的安装步骤。

1.3.4.22. 应用程序名称要求

应用程序名称不能超过 37 个字符。如果字符超过这个数量,应用部署将显示以下错误。

status:
  phase: PropagationFailed
  reason: 'Deployable.apps.open-cluster-management.io "_long_lengthy_name_" is invalid: metadata.labels: Invalid value: "_long_lengthy_name_": must be no more than 63 characters/n'
Copy to Clipboard Toggle word wrap

1.3.4.23. 应用程序控制台表限制

参阅控制台中不同 Application 表的限制:

  • Overview 页面的 Applications 表和 Advanced 配置页面上的 Subscriptions 表中,Clusters 列会显示部署应用程序资源的集群计数。因为应用程序是由本地集群上的资源定义的,所以本地集群会包含在搜索结果中,无论实际的应用程序资源是否在本地集群中部署。
  • SubscriptionsAdvanced configuration 列表中,Applications 栏显示使用该订阅的应用程序总数,如果订阅部署了子应用程序,它们也会包含在搜索结果中。
  • ChannelsAdvanced configuration 列表中,Subscriptions 栏显示使用该频道的本地集群中的订阅总数,但这不包括由其他订阅部署的订阅,这些订阅包含在搜索结果中。

1.3.4.24. 没有应用程序控制台拓扑过滤

2.10 的应用程序的 ConsoleTopology 已更改。控制台 Topology 页面中没有过滤功能。

允许决绝列表功能无法在对象存储应用程序订阅中工作。

1.3.5. 已知的可观察性问题

查看 Red Hat Advanced Cluster Management for Kubernetes 中的已知问题。以下列表包含本发行版本的已知问题,或从上一版本中继承的问题。

对于 Red Hat OpenShift Container Platform 集群,请参阅 OpenShift Container Platform 已知问题

有关弃用和删除的更多信息,请参阅弃用和删除

恢复的 hub 集群中的 Observatorium API 网关 pod 在备份和恢复过程后可能包含过时的租户数据,因为 Kubernetes 限制。有关限制的更多信息,请参阅挂载 ConfigMap 自动更新

因此,Observatorium API 和 Thanos 网关拒绝收集器的指标,Red Hat Advanced Cluster Management Grafana 仪表板不会显示数据。

请参阅 Observatorium API 网关 pod 日志中的以下错误:

level=error name=observatorium caller=logchannel.go:129 msg="failed to forward metrics" returncode="500 Internal Server Error" response="no matching hashring to handle tenant\n"
Copy to Clipboard Toggle word wrap

Thanos 接收带有以下错误的 pod 日志:

caller=handler.go:551 level=error component=receive component=receive-handler tenant=xxxx err="no matching hashring to handle tenant" msg="internal server error"
Copy to Clipboard Toggle word wrap

请参阅以下流程来解决这个问题:

  1. observability-observatorium-api 部署实例从 N 缩减到 0。
  2. observability-observatorium-api 部署实例从 0 扩展到 N

注意: 默认情况下 N = 2,但在某些自定义配置环境中可能大于 2

这会重启所有 Observatorium API 网关 pod,收集器中的数据会在 5-10 分钟之间显示在 Grafana 中。

从 Red Hat Advanced Cluster Management 2.9 开始,您必须使用定义的 Red Hat Advanced Cluster Management hub 集群命名空间中的标签。标签 openshift.io/cluster-monitoring: "true" 会导致 Cluster Monitoring Operator 提取指标的命名空间。

当部署 Red Hat Advanced Cluster Management 2.9 或安装升级到 2.9 时,Red Hat Advanced Cluster Management Observability ServiceMonitorPrometheusRule 资源不再存在于 openshift-monitoring 命名空间中。

1.3.5.3. 缺少对代理设置的支持

observability 附加组件的 Prometheus AdditionalAlertManagerConfig 资源不支持代理设置。您必须禁用 observability 警报转发功能。

完成以下步骤以禁用警报转发:

  1. 进入 MultiClusterObservability 资源。
  2. mco-disabling-alerting 参数值更新为 true

不支持使用自签名 CA 证书的 HTTPS 代理。

当各种 hub 集群使用相同的 S3 存储部署 Red Hat Advanced Cluster Management observability 时,可以在 Kubernetes/Service-Level Overview/API Server 仪表板中检测并显示重复local-clusters。重复的集群在以下面板中影响结果: Top Clusters超过 SLO 的集群数,以及满足 SLO 的集群数量local-clusters 是与共享 S3 存储关联的唯一集群。要防止多个 local-clusters 显示在仪表板中,建议每个唯一的 hub 集群使用针对 hub 集群的 S3 存储桶来部署可观察性。

1.3.5.5. Observability endpoint operator 无法拉取镜像

如果您创建一个 pull-secret 用于部署到 MultiClusterObservability CustomResource(CR),且 open-cluster-management-observability 命名空间中没有 pull-secret,则 observability endpoint operator 会失败。当您导入新集群或导入使用 Red Hat Advanced Cluster Management 创建的 Hive 集群时,需要在受管集群上手动创建 pull-image secret。

如需更多信息,请参阅启用可观察性

1.3.5.6. 没有来自 ROKS 集群的数据

Red Hat Advanced Cluster Management observability 不会在内置仪表板中显示 ROKS 集群中的数据。这是因为 ROKS 不会从它们管理的服务器公开任何 API 服务器指标。以下 Grafana 仪表板包含不支持 ROKS 集群的面板:Kubernetes/API serverKubernetes/Compute Resources/WorkloadKubernetes/Compute Resources/Namespace(Workload)

1.3.5.7. ROKS 集群没有 etcd 数据

对于 ROKS 集群,Red Hat Advanced Cluster Management observability 不会在仪表板的 etcd 面板中显示数据。

1.3.5.8. Grafana 控制台中没有指标数据

  • 注解查询在 Grafana 控制台中会失败:

    当在 Grafana 控制台中搜索特定注解时,您可能会因为已过期的令牌收到以下错误消息:

    "Annotation Query Failed"

    重新刷新浏览器,验证您是否已登录到 hub 集群。

  • rbac-query-proxy pod 中的错误:

    由于未授权访问 managedcluster 资源,您可能会在查询集群或项目时收到以下错误:

    no project or cluster found

    检查角色权限并进行相应的更新。如需更多信息,请参阅基于角色的访问控制

1.3.5.9. 受管集群上的 Prometheus 数据丢失

默认情况下,OpenShift 上的 Prometheus 使用临时存储。Prometheus 会在重启时丢失所有指标数据。

如果在由 Red Hat Advanced Cluster Management 管理的 OpenShift Container Platform 受管集群上启用或禁用了可观察性,observability 端点 Operator 会添加额外的 alertmanager 配置来自动重启本地 Prometheus,以此更新 cluster-monitoring-config ConfigMap

1.3.5.10. Error ingesting out-of-order samples

Observability receive pod 报告以下出错信息:

Error on ingesting out-of-order samples
Copy to Clipboard Toggle word wrap

错误消息表示,在指标收集间隔期间,由受管集群发送的时间序列数据比在之前的集合间隔发送的时间序列数据旧。当出现这个问题时,Thanos 接收器会丢弃数据,这可能会在 Grafana 仪表板中显示的数据中造成差距。如果经常看到这个错误,建议将指标收集间隔增加到一个更高的值。例如,您可以将间隔增加到 60 秒。

只有在时间序列间隔被设置为较低值(如 30 秒)时,才会注意到这个问题。请注意,当指标收集间隔被设置为默认值 300 秒时,不会看到这个问题。

1.3.5.11. 升级后 Grafana 部署失败

如果您在 2.6 之前的系统中部署了 grafana-dev 实例,并将环境升级到 2.6,grafana-dev 无法正常工作。您必须运行以下命令来删除现有 grafana-dev 实例:

./setup-grafana-dev.sh --clean
Copy to Clipboard Toggle word wrap

使用以下命令重新创建实例:

./setup-grafana-dev.sh --deploy
Copy to Clipboard Toggle word wrap

1.3.5.12. klusterlet-addon-search pod 失败

klusterlet-addon-search pod 失败,因为达到内存限制。您必须通过自定义受管集群中的 klusterlet-addon-search 部署来更新内存请求和限制。在 hub 集群中编辑名为 search-collectorManagedclusterAddon 自定义资源。在 search-collector 中添加以下注解并更新内存 addon.open-cluster-management.io/search_memory_request=512Miaddon.open-cluster-management.io/search_memory_limit=1024Mi

例如,如果您有一个名为 foobar 的受管集群,请运行以下命令将内存请求更改为 512Mi,内存限值为 1024Mi

oc annotate managedclusteraddon search-collector -n foobar \
addon.open-cluster-management.io/search_memory_request=512Mi \
addon.open-cluster-management.io/search_memory_limit=1024Mi
Copy to Clipboard Toggle word wrap

如果在 mulitclusterengine 自定义资源中将 disableHubSelfManagement 参数设置为 true 时,Grafana 仪表板会显示一个空标签列表。您必须将参数设置为 false 或删除参数来查看标签列表。如需了解更多详细信息,请参阅 disableHubSelfManagement

当您将 FQDN 或协议用于 endpoint 参数时,您的可观察性 pod 不会被启用。此时会显示以下出错信息:

Endpoint url cannot have fully qualified paths
Copy to Clipboard Toggle word wrap

输入没有协议部分的 URL。您的 endpoint 值必须类似您的 secret 的以下 URL:

endpoint: example.com:443
Copy to Clipboard Toggle word wrap
1.3.5.13.2. Grafana downsampled 数据不匹配

当您尝试查询历史数据时,计算的步骤值和 downsampled 数据之间存在差异,结果为空。例如,如果计算的步骤值为 5m,并且 downsampled 数据处于一小时的间隔,则数据不会出现在 Grafana 中。

此差异发生,因为 URL 查询参数必须通过 Thanos Query 前端数据源进行传递。之后,当数据缺失时,URL 查询可以对其他降级级别执行额外的查询。

您必须手动更新 Thanos Query 前端数据源配置。完成以下步骤:

  1. 进入 Query 前端数据源。
  2. 要更新您的查询参数,请点击 Misc 部分。
  3. Custom query parameters 字段中,选择 max_source_resolution=auto
  4. 要验证是否显示数据,请刷新 Grafana 页面。

您的查询数据会出现在 Grafana 仪表板中。

1.3.5.14. 指标收集器不会检测代理配置

指标收集器不会检测到您使用 addonDeploymentConfig 配置的受管集群中的代理配置。作为临时解决方案,您可以通过删除受管集群清单工作来启用 代理。删除 ManifestWork 会强制应用 addonDeploymentConfig 中的更改。

当需要自定义 CA 捆绑包时,受管集群中的代理配置无法正常工作。

1.3.6. 已知的监管问题

查看监管的已知问题。以下列表包含本发行版本的已知问题,或从上一版本中继承的问题。

对于 Red Hat OpenShift Container Platform 集群,请参阅 OpenShift Container Platform 已知问题

有关弃用和删除的更多信息,请参阅弃用和删除

OpenShift Container Platform 3.11 不提供容器安全 Operator。因此,您无法在 ImageManifestVuln 策略中使用 policy-imagemanifestvuln-sub 的策略模板,并将其应用到 OpenShift Container Platform 3.11 集群。

如果您尝试应用 ImageManifestVuln 策略,您会收到以下违反消息:

violation - couldn't find mapping resource with kind Subscription, please check if you have CRD deployed.
Copy to Clipboard Toggle word wrap

监管资源不会被正确清理。当组件被设置为 false 或在 MultiClusterHub operator 中被禁用时,会在可以清理它管理的附加组件前删除监管组件。

当您使用外部身份提供程序登录到 Red Hat Advanced Cluster Management 时,您可能无法从 Red Hat Advanced Cluster Management 注销。当您使用与 IBM Cloud 和 Keycloak 作为身份提供程序一起安装的 Red Hat Advanced Cluster Management 时会出现这种情况。

在尝试从 Red Hat Advanced Cluster Management 注销前,您必须从外部身份提供程序注销。

当您有一个为 complianceType 参数配置且为 remediationAction 参数带有 mustnothave 的配置策略时,当向 Kubernetes API 发出删除请求时,策略会被列为合规。因此,在策略列为合规时,Kubernetes 对象可能会一直处于 Terminating 状态。

1.3.6.5. 使用策略部署的 Operator 不支持 ARM

虽然支持安装到 ARM 环境中,但使用策略部署的 operator 可能不支持 ARM 环境。安装 Operator 的以下策略不支持 ARM 环境:

当您通过在 KlusterletAddonConfig 或分离集群中禁用策略控制器从受管集群中删除 config-policy-controller 附加组件时,ConfigurationPolicy 自定义资源定义可能会处于终止状态。如果 ConfigurationPolicy 自定义资源定义处于终止状态,如果稍后重新安装附加组件,则可能不会添加新策略。您还可以收到以下错误:

template-error; Failed to create policy template: create not allowed while custom resource definition is terminating
Copy to Clipboard Toggle word wrap

使用以下命令检查自定义资源定义是否已卡住:

oc get crd configurationpolicies.policy.open-cluster-management.io -o=jsonpath='{.metadata.deletionTimestamp}'
Copy to Clipboard Toggle word wrap

如果删除时间戳位于资源中,则自定义资源定义会卡住。要解决这个问题,从集群中保留的配置策略中删除所有终结器。在受管集群中使用以下命令,将 <cluster-namespace> 替换为受管集群命名空间:

oc get configurationpolicy -n <cluster-namespace> -o name | xargs oc patch -n <cluster-namespace> --type=merge -p '{"metadata":{"finalizers": []}}'
Copy to Clipboard Toggle word wrap

配置策略资源会自动从集群中移除,自定义资源定义会退出其终止状态。如果已经重新安装了附加组件,则在没有删除时间戳的情况下自动重新创建自定义资源定义。

当您修改现有配置策略时,pruneObjectBehavior 无法正常工作。查看 pruneObjectBehavior 可能无法正常工作的原因:

  • 如果您在配置策略中将 pruneObjectBehavior 设置为 DeleteAllDeleteIfCreated,则不会正确清理修改前创建的旧资源。当您删除配置策略时,只有策略创建和策略更新中的新资源才会被跟踪和删除。
  • 如果将 pruneObjectBehavior 设置为 None 或没有设置参数值,则可能会在受管集群上意外删除旧对象。具体来说,当用户更改模板中的 name, namespace, kind, or apiversion 时这会发生。当 object-templates-rawnamespaceSelector 参数更改时,参数字段可以动态更改。

1.3.6.8. 强制时策略状态显示重复的更新

如果策略被设置为 remediationAction: enforce 并重复更新,Red Hat Advanced Cluster Management 控制台会显示重复违反情况,并成功更新。重复更新生成多个策略事件,这可能会导致 governance-policy-framework-addon pod 耗尽内存和崩溃。请参阅以下可能的原因和错误解决方案:

  • 另一个控制器或进程也使用不同的值更新对象。

    要解决这个问题,请禁用策略并比较策略和受管集群上的 objectDefinition 之间的不同。如果值不同,则可能会更新另一个控制器或进程。检查对象的元数据,以帮助识别值的不同原因。

  • ConfigurationPolicy 中的 objectDefinition 不匹配,因为 Kubernetes 在应用策略时处理对象。

    要解决这个问题,请禁用策略并比较策略和受管集群上的 objectDefinition 之间的不同。如果键不同或缺失,Kubernetes 可能会在将密钥应用到对象之前处理密钥,如删除包含默认值或空值的键。

对 Pod 安全策略的支持已从 OpenShift Container Platform 4.12 及更新的版本中删除,并从 Kubernetes v1.25 及之后的版本中删除。如果应用 PodSecurityPolicy 资源,您可能会收到以下不合规的信息:

violation - couldn't find mapping resource with kind PodSecurityPolicy, please check if you have CRD deployed
Copy to Clipboard Toggle word wrap

当您创建具有相同策略模板名称的策略时,您会收到不一致的结果,但您可能不知道原因。例如,使用名为 create-pod 的多个配置策略定义策略会导致结果不一致。最佳实践:对策略模板避免使用重复名称。

当您在 MultiClusterHub 对象中禁用监管部署时,不会在没有错误的情况下清理部署。完成以下步骤以禁用监管,以便同时清理部署:

  1. 在受管集群的 KlusterletAddonConfig 中禁用 policyController。如果对所有受管集群执行此操作,请运行以下命令:

    for CLUSTER in $(oc get managedclusters -o jsonpath='{.items[].metadata.name}'); do
      oc patch -n ${CLUSTER} klusterletaddonconfig ${CLUSTER} --type=merge --patch='{"spec":{"policyController":{"enabled":false}}}'
    done
    Copy to Clipboard Toggle word wrap
  2. 仅限本地集群:删除本地集群的 ManifestWork,并在 CrashLoopBackOffCrashLoopBackOff 中的 governance-policy-framework-uninstall pod 处于 CrashLoopBackOff 时删除 ManagedClusterAddon 上的终结器。运行以下命令:

    oc delete manifestwork -n local-cluster -l open-cluster-management.io/addon-name=governance-policy-framework
    oc patch managedclusteraddon -n local-cluster governance-policy-framework --type=merge --patch='{"metadata":{"finalizers":[]}}'
    Copy to Clipboard Toggle word wrap
  3. 如果需要,通过在 MultiClusterHub 对象中将 spec.overrides 部分中的 grc 元素设置为 false 来禁用全局监管。运行以下命令:

    oc edit multiclusterhub <name> -n <namespace>
    Copy to Clipboard Toggle word wrap
  4. 仅限本地集群:如果有任何本地集群策略,您可以通过运行以下命令来删除策略:

    oc delete policies -n local-cluster --all
    Copy to Clipboard Toggle word wrap
  5. 要在 KlusterletAddonConfig 中重新启用监管,请重新启用 MultiClusterHub 中的 spec.overrides 部分的 grc 元素。运行以下命令:

    for CLUSTER in $(oc get managedclusters -o jsonpath='{.items[].metadata.name}'); do
      oc patch -n ${CLUSTER} klusterletaddonconfig ${CLUSTER} --type=merge --patch='{"spec":{"policyController":{"enabled":true}}}'
    done
    Copy to Clipboard Toggle word wrap
  6. 如果部署不成功,则 governance-policy-addon-controller 可能会具有过时的租期。使用以下命令删除租期:

    oc delete lease governance-policy-addon-controller-lock -n <namespace>
    Copy to Clipboard Toggle word wrap

1.3.6.12. 数据库和策略合规历史记录 API 中断

对数据库和策略合规历史记录 API 中断提供了内置弹性,但任何无法由受管集群记录的合规性事件都会在内存中排队,直到它们成功记录为止。这意味着,如果受管集群上有中断并且 managed -policy-framework pod 重启,则所有排队的合规性事件都会丢失。

如果您在数据库中断期间创建或更新新策略,则无法记录为这个新策略发送的任何合规事件,因为无法更新策略到数据库 ID 的映射。当数据库恢复在线时,映射会自动更新,并从这些策略中记录将来的合规事件。

1.3.6.13. PostgreSQL 数据丢失

如果数据丢失到 PostgreSQL 服务器,如在没有最新数据的情况下恢复到备份,则必须重启 Red Hat Advanced Cluster Management hub 集群上的监管策略传播器,以便它可以将策略映射到数据库 ID。在重启监管策略传播器前,不再记录与数据库中存在的策略关联的新合规事件。

要重启监管策略传播器,请在 Red Hat Advanced Cluster Management hub 集群中运行以下命令:

oc -n open-cluster-management rollout restart deployment/grc-policy-propagator
Copy to Clipboard Toggle word wrap

1.3.7. 已知的与网络相关的问题

查看 Submariner 的已知问题。以下列表包含本发行版本的已知问题,或从上一版本中继承的问题。

对于 Red Hat OpenShift Container Platform 集群,请参阅 OpenShift Container Platform 已知问题

有关弃用和删除的更多信息,请参阅弃用和删除

1.3.7.1. Submariner 已知问题

请查看以下在使用网络功能时可能会出现的已知问题和限制。

对于版本 2.8 及更早版本,在安装 Red Hat Advanced Cluster Management 时,您还可以使用 Operator Lifecycle Manager 部署 submariner-addon 组件。如果您没有创建 MultiClusterHub 自定义资源,submariner-addon pod 会发送错误,并阻止 Operator 安装。

发生以下通知,因为缺少 ClusterManagementAddon 自定义资源定义:

graceful termination failed, controllers failed with error: the server could not find the requested resource (post clustermanagementaddons.addon.open-cluster-management.io)
Copy to Clipboard Toggle word wrap

ClusterManagementAddon 资源由 cluster-manager 部署创建,但当集群中安装 MultiClusterEngine 组件时,此部署将可用。

如果在创建 MultiClusterHub 自定义资源时没有在集群中可用的 MultiClusterEngine 资源,MultiClusterHub operator 会部署 MultiClusterEngine 实例,以及所需的 Operator,用于解决前面的错误。

如果 MultiClusterHub (MCH) operator 中的 submariner-addon 组件被设置为 false,则不会为受管集群资源正确清理 submariner-addon 终结器。因为没有正确清理终结器,这可以防止 submariner-addon 组件在 hub 集群中被禁用。

在 Red Hat Advanced Cluster Management 的所有基础架构供应商不支持 Submariner。如需支持的供应商列表,请参阅 Red Hat Advanced Cluster Management 支持列表

1.3.7.1.4. Submariner 安装计划限制

Submariner 安装计划不会遵循整个安装计划设置。因此,Operator 管理屏幕无法控制 Submariner 安装计划。默认情况下,Submariner 安装计划会被自动应用,Submariner addon 总是更新至与已安装的 Red Hat Advanced Cluster Management 版本对应的最新可用版本。要更改此行为,您必须使用自定义 Submariner 订阅。

1.3.7.1.5. 有限的无头服务支持

在使用 Globalnet 时,在没有选择器的情况下的无头服务不支持服务发现。

1.3.7.1.6. 不支持在启用 NAT 时使用 VXLAN 的部署

只有非 NAT 部署支持使用 VXLAN 电缆驱动程序的 Submariner 部署。

如果使用 OVN Kubernetes CNI 网络,则需要 Red Hat OpenShift 4.11 或更高版本。

1.3.7.1.8. 自签名证书可能会阻止到代理的连接

代理上的自签名证书可能会阻止加入集群连接到代理。连接失败并显示证书验证错误。您可以通过在相关 SubmarinerConfig 对象中将 InsecureBrokerConnection 设置为 true 来禁用代理证书验证。请参见以下示例:

apiVersion: submarineraddon.open-cluster-management.io/v1alpha1
kind: SubmarinerConfig
metadata:
   name: submariner
   namespace: <managed-cluster-namespace>
spec:
   insecureBrokerConnection: true
Copy to Clipboard Toggle word wrap

Submariner 只支持使用 OpenShift SDN 或 OVN-Kubernetes Container Network Interface (CNI) 网络供应商的 Red Hat OpenShift Container Platform 集群。

1.3.7.1.10. Microsoft Azure 集群的命令限制

subctl diagnose firewall inter-cluster 命令无法在 Microsoft Azure 集群中工作。

当 Red Hat Advanced Cluster Management for Kubernetes 升级时,Submariner 会被自动升级。如果您使用自定义 CatalogSourceSubscription,则自动升级可能会失败。

为确保在受管集群上安装 Submariner 时自动升级可以正常工作,您必须在每个受管集群的 SubmarinerConfig 自定义资源中将 spec.subscriptionConfig.channel 字段设置为 stable-0.15

由启用了 IPsec 的 OVN-Kubernetes 部署创建的 IPsec 隧道可能会与 Submariner 创建的 IPsec 隧道冲突。不要在 Submariner 的 IPsec 模式中使用 OVN-Kubernetes。

如果您从 ClusterSet 中删除集群,或者将集群移到不同的 ClusterSet,则 Submariner 安装不再有效。

您必须在从 ManageClusterSet 移动或移除 ManagedCluster 前卸载 Submariner。如果没有卸载 Submariner,则无法卸载或重新安装 Submariner,Submariner 会停止在 ManagedCluster 上工作。

因为 hub 集群上的受管集群缺少代理 secret,所以 Submariner 附加组件在 VMware vSphere 上运行 OpenShift Container Platform 4.15 及更新版本的 hub 集群会失败。只有在受管集群上的 submariner-operator 命名空间中创建 submariner-addon pod,控制台会显示没有标记的网关。

您可以通过为 ClusterSet 代理命名空间中的每个受管集群手动创建 secret 来解决此问题。要手动创建 secret,请完成以下步骤:

  1. 登录到 hub 集群。
  2. 创建 YAML 文件并添加以下模板。根据需要替换值:

    apiVersion: v1
    kind: Secret
    metadata:
      name: <ManagedClusterName>-broker
      namespace: <ClustersetName>-broker
      annotations:
        kubernetes.io/service-account.name: <ManagedClusterName>
    type: kubernetes.io/service-account-token
    Copy to Clipboard Toggle word wrap
  3. 运行以下命令来应用 YAML 文件:

    oc apply
    Copy to Clipboard Toggle word wrap

1.3.8. multicluster global hub Operator 已知问题

查看 multicluster global hub Operator 的已知问题。以下列表包含本发行版本的已知问题,或从上一版本中继承的问题。对于 OpenShift Container Platform 集群,请参阅 OpenShift Container Platform 已知问题

您自带的 Kafka 中有三个名为 specstatusevent 的主题。将多集群全局 hub 升级到 1.3 或更高版本后,只会保留 specstatus 主题。通过多集群全局 hub 操作对象配置这些主题。您传输的默认 topis 是 gh-specgh-status

multicluster global hub 操作对象是系统的 API 或资源,multicluster global hub operator 是控制器。升级多集群全局 hub 后,请协调您自己的 Kafka 集群和多集群全局 hub 操作对象之间的主题。您可以在 Kafka 集群中创建 gh-specgh-status 主题,或者更改多集群全局 hub 操作对象以使用现有的 specstatus 主题。

使用以下 YAML 示例更新多集群全局 hub 操作对象,以使用您自己的 Kafka 主题:

apiVersion: operator.open-cluster-management.io/v1alpha4
kind: MulticlusterGlobalHub
spec:
  availabilityConfig: Basic
  dataLayer:
    kafka:
      topics:
        specTopic: spec
        statusTopic: status
    postgres:
      retention: 18m
  enableMetrics: false
Copy to Clipboard Toggle word wrap

如果多集群全局 hub 在启用了 FIPS 的最新 OpenShift Container Platform 环境中运行,则无法访问 Grafana 控制台,因为 oauth-proxy 镜像错误。Red Hat Advanced Cluster Management 2.10.x 支持最新的 OpenShift Container Platform 版本,可让您从 Red Hat Advanced Cluster Management 2.10.x 中获取 oauth-proxy 镜像。

要访问 Grafana 控制台,请使用 Red Hat Advanced Cluster Management 捆绑包镜像手动更新 oauth-proxy 镜像。要更新 oauth-proxy 镜像,请完成以下步骤:

  1. 运行以下命令,从 mch-image-manifest-xxx 获取正确的 oauth-proxy 镜像。将 <.data.oauth_proxy_latestocp& gt; 替换为您的 OpenShift Container Platform 版本:

    oc get cm -n open-cluster-management mch-image-manifest-xxx -ojsonpath=<.data.oauth_proxy_latestocp>
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令,使用正确的镜像更新 multicluster global hub clusterserviceversion (CSV)中的部署镜像:

    oc edit csv multicluster-global-hub-operator-rh.v1.1.x -n multicluster-global-hub
    Copy to Clipboard Toggle word wrap
  3. 查找 RELATED_IMAGE_OAUTH_PROXY 的值,并将其替换为在第 1 步中收到的输出。

1.3.8.3. Kafka operator 会保持重启

在联邦信息处理标准(FIPS)环境中,Kafka operator 会因为内存不足(OOM)状态保持重启。要修复此问题,请将资源限值设置为至少 512M。有关如何设置此限制的详细步骤,请参阅 amq 流文档

1.3.8.4. 备份和恢复已知问题

如果您的原始多集群全局 hub 集群崩溃,则多集群全局 hub 会丢失其生成的事件和 cron 作业。即使恢复新的多集群全局 hub 集群,也不会恢复事件和 cron 作业。要解决这个问题,您可以手动运行 cron 作业,请参阅 手动运行总结过程

1.3.8.5. 受管集群显示但不计算

没有成功创建的受管集群,这意味着受管集群中不存在 clusterclaim id.k8s.io,不会在策略合规仪表板中计算,但在策略合规仪表板中显示。

1.3.8.7. 标准组过滤器无法传递给新页面

Global Hub Policy Group Compliancy Overview hub 仪表板中,您可以通过单击 View Offending Policies for Standard group 来检查一个数据点,但在点此链接进入关闭页面后,标准组过滤器无法传递给新页面。

另外,Cluster Group Compliancy Overview 也是一个问题。

如果受管 hub 集群导入 OpenShift Container Platform 3.11 集群(已弃用)作为受管集群,则无法重定向到 Global Hub > Overview 仪表板中的 Observability 页面。

您需要手动导航到目标页面。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat