1.8. 已知问题

  • 在 OpenShift Container Platform 4.1 中,匿名用户可以访问发现端点。之后的版本会取消对这端点的访问,以减少可能的安全漏洞攻击面。一些发现端点被转发到聚合的 API 服务器。但是,升级的集群中会保留未经身份验证的访问,因此现有用例不会中断。

    如果您是一个从 OpenShift Container Platform 4.1 升级到 4.12 的集群的集群管理员,您可以撤销或继续允许未经身份验证的访问。除非对未经身份验证的访问有特殊需要,否则您应该撤销它。如果您继续允许未经身份验证的访问,请注意相关的风险。

    警告

    如果您的应用程序依赖未经身份验证的访问,在撤销了未经身份验证的访问后可能会收到 HTTP 403 错误。

    使用以下脚本撤销对发现端点的未经身份验证的访问:

    ## Snippet to remove unauthenticated group from all the cluster role bindings
    $ for clusterrolebinding in cluster-status-binding discovery system:basic-user system:discovery system:openshift:discovery ;
    do
    ### Find the index of unauthenticated group in list of subjects
    index=$(oc get clusterrolebinding ${clusterrolebinding} -o json | jq 'select(.subjects!=null) | .subjects | map(.name=="system:unauthenticated") | index(true)');
    ### Remove the element at index from subjects array
    oc patch clusterrolebinding ${clusterrolebinding} --type=json --patch "[{'op': 'remove','path': '/subjects/$index'}]";
    done

    此脚本从以下集群角色绑定中删除未经身份验证的对象:

    • cluster-status-binding
    • discovery
    • system:basic-user
    • system:discovery
    • system:openshift:discovery

    (BZ#1821771)

  • 在有些情况下,IBM Cloud VPC 集群可能无法安装,因为有些 worker 机器没有启动。相反,这些 worker 机器保留在 Provisioned 阶段。

    这个问题有一个临时解决方案。在执行初始安装的主机上,删除失败的机器并再次运行安装程序。

    1. 验证 master API 服务器的内部应用负载均衡器 (ALB) 的状态是 active

      1. 运行以下命令识别集群的基础架构 ID:

        $ oc get infrastructure/cluster -ojson | jq -r '.status.infrastructureName'
      2. 登录到集群的 IBM Cloud 帐户,并以集群的正确区域为目标。
      3. 运行以下命令验证内部 ALB 状态是否为 active

        $ ibmcloud is lb <cluster_ID>-kubernetes-api-private  --output json | jq -r '.provisioning_status'
    2. 运行以下命令,识别处于 Provisioned 阶段的机器:

      $ oc get machine -n openshift-machine-api

      输出示例

      NAME                                    PHASE         TYPE       REGION    ZONE        AGE
      example-public-1-x4gpn-master-0         Running       bx2-4x16   us-east   us-east-1   23h
      example-public-1-x4gpn-master-1         Running       bx2-4x16   us-east   us-east-2   23h
      example-public-1-x4gpn-master-2         Running       bx2-4x16   us-east   us-east-3   23h
      example-public-1-x4gpn-worker-1-xqzzm   Running       bx2-4x16   us-east   us-east-1   22h
      example-public-1-x4gpn-worker-2-vg9w6   Provisioned   bx2-4x16   us-east   us-east-2   22h
      example-public-1-x4gpn-worker-3-2f7zd   Provisioned   bx2-4x16   us-east   us-east-3   22h

    3. 运行以下命令来删除每个失败的机器:

      $ oc delete machine <name_of_machine> -n openshift-machine-api
    4. 等待已删除的 worker 机器被替换,最多可能需要 10 分钟。
    5. 运行以下命令,验证新 worker 机器是否处于 Running 阶段:

      $ oc get machine -n openshift-machine-api

      输出示例

      NAME                                    PHASE     TYPE       REGION    ZONE        AGE
      example-public-1-x4gpn-master-0         Running   bx2-4x16   us-east   us-east-1   23h
      example-public-1-x4gpn-master-1         Running   bx2-4x16   us-east   us-east-2   23h
      example-public-1-x4gpn-master-2         Running   bx2-4x16   us-east   us-east-3   23h
      example-public-1-x4gpn-worker-1-xqzzm   Running   bx2-4x16   us-east   us-east-1   23h
      example-public-1-x4gpn-worker-2-mnlsz   Running   bx2-4x16   us-east   us-east-2   8m2s
      example-public-1-x4gpn-worker-3-7nz4q   Running   bx2-4x16   us-east   us-east-3   7m24s

    6. 运行以下命令来完成安装。再次运行安装程序可确保正确初始化集群的 kubeconfig

      $ ./openshift-install wait-for install-complete

      (OCPBUGS#1327)

  • oc annotate 命令不适用于包含了等号(=)的 LDAP 组名称,因为命令使用等号作为注释名称和值之间的分隔符。作为临时解决方案,使用 oc patchoc edit 添加注解。(BZ#1917280)
  • 由于在某些镜像索引中包含旧镜像,运行 oc adm catalog mirroroc image mirror 可能会导致以下错误: error: unable to retrieve source image。作为临时解决方案,您可以使用 --skip-missing 选项绕过错误并继续下载镜像索引。如需更多信息,请参阅 Service Mesh Operator 镜像失败
  • 在 RHOSP 上的 OpenShift Container Platform 中使用出口 IP 地址功能时,您可以将浮动 IP 地址分配给保留端口,以便为出口流量具有可预测的 SNAT 地址。浮动 IP 地址关联必须由安装 OpenShift Container Platform 集群的同一用户创建。否则,由于权限不足,出口 IP 地址的任何删除或移动操作都会无限期挂起。发生此问题时,具有足够特权的用户必须手动取消设置浮动 IP 地址关联来解决这个问题。(OCPBUGS-4902)
  • Nutanix 安装中存在一个已知问题:如果您使用带有 Prism Central 2022.x 的 4096 位证书,则安装会失败。反之,使用 2048 位证书。(KCS)
  • 删除双向转发检测 (BFD) 配置集并删除添加到边框网关协议 (BGP) 对等资源中的 bfdProfile 不会禁用 BFD。相反,BGP 对等点开始使用默认的 BFD 配置集。要从 BGP peer 资源禁用 BFD,请删除 BGP 对等配置,并在没有 BFD 配置集的情况下重新创建它。(BZ#2050824)
  • 由于一个未解析的元数据 API 问题,您无法在 RHOSP 16.1 上安装使用裸机 worker 的集群。RHOSP 16.2 上的集群不受此问题的影响。(BZ#2033953)
  • 不支持 loadBalancerSourceRanges 属性,因此会被忽略,在 RHOSP 上运行的集群中的负载均衡器类型服务中,并使用 OVN Octavia 供应商。这个问题还没有临时解决方案。(OCPBUGS-2789)
  • 目录源更新后,OLM 需要时间来更新订阅状态。这意味着,当 Topology Aware Lifecycle Manager (TALM) 决定是否需要补救时,订阅策略的状态可能会继续显示为合规。因此,在订阅策略中指定的 Operator 不会进行升级。作为临时解决方案,请在目录源策略的 spec 部分包含一个 status 字段,如下所示:

    metadata:
      name: redhat-operators-disconnected
    spec:
      displayName: disconnected-redhat-operators
      image: registry.example.com:5000/disconnected-redhat-operators/disconnected-redhat-operator-index:v4.11
    status:
      connectionState:
        lastObservedState: READY

    这可减少 OLM 拉取新索引镜像并使 pod 就绪的延迟,从而减少目录源策略补救和订阅状态更新之间的时间。如果问题仍然存在,且订阅策略状态更新仍较晚,您可以使用相同的订阅策略应用另一个 ClusterGroupUpdate CR,或者具有不同名称相同的 ClusterGroupUpdate CR。(OCPBUGS-2813)

  • 如果所有选择的集群在 ClusterGroupUpdate CR 启动后,TALM 会跳过补救策略。使用修改后的目录源策略和同一 ClusterGroupUpdate CR 中的订阅策略更新 Operator 不会被完成。订阅策略会被跳过,因为它仍然合规,直到强制实施目录源更改。作为临时解决方案,请在 common-subscription 策略中添加以下对 CR 的更改,例如:

    metadata.annotations.upgrade: "1"

    这会在 ClusterGroupUpdate CR 开始前使策略不合规。(OCPBUGS-2812)

  • 在单节点 OpenShift 实例上,重新引导而不排空节点以删除所有正在运行的 pod 可能会导致工作负载容器恢复出现问题。重启后,工作负载会在所有设备插件就绪前重启,从而导致资源不可用或在错误的 NUMA 节点上运行的工作负载。当所有设备插件在重启恢复过程中重新注册时,可以重启工作负载 pod。(OCPBUGS-2180)
  • 默认 dataset_comparison 目前为 ieee1588。推荐的 dataset_comparison 是 G.8275.x。计划在以后的 OpenShift Container Platform 版本中修复。在短期内,您可以手动更新 ptp 配置,使其包含推荐的 dataset_comparison。(OCPBUGS-2336)
  • 默认 step_threshold 是 0.0。推荐的 step_threshold 是 2.0。计划在以后的 OpenShift Container Platform 版本中修复。在短期内,您可以手动更新 ptp 配置,使其包含推荐的 step_threshold。(OCPBUGS-3005)
  • BMCEventSubscription CR 无法在 ACM 部署的多集群环境中为 spoke 集群创建 Redfish 订阅,其中 metal3 服务只在 hub 集群上运行。解决方法是通过直接调用 Redfish API 来创建订阅,例如运行以下命令:

    curl -X POST -i --insecure -u "<BMC_username>:<BMC_password>" https://<BMC_IP>/redfish/v1/EventService/Subscriptions \
        -H 'Content-Type: application/json' \
        --data-raw '{
        "Protocol": "Redfish",
        "Context": "any string is valid",
        "Destination": "https://hw-event-proxy-openshift-bare-metal-events.apps.example.com/webhook",
        "EventTypes": ["Alert"]
        }'

    您应该会收到 201 Created 响应和一个带有 Location: /redfish/v1/EventService/Subscriptions/<sub_id> 的标头,它表示成功创建了 Redfish 事件订阅。(OCPBUGSM-43707)

  • 当使用 GitOps ZTP 管道在断开连接的环境中安装单节点 OpenShift 集群时,应该在集群中应用两个 CatalogSource CR。CatalogSource CR 中的一个会在多个节点重启后删除。作为临时解决方案,您可以更改目录源的默认名称,如 certified-operatorsredhat-operators。(OCPBUGSM-46245)
  • 如果在用于执行集群升级的订阅策略中指定无效的订阅频道,则 Topology Aware Lifecycle Manager 会在策略强制后显示成功升级,因为 Subscription 状态保持 AtLatestKnown。(OCPBUGSM-43618)
  • 当应用到集群中的多个节点时,SiteConfig 磁盘分区定义会失败。当使用 SiteConfig CR 置备紧凑集群时,在多个节点上创建一个有效的 diskPartition 配置会失败,并显示 Kustomize 插件错误。(OCPBUGSM-44403)
  • 如果当前禁用了安全引导,且尝试使用 ZTP 来启用它,集群安装不会启动。当通过 ZTP 启用安全引导时,引导选项会在附加虚拟 CD 前进行配置。因此,从现有的硬盘引导时会打开安全引导。集群安装会卡住,因为系统永远不会从 CD 启动。(OCPBUGSM-45085)
  • 使用 Red Hat Advanced Cluster Management (RHACM),当虚拟介质在将镜像写入磁盘后没有断开 ISO 时,Dell PowerEdge R640 服务器上的 spoke 集群部署会被阻止。作为临时解决方案,请通过 iDRAC 控制台中的 Virtual Media 选项卡手动断开 ISO。(OCPBUGSM-45884)
  • 依赖于高分辨率计时器的低延迟应用程序来唤醒线程可能会遇到比预期更高的延迟。虽然预期的唤醒延迟时间为 20us,但运行 cyclictest 工具的 cyclictest 工具时可能会看到超过这个值的延迟 (24 小时或更长)。测试表明,对于抽样的 99.999999%,唤醒延迟都低于 20us。(RHELPLAN-138733)
  • Intel 的 Chapman Beach NIC 必须安装在 bifurcated PCIe 插槽中,以确保两个端口都可见。RHEL 8.6 中的当前 devlink 工具中也存在一个限制,这会阻止在 bifurcated PCIe 插槽中配置 2 个端口。(RHELPLAN-142458)
  • 当端口停机时禁用 SR-IOV VF 可能会导致 Intel NIC 的 3-4 秒延迟。(RHELPLAN-126931)
  • 使用 Intel NIC 时,当为 SR-IOV VF 分配 IPV6 地址时,IPV6 流量会停止。(RHELPLAN-137741)
  • 当使用 VLAN 剥离卸载时,使用 iavf 驱动程序无法正确设置卸载标记 (ol_flag)。(RHELPLAN-141240)
  • 如果分配在 ice 驱动程序的配置更改期间失败,则可能会出现死锁。(RHELPLAN-130855)
  • 使用 Intel NIC 时,SR-IOV VF 会发送带有错误 MAC 地址的 GARP 数据包。(RHELPLAN-140971)
  • 当使用 GitOps ZTP 方法管理集群并删除还没有完成安装的集群时,hub 集群上的集群命名空间清理可能会无限期地挂起。要完成命名空间删除,请从集群命名空间中的两个 CR 中删除 baremetalhost.metal3.io finalizer:

    1. 从 BareMetalHost CR .spec.bmc.credentialsName 指向的 secret 中删除终结器。
    2. BareMetalHost CR 中删除终结器。当从命名空间中删除这些终结器时,终止会在几秒钟内完成。(OCPBUGS-3029)
  • 在 OCP 4.12 中添加了一个新功能,使 UDP GRO 也会使所有 veth 设备为每个可用的 CPU 都有一个 RX 队列(以前每个 veth 都有一个队列)。这些队列由 OVN 动态配置,延迟调整和此队列创建之间没有同步。延迟调优逻辑监控 veth NIC 创建事件,并在所有队列被正确创建前开始配置 RPS 队列 cpu 掩码。这意味着没有配置某些 RPS 队列掩码。因为不是所有 NIC 队列都正确配置,实时应用程序(使用对时间敏感的 cpu 与其它容器中的服务进行通信)可能会有延迟激增的问题。不使用内核网络堆栈的应用程序不会受到影响。(OCPBUGS-4194)
  • 平台 Operator 和 RukPak 的已知问题:

    • 删除平台 Operator 会导致删除底层资源。这个级联删除逻辑只能删除基于 Operator Lifecycle Manager (OLM) Operator 的捆绑格式中定义的资源。如果平台 Operator 创建在捆绑格式之外定义的资源,则平台 Operator 负责处理这个清理交互。在将 cert-manager Operator 安装为平台 Operator 时,可以观察此行为,然后将其删除。预期的行为是,命名空间保留在 cert-manager Operator 创建后。
    • 平台 Operator 管理器没有比较集群范围的 BundleDeployment 资源的当前状态和所需状态的逻辑。这使得有足够基于角色的访问控制(RBAC)的用户无法手动修改底层 BundleDeployment 资源,并可能导致用户将其权限升级到 cluster-admin 角色的情况。默认情况下,您应该将对此资源的访问权限限制为明确需要访问的少量用户。在这个技术预览版本中,BundleDeployment 资源唯一支持的客户端是平台 Operator 管理器组件。
    • OLM 的 Marketplace 组件是一个可禁用的可选集群功能。这在技术预览版本中有影响,因为平台 Operator 目前只从由 Marketplace 组件管理的 redhat-operators 目录源提供。作为临时解决方案,集群管理员可以手动创建此目录源。
    • RukPak 置备程序实施无法检查它们管理的资源的健康状态。这代表,生成的 BundleDeployment 资源状态会出现在拥有它的 PlatformOperator 资源。如果 registry+v1 捆绑包包含可成功应用到集群的清单,但在运行时会失败,如引用不存在的镜像的 Deployment 对象,则结果会反映到单个 PlatformOperatorBundleDeployment 资源中。
    • 集群管理员在创建集群前配置 PlatformOperator 时,无法轻松确定所需的软件包名称,需要参考一个已存在的集群或参考产品文档中的示例。没有适当的验证逻辑可以确保单独配置的 PlatformOperator 资源能够成功推出集群。
  • 当在 oc-mirror CLI 插件中使用技术预览 OCI 功能时,镜像目录会嵌入所有 Operator 捆绑包,而不是仅在镜像设置配置文件中指定的那些上过滤。(OCPBUGS-5085)
  • 您运行基于 Agent 的 OpenShift Container Platform 安装程序时,存在一个已知问题:从上一发行版本的生成 ISO 镜像生成 ISO 镜像。此时会显示一条错误消息,并显示与发行版本不匹配。作为临时解决方案,请创建并使用新目录。(OCPBUGS#5159)
  • install-config.yaml 文件中定义的功能不适用于基于 Agent 的 OpenShift Container Platform 安装。目前,还没有临时解决方案。(OCPBUGS#5129)
  • 使用 OVN 驱动程序创建的 RHOSP 上完全填充的负载均衡器可以包含处于待处理创建状态的池。此问题可能会导致 RHOSP 上部署的集群出现问题。要解决这个问题,更新您的 RHOSP 软件包。(BZ#2042976)
  • RHOSP 上的批量负载平衡器成员更新对于 PUT 请求可能会返回 500 代码 。此问题可能会导致 RHOSP 上部署的集群出现问题。要解决这个问题,更新您的 RHOSP 软件包。(BZ#2100135)
  • 使用外部云供应商的集群在轮转后无法检索更新的凭证。以下平台会受到影响:

    • Alibaba Cloud
    • IBM Cloud VPC
    • IBM Power
    • OpenShift Virtualization
    • RHOSP

    作为临时解决方案,请运行以下命令重启 openshift-cloud-controller-manager pod:

    $ oc delete pods --all -n openshift-cloud-controller-manager

    (OCPBUGS-5036)

  • cloud-provider-openstack 尝试使用 API 在 OVN 负载均衡器上创建健康监控器时,存在一个已知问题。这些运行状况监视器会处于 PENDING_CREATE 状态。删除后,关联的负载均衡器会处于 PENDING_UPDATE 状态。没有临时解决方案。(BZ#2143732)
  • 由于一个已知问题,要使用在 RHOSP 上运行的集群的有状态 IPv6 网络,您必须在 worker 节点的内核参数中包含 ip=dhcp,dhcpv6。(OCPBUGS-2104)
  • 当虚拟功能(VF)已存在时,无法在物理功能(PF)上创建 macvlan。此问题会影响 Intel E810 NIC。(BZ#2120585)
  • 目前,在 IPv4 OpenShift Container Platform 集群中手动配置 IPv6 地址和路由时存在一个已知问题。当转换为双栈集群时,新创建的 pod 会保留在 ContainerCreating 状态。目前,还没有临时解决方案。计划在以后的 OpenShift Container Platform 发行版本中解决这个问题。(OCPBUGS-4411)
  • 当在 IBM Public Cloud 上安装的 OVN 集群有 60 个 worker 节点时,同时创建 2000 或更多服务和路由对象可能会导致同时创建的 pod 处于 ContainerCreating 状态。如果发生这个问题,输入 oc describe pod <podname> 命令会显示带有以下警告信息的事件:FailedCreatePodSandBox…​failed to configure pod interface: timed out waiting for OVS port binding (ovn-installed)。当前没有解决此问题的方法。(OCPBUGS-3470)
  • 当在使用 OVN-Kubernetes 网络供应商的集群中替换 control plane 机器时,与 OVN-Kubernetes 相关的 pod 可能无法在替换的机器上启动。当发生这种情况时,新机器上缺少网络会阻止 etcd 替换旧机器。因此,集群会处于这个状态,并可能会降级。当 control plane 被手动替换或被 control plane 机器集替换 时,可能会发生此行为。

    目前还没有临时解决方案来解决这个问题。要避免这个问题,禁用 control plane 机器集,如果集群使用 OVN-Kubernetes 网络供应商,则不要手动替换 control plane 机器。(OCPBUGS-5306)

  • 如果通过 ZTP 部署的集群具有不合规的策略,且没有 ClusterGroupUpdates 对象,则必须重启 TALM pod。重启 TALM 会创建正确的 ClusterGroupUpdates 对象,它强制执行策略合规性。(OCPBUGS-4065)
  • 目前,当您在 macOS 上运行安装程序以便在 VMware vSphere 上安装 OpenShift Container Platform 集群时,存在一个证书合规问题,特别是 x509: certificate is not standards compliant。这个问题与 golang 编译器的已知问题相关,其中编译器无法识别新支持的 macOS 证书标准。这个问题不存在临时解决方案。(OSDOCS-5694)
  • 目前,当使用包含大量文件的持久性卷 (PV) 时,pod 可能无法启动,或者可能需要很长时间才能启动。如需更多信息,请参阅此知识库文章。(BZ1987112)
  • 使用调度到 control plane 节点的 Azure File NFS 卷创建 pod 会导致挂载被拒绝。(OCPBUGS-18581)

    要临时解决这个问题:如果您的 control plane 节点可以调度,pod 可以在 worker 节点上运行,使用 nodeSelector 或 Affinity 将 pod 调度到 worker 节点上。

  • 当使用静态 IP 寻址和 Tang 加密安装 OpenShift Container Platform 集群时,节点在没有网络设置的情况下启动。此条件可防止节点访问 Tang 服务器,从而导致安装失败。要解决此条件,您必须将每个节点的网络设置设置为 ip 安装程序参数。

    1. 对于安装程序置备的基础架构,在安装前通过执行以下步骤为每个节点提供 ip 安装程序参数。

      1. 创建清单。
      2. 对于每个节点,使用注解修改 BareMetalHost 自定义资源,使其包含网络设置。例如:

        $ cd ~/clusterconfigs/openshift
        $ vim openshift-worker-0.yaml
        apiVersion: metal3.io/v1alpha1
        kind: BareMetalHost
        metadata:
          annotations:
            bmac.agent-install.openshift.io/installer-args: '["--append-karg", "ip=<static_ip>::<gateway>:<netmask>:<hostname_1>:<interface>:none", "--save-partindex", "1", "-n"]' 1 2 3 4 5
            inspect.metal3.io: disabled
            bmac.agent-install.openshift.io/hostname: <fqdn> 6
            bmac.agent-install.openshift.io/role: <role> 7
          generation: 1
          name: openshift-worker-0
          namespace: mynamespace
        spec:
          automatedCleaningMode: disabled
          bmc:
            address: idrac-virtualmedia://<bmc_ip>/redfish/v1/Systems/System.Embedded.1 8
            credentialsName: bmc-secret-openshift-worker-0
            disableCertificateVerification: true
          bootMACAddress: 94:6D:AE:AB:EE:E8
          bootMode: "UEFI"
          rootDeviceHints:
            deviceName: /dev/sda

        对于 ip 设置,替换:

        1
        <static_ip>,使用节点的静态 IP 地址,例如 192.168.1.100
        2
        <gateway>,使用网络网关的 IP 地址,例如 192.168.1.1
        3
        <netmask>,使用网络掩码,例如 255.255.255.0
        4
        <hostname_1>,使用节点主机名,如 node1.example.com
        5
        <interface>,使用网络接口的名称,如 eth0
        6
        <fqdn>,使用节点的完全限定域名
        7
        <role>,使用 workermaster,以反映节点的角色
        8
        <bmc_ip>,使用 BMC IP 地址,以及 BMC 的协议和路径。
      3. 将文件保存到 clusterconfigs/openshift 目录中。
      4. 创建集群。
    2. 当使用 Assisted Installer 安装时,在安装前使用 API 修改每个节点的安装程序参数,以将网络设置附加为 ip 安装程序参数。例如:

      $ curl https://api.openshift.com/api/assisted-install/v2/infra-envs/${infra_env_id}/hosts/${host_id}/installer-args \
      -X PATCH \
      -H "Authorization: Bearer ${API_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '
          {
            "args": [
              "--append-karg",
              "ip=<static_ip>::<gateway>:<netmask>:<hostname_1>:<interface>:none", 1 2 3 4 5
              "--save-partindex",
              "1",
              "-n"
            ]
          }
        ' | jq

      对于以前的网络设置,替换:

      1
      <static_ip>,使用节点的静态 IP 地址,例如 192.168.1.100
      2
      <gateway>,使用网络网关的 IP 地址,例如 192.168.1.1
      3
      <netmask>,使用网络掩码,例如 255.255.255.0
      4
      <hostname_1>,使用节点主机名,如 node1.example.com
      5
      <interface>,使用网络接口的名称,如 eth0

联系红帽支持以获取更多详细信息和帮助。

(OCPBUGS-23119)