1.8. 已知问题
在 OpenShift Container Platform 4.1 中,匿名用户可以访问发现端点。之后的版本会取消对这端点的访问,以减少可能的安全漏洞攻击面。一些发现端点被转发到聚合的 API 服务器。但是,升级的集群中会保留未经身份验证的访问,因此现有用例不会中断。
如果您是一个从 OpenShift Container Platform 4.1 升级到 4.9 的集群的集群管理员,您可以撤销或继续允许未经身份验证的访问。建议取消未经身份验证的访问,除非有特殊需要。如果您继续允许未经身份验证的访问,请注意相关的风险。
警告如果您的应用程序依赖未经身份验证的访问,在撤销了未经身份验证的访问后可能会收到 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
-
升级到 OpenShift Container Platform 4.9 时,Cluster Version Operator 会在有故障条件检查时会阻止升级大约五分钟。错误文本
It may not be safe to apply this update
可能会造成误导。当一个或多个 precondition 检查失败时,会出现这个错误。在某些情况下,这些 precondition 检查可能无法在短时间内失败(例如在 etcd 备份过程中)。在这些情况下,Cluster Version Operator 和对应的 Operator 将会根据设计自动解决失败的条件检查,CVO 可以成功启动升级。用户应检查其 Cluster Operator 的状态和条件。如果 Cluster Version Operator 显示
It may not be safe to apply this update
,则这些状态和条件会提供有关消息严重性的更多信息。如需更多信息,请参阅 BZ#1999777, BZ#2061444, BZ#2006611。
-
oc annotate
命令不适用于包含了等号(=
)的 LDAP 组名称,因为命令使用等号作为注释名称和值之间的分隔符。作为临时解决方案,使用oc patch
或oc edit
添加注解。(BZ#1917280) 集群管理员可以为 503、404 或两个错误页面指定自定义 HTTP 错误代码响应页面。如果没有为自定义错误代码响应页面指定正确的格式,则会出现路由器 pod 中断且无法解析。路由器不会重新加载来反映自定义错误代码页面更新。作为临时解决方案,您可以使用
oc rsh
命令在本地访问路由器 pod。然后,在服务自定义 http 错误代码页面的所有路由器 pod 中运行reload-haproxy
:$ oc -n openshift-ingress rsh router-default-6647d984d8-q7b58 sh-4.4$ bash -x /var/lib/haproxy/reload-haproxy
或者,您可以注释路由来强制重新加载。(BZ#1990020), (BZ#2003961)
-
一个 Open Virtual Network(OVN)程序错误会导致 Octavia 负载均衡器的持久性连接问题。创建 Octavia 负载均衡器时,OVN 可能不会将它们插入到一些 Neutron 子网中。对于某些 Neutron 子网,这些负载平衡器可能无法访问。这个问题会影响 Neutron 子网,在配置 Kuryr 时,每个 OpenShift 命名空间都会随机创建它们。因此,当出现这个问题时,从受此问题影响的 OpenShift 命名空间无法访问实施 OpenShift
Service
对象的负载均衡器。由于这个程序错误,不建议在带有 OVN 和 OVN Octavia 的 Red Hat OpenStack Platform(RHOSP)16.1 上使用 Kuryr SDN 的 OpenShift Container Platform 4.8 部署。以后的 RHOSP 发行版本中会解决这个问题。(BZ#1937392) - 当需要集群范围代理才能访问 RHOSP API 时,如果在带有 Kuryr 的 Red Hat OpenStack Platform (RHOSP) 上安装需要使用集群范围代理,则将无法正常工作。(BZ#1985486)
-
由于一个竞争条件,Red Hat OpenStack Platform (RHOSP) 云供应商可能无法正确启动。因此,LoadBalancer 服务可能永远不会设置
EXTERNAL-IP
。作为临时解决方案,您可以使用 BZ#2004542 中所述的步骤重启 kube-controller-manager pod。 -
安装 OpenShift Container Platform 时,安装程序不会提供
ap-northeast-3
AWS 区域作为选项,即使它是一个受支持的 AWS 区域。作为临时解决方案,您可以从安装提示符中选择不同的 AWS 区域,然后在安装集群前更新所生成的install-config.yaml
文件中的区域信息。(BZ#1996544) -
当在
us-east-1
区域中的 AWS 上安装集群时,无法使用本地 AWS 区域。作为临时解决方案,您必须在安装集群时在install-config.yaml
文件中指定非本地可用区。(BZ#1997059) - 您只能在带有公共端点(如 ARM 端点)的 Azure Stack Hub 上安装 OpenShift Container Platform,这些端点使用由公开信任的证书颁发机构 (CA) 签名的证书进行保护。在以后的 OpenShift Container Platform z-stream 发行版本中会添加对内部 CA 的支持。(BZ#2012173)
集群管理员可以为 503、404 或两个错误页面指定自定义 HTTP 错误代码响应页面。路由器不会重新加载来反映自定义错误代码页面更新。作为临时解决方案,路由器 pod 中的 rsh 在为自定义 http 错误代码页面提供服务的所有路由器 pod 中运行
reload-haproxy
:$ oc -n openshift-ingress rsh router-default-6647d984d8-q7b58 sh-4.4$ bash -x /var/lib/haproxy/reload-haproxy
或者,您可以注释路由来强制重新加载。(BZ#1990020)
- 此发行版本包含一个已知问题。如果您自定义 OpenShift OAuth 路由的主机名和证书,Jenkins 不再信任 OAuth 服务器端点。因此,如果用户依赖 OpenShift OAuth 集成来管理身份和访问权限,用户就无法登录 Jenkins 控制台。目前还没有可用的临时解决方案。(BZ#1991448)
由于某些高品质监控指标被意外丢弃,因此在此发行版本中不提供以下容器性能输入和输出指标:
pod
、qos
和System
。这个问题不存在临时解决方案。要跟踪生产工作负载的这些指标,请不要升级到初始 4.9 版本。(BZ#2008120)
- 由于存在软件定义的网络策略,特殊 Resource Operator (SRO) 可能无法在 Google Cloud Platform 上安装。因此,simple-kmod pod 不会被创建。这个问题已在 OpenShift Container Platform 4.9.4 发行版本中解决。(BZ#1996916)
- 在 OpenShift Container Platform 4.9 中,具有集群角色的用户如果对部署或部署配置没有编辑权限,则无法使用控制台扩展部署或部署配置。(BZ#1886888)
- 在 OpenShift Container Platform 4.9 中,当 Developer 控制台中存在最小或没有数据时,大多数监控图表或图形(如 CPU 消耗、内存用量和带宽)都会显示 -1 到 1 的范围。但是,这些值都不能低于零,因此负值不正确。(BZ#1904106)
-
因为
cgroups
不匹配,ip vrf exec
命令无法正常工作。因此,无法在 OpenShift 容器集内使用此命令。要使用虚拟路由和转发 (VRF),应用程序必须可识别 VRF,并直接绑定到 VRF 接口。(BZ#1995631) -
非统一内存访问 (NUMA) 错误可能会导致容器出现不必要的 NUMA 固定,这可能导致延迟或性能下降。拓扑管理器可以使用
single-numa-node
拓扑管理策略可满足的资源将容器固定到多个 NUMA 节点。容器会被固定到有保证服务质量 (QoS) 的 pod。作为临时解决方案,当容器内存资源请求大于single-numa-node
策略时, 不要启动保证的 QoS pod。(BZ#1999603) - 有时,选择要删除的 pod 不会被删除。当集群耗尽资源时会出现这种情况。要重新声明资源,系统会选择一个或多个 pod 进行删除。由于资源较低,导致处理速度较慢,删除操作可能会超过既定的删除宽限期,从而导致失败。如果发生这种情况,请手动删除 pod。然后,集群会重新声明释放的资源。(BZ#1997476)
-
在等待 Open vSwitch (OVS) 端口绑定时,pod 可能会处于
ContainerCreating
状态并超时。报告的事件是failed to configure pod interface: timed out waiting for OVS port binding
。当为 OVN-Kubernetes 插件创建多个 pod 时,可能会出现此问题。(BZ#2005598) -
重启出口节点后,
lr-policy-list
包含错误,如重复记录或丢失的内部 IP 地址。预期结果是lr-policy-list
具有与重启出口节点前相同的记录。作为临时解决方案,您可以重启ovn-kubemaster
pod。(BZ#1995887) - 当包含分布式网关端口的逻辑路由器上启用 IP 多播中继时,多播流量不会在分布式网关端口上正确转发。因此,OVN-Kubernetes 中的 IP 多播功能无法正常工作。(BZ#2010374)
- 在 Web 控制台的 Administrator 视角中,一个页面应该在节点列表可用前显示节点列表,这会导致页面变得无响应。没有临时解决方案,但会在以后的版本中解决这个问题。(BZ#2013088)
Operator Lifecycle Manager (OLM) 结合使用时间戳检查和过时的 API 调用,这些调用不适用于
skipRange
升级,以确定是否需要对特定订阅执行升级。对于使用skipRange
升级的 Operator,升级过程中会有一个延迟,可能需要长达 15 分钟才能完成解决,并可能会在更长时间内被阻止。作为临时解决方案,集群管理员可以删除
openshift-operator-lifecycle-manager
命名空间中的catalog-operator
pod。这会导致自动重新创建 pod,从而导致触发skipRange
升级。(BZ#2002276)- 目前,当在启用了 FIPS 模式的 Google Cloud Platform 上启动 Red Hat Enterprise Linux (RHEL) 8 时,当尝试从 Red Hat Update Infrastructure(RHUI)安装软件包时,RHEL 8 无法下载元数据。作为临时解决方案,您可以禁用 RHUI 存储库,并使用红帽订阅管理来获取内容。(BZ#2001464), (BZ#1997516).
-
在 OpenShift Container Platform 单节点重启后,所有 pod 都会重启,这会导致大量负载比正常的 pod 创建时间更长。这是因为 Container Network Interface (CNI) 无法足够快速地处理
pod add
事件。这时显示以下错误消息:timed out waiting for OVS port binding
。OpenShift Container Platform 单一节点实例最终恢复,比预期要慢。(BZ#1986216) - 当 MetalLB 使用 OVN-Kubernetes Container Network Interface 网络供应商以第 2 层模式运行时,而不是具有发言人 pod 响应 ARP 或 NDP 请求的单个节点,集群中的每个节点都会响应该请求。ARP 响应的意外数量可能类似于 ARP 欺骗攻击。尽管经验与设计不同,但只要主机或子网上的任何软件没有配置为阻止 ARP,流量就会路由到该服务。此程序错误已在 OpenShift Container Platform 发行版本中解决。(BZ#1987445)
- 当 Tang 磁盘加密和静态 IP 地址配置应用到 VMWare vSphere 用户置备的基础架构集群中时,节点在最初置备后无法正确引导。(BZ#1975701)
-
Operator 必须列出 Operator Lifecycle Manager (OLM) 的相关镜像才能从本地源运行。目前,如果没有定义
ClusterServiceVersion
(CSV)对象的relatedImages
参数,opm render
不会填充相关的镜像。计划在后续的版本中修复此问题。(BZ#2000379) - 在以前的版本中,Open vSwitch (OVS) 在每个 OpenShift Container Platform 集群节点上运行,节点导出器代理从节点上收集 OVS CPU 和内存指标。现在,OVS 作为 systemd 单元在集群节点上运行,并且不会收集指标。计划在后续的版本中修复此问题。OVS 数据包指标仍然收集。(BZ#2002868)
-
用于隐藏或显示 OpenShift Container Platform Web 控制台中的 Storage
Overview 页面的标记被错误配置。因此,部署包含 OpenShift Cluster Storage 的集群后,概览页面将无法看到。计划在后续的版本中修复此问题。(BZ#2013132)
在 OpenShift Container Platform 4.6 及之后的版本中,pull 的镜像引用必须指定以下红帽 registry:
-
registry.redhat.io
-
registry.access.redhat.com
-
quay.io
否则,如果没有指定这些 registry,则构建 Pod 无法拉取镜像。
作为临时解决方案,在镜像拉取规格中使用完全限定名称,如
registry.redhat.io/ubi8/ubi:latest
和registry.access.redhat.com/rhel7.7:latest
。另外,您还可以通过添加允许镜像短名称的 registry 来更新镜像 registry 设置。(BZ#2011293)
-
在 OpenShift Container Platform 4.8 之前,默认的负载平衡算法是
leastconn
。在 OpenShift Container Platform 4.8.0 中,对于非透传的路由,默认设置为random
。切换到random
与需要使用长时间运行的 websocket 连接的环境不兼容,因为它显著提高了这些环境中的内存消耗。为缓解这种显著内存消耗,在 OpenShift Container Platform 4.9 中默认负载均衡算法被恢复为leastconn
。一旦有一个不会产生大量内存用量的解决方案可用后,在以后的 OpenShift Container Platform 发行版本中,默认值将更改为random
。您可以输入以下命令来检查默认设置:
$ oc get deployment -n openshift-ingress router-default -o yaml | grep -A 2 ROUTER_LOAD_BALANCE_ALGORITHM - name: ROUTER_LOAD_BALANCE_ALGORITHM value: leastconn
random
选项仍然可用。但是,受益于此算法选择的路由必须通过输入以下命令在注解中明确设置该选项:$ oc annotate -n <NAMESPACE> route/<ROUTE-NAME> "haproxy.router.openshift.io/balance=random"
-
当指定托管在本地 registry 中的镜像时,
oc adm release extract --tools
命令会失败。(BZ#1823143) 在 OpenShift Container Platform 单一节点配置中,使用实时内核(
kernel-rt
)时 pod 创建时间比使用非实时内核时慢两倍。使用kernel-rt
时,较慢的 pod 创建时间会影响支持的最大 pod 数量,因为节点重启后会影响到恢复时间。作为临时解决方案,当使用
kernel-rt
时,您可以通过使用rcupdate.rcu_normal_after_boot=0
内核参数引导来缩短恢复时间。这需要一个实时内核版本kernel-rt-4.18.0-305.16.1.rt7.88.el8_4
或更高版本。这个已知问题适用于 OpenShift Container Platform 版本 4.8.15 及更新的版本。(BZ#1975356)-
在 OpenShift Container Platform 单节点重启后,所有 pod 都会重启,这会导致大量负载比正常的 pod 创建时间更长。这是因为 Container Network Interface (CNI) 无法足够快速地处理
pod add
事件。这时显示以下错误消息:timed out waiting for OVS port binding
。OpenShift Container Platform 单一节点实例最终会恢复,但比预期要慢。这个已知问题适用于 OpenShift Container Platform 版本 4.8.15 及更新的版本。(BZ#1986216) -
SNO 集群置备过程中出现了一个错误,
bootkube
会尝试在集群 bootstrap 过程末尾使用oc
。kube API 收到关闭请求,这会导致集群 bootstrap 过程失败。(BZ#2010665) - 因为修改的引导表条目,在同一主机上成功部署 OpenShift Container Platform 版本 4.8 后部署 OpenShift Container Platform 版本 4.9 SNO 集群会失败。(BZ#2011306)
- 当 OpenShift Container Platform 版本 4.8.5 中部署了基于 DPDK 的工作负载时,inbox iavf 驱动程序会出现不稳定的问题。当在运行 RHEL for Real Time 8 的主机上部署 DPDK 工作负载时,这个问题也显而易见。安装了 Intel XXV710 NIC 的主机中会发生这个问题。(BZ#2000180)
-
PTP Operator 部署的
linuxptp
子系统中出现时钟跳过错误。报告的错误信息为:clock jumped backward or running slower than expected!
。在 OpenShift Container Platform 版本 4.8 或 4.9 集群中安装 Intel Columbiaville E810 NIC 的主机中会出现错误。此错误可能与 Intel ice 驱动程序相关,而不是linuxptp
子系统中的错误。(BZ#2013478) 有时,在 DU 节点安装零接触置备(ZTP)安装过程中,Operator 安装会失败。
InstallPlan
API 报告了错误。报告的错误消息为:Bundle unpacking failed。Reason: DeadlineExceeded
。如果 Operator 安装任务超过 600 秒,则会出现错误。作为临时解决方案,请通过对失败 Operator 运行以下
oc
命令来重试 Operator 安装:删除目录源:
$ oc -n openshift-marketplace delete catsrc <failed_operator_name>
删除安装计划:
$ oc -n <failed_operator_namespace> delete ip <failed_operator_install_plan>
删除订阅,并等待相关的自定义资源策略重新创建 Operator
CatalogSource
和Subscription
资源:$ oc -n <failed_operator_namespace> delete sub <failed_operator_subscription>
预期结果
Operator
InstallPlan
和ClusterServiceVersion
资源会被创建并安装 Operator。
SR-IOV Operator 和 Machine Config Operator (MCO) 之间存在一个竞争条件,这会在 DU 节点的 ZTP 安装过程中以不同的方式出现,并且以不同的方式列出其自身。竞争条件可能会导致以下错误:
当 ZTP 安装过程完成置备 DU 节点时,有时不会应用性能配置集配置。当 ZTP 安装过程完成置备 DU 节点时,性能配置集配置不会应用到节点,
MachineConfigPool
资源会处于Updating
状态。作为临时解决方案,请执行以下步骤。
获取失败的 DU 节点的名称:
$ oc get mcp
输出示例
NAME CONFIG UPDATED UPDATING DEGRADED control-plane-1 rendered-control-plane-1-90fe2b00c718 False True False compute-1 rendered-compute-1-31197fc6da09 True False False
取消控制出现故障的节点,并等待
machine-config-daemon
应用性能配置集。例如:$ oc adm uncordon compute-compute-1-31197fc6da09
预期结果
machine-config-daemon
将性能配置集配置应用到节点。
- 有时,性能配置集配置不会在 DU 节点配置期间应用。作为临时解决方案,请更改在 DU 节点上应用策略的顺序。首先应用 Machine Config Operator (MCO) 和 Performance Addon Operator (PAO) 策略,然后应用 SR-IOV 策略。
在 DU 节点的策略配置期间,重新引导可能需要十分钟时间。这个实例不需要临时解决方案。系统最终会恢复。
- 当虚拟功能(VF)已存在时,无法在物理功能(PF)上创建 macvlan。此问题会影响 Intel E810 NIC。(BZ#2120585)