1.6. 程序错误修复

API 服务器和身份验证
  • 在以前的版本中,加密条件可能会无限期地保留,并报告为某些 Operator 的降级条件。现在,过时的加密条件被正确清除,不再报告不正确。(BZ#1974520)
  • 在以前的版本中,API 服务器客户端证书的 CA 在集群生命周期早期轮转,这会阻止 Authentication Operator 创建证书签名请求 (CSR),因为以前具有相同名称的 CSR 仍然存在。在发送 TokenReview 请求时,Kubernetes API 服务器无法将自身身份验证到 OAuth API 服务器,这会导致身份验证失败。现在,在 Authentication Operator 创建 CSR 时会使用生成的名称,因此早期为 API 服务器客户端证书轮转 CA 不再会导致身份验证失败。(BZ#1978193)
裸机硬件置备
  • 在以前的版本中,因为创建 initContainers 的顺序,metal3 pod 无法下载 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像。这个问题已通过重新排序 initContainers 创建来解决,以便在 metal3-machine-os-downloader initContainer 之前创建 metal-static-ip-set initContainer。RHCOS 镜像现在可以按预期下载。(BZ#1973724)
  • 在以前的版本中,当在裸机中使用配置为使用 idrac-virtualmedia 的主机的安装程序置备安装时,该主机的 bios_interface 默认被设置为 idrac-wsman。这会导致 BIOS 设置不可用,并出现异常。在使用 idrac-virtualmedia 时,通过将 idrac-redfish 用于默认 bios_interface 解决了此问题。(BZ#1928816)
  • 在以前的版本中,在 UEFI 模式中,ironic-python-agent 在下载 RHCOS 镜像后会创建一个 UEFI 引导装载程序条目。当基于 RHEL 8.4 使用 RHCOS 镜像时,镜像可能无法使用此条目引导,并输出 BIOS 错误屏幕。这个问题由 ironic-python-agent 根据镜像中的 CSV 文件配置引导条目来解决,而不使用固定的引导条目。镜像可以正常引导,且无错误。(BZ#1966129
  • 在以前的版本中,如果在 install-config 中设置了 provisioningHostIP,它会被分配给 metal3 pod,即使 provisioning 网络已被禁用。该问题已解决。(BZ#1972753)
  • 在以前的版本中,因为 sushy 资源库不匹配,被支持的安装程序无法置备基于 Supermicro X11/X12 的系统。不匹配会导致安装问题,因为无法将虚拟介质附加到 InsertedWriteProtected 属性,在 VirtualMedia.InsertMedia 请求正文中不允许。这个问题已通过修改 sushy 资源库并添加一个条件来解决,以便在不严格要求时停止发送这些可选属性,从而允许安装超过这个时间点。(BZ#1986238)
  • 在以前的版本中,置备状态中的一些错误类型会导致取消置备主机。如果置备到裸机主机的镜像不可用,重启 metal3 pod 后会出现这种情况。在这种情况下,主机将进入取消调配状态。这个问题已通过在置备状态下修改错误操作来解决,以便在镜像不可用时,会报告错误但不会启动取消置备。(BZ#1972374)
Builds
  • 在 OpenShift Container Platform 及之后的版本中,对错误 BZ#1884270 修剪了 SSH 协议 URL 进行了修复,以尝试提供 SCP 风格的 URL 功能。此错误导致 oc new-build 命令无法选择自动源克隆 secret:构建无法使用 build .openshift.io/sbuild.openshift.io/source-secret-match-uri-1ource-secret-match-uri-1 注解来将 SSH 密钥与关联的 secret 映射,因此无法执行 git 克隆。在这个版本中恢复了来自 BZ#1884270 的更改,以便构建可以使用注解并执行 git 克隆。
  • 在更新前,集群镜像配置的各种允许和块 registry 配置选项可能会阻止 Cluster Samples Operator 创建镜像流。当发生这种情况时,样本 Operator 将自身标记为 degraded,这会影响到 OpenShift Container Platform 的常规安装和升级状态。

    在各种情况下,Cluster Samples Operator 可以引导自身为 removed。在这个版本中,这些情况包括 镜像控制器配置参数 阻止使用默认镜像 registry 或通过 samplesRegistry 设置 指定的镜像 registry 创建镜像流。Operator 状态还指明集群镜像配置何时阻止创建示例镜像流。

Cloud Compute
  • 在以前的版本中,当为新服务器创建根卷且该服务器创建成功时,不会触发卷的自动删除,因为没有删除与卷关联的服务器。在某些情况下,这会导致创建许多额外的卷,如果达到卷的配额,则会导致错误。在这个版本中,当服务器创建调用失败时,新创建的根卷会被删除。(BZ#1943378)
  • 在以前的版本中,当使用 instanceType 的默认值时,Machine API 在 AWS 上创建 m4.large 实例。这与 OpenShift Container Platform 安装程序创建的机器的 m5.large 实例类型不同。在这个版本中,当指定默认值时,Machine API 会为 AWS 上的新机器创建 m5.large 实例。(BZ#1953063)
  • 在以前的版本中,计算节点的机器集定义无法指定是否应中继端口。这在要求用户为同一机器配置中继和非中继端口的技术中存在问题。此发行版本添加了一个新的字段 spec.Port.Trunk = bool,用户可以更加灵活地确定哪些端口会导致中继。如果没有指定值,spec.Port.Trunk 将继承 spec.Trunk 的值,创建的中继名称与所用端口的名称匹配。(BZ#1964540)
  • 在以前的版本中,Machine API Operator 会持续附加新目标,即使它们已经附加。这些对 AWS API 的过多调用会导致大量错误。在这个版本中,Operator 在尝试附加过程前检查是否需要负载均衡器附加。此更改减少了失败 API 请求的频率。(BZ#1965080)
  • 在以前的版本中,当为虚拟机使用自动固定时,属性的名称为 disabledexistingadjust。在这个版本中,名称更好地描述了每个策略,existing 被移除,因为它在 oVirt 中被阻断。新属性名为 noneresize_and_pin,这与 oVirt 用户界面一致。(BZ#1972747)
  • 在以前的版本中,集群自动扩展无法访问 csidrivers.storage.k8s.iocsistoragecapacities.storage.k8s.io 资源,这会导致权限错误。在这个版本中,更新了分配给集群自动扩展的角色,使其包含这些资源的权限。(BZ#1973567)
  • 在以前的版本中,可以使用已删除的节点删除机器。这会导致机器无限期处于删除阶段。在这个版本中,您可以正确地删除处于此状态的机器。(BZ#1977369)
  • 使用 boot-from-volume 镜像时,如果机器控制器重启,创建新实例会泄漏卷。这会导致永远不会清理之前创建的卷。在这个版本中,确保之前创建的卷被修剪或重复使用。(BZ#1983612)
  • 在以前的版本中,Red Hat Virtualization (RHV) 供应商会忽略带有 br-ex 名称的 NIC 的机器。因为网络类型的 OVNKubernetes 会创建一个带有 br-ex 名称的 NIC,这会导致机器无法在 OVN-Kubernetes 上获取 IP 地址。在这个版本中,可以在 RHV 上安装 OpenShift Container Platform,网络设置为 OVNKubernetes。(BZ#1984481)
  • 在以前的版本中,当使用代理和自定义 CA 证书组合在 Red Hat OpenStack Platform (RHOSP) 上部署时,集群将无法完全正常工作。在这个版本中,代理设置传递给连接自定义 CA 证书时使用的 HTTP 传输,确保所有集群组件都按预期工作。(BZ#1986540)
Cluster Version Operator
  • 在以前的版本中,Cluster Version Operator (CVO) 没有遵循代理配置资源中的 noProxy 属性。因此,当只有非代理连接完成时,CVO 会被拒绝访问更新建议或发布签名。现在,当代理资源请求直接、未经代理的访问时,CVO 会直接访问上游更新服务和签名存储。(BZ#1978749)
  • 在以前的版本中,Cluster Version Operator (CVO) 从代理资源规格属性加载代理配置,而不是从由 Network Operator 验证的状态属性中加载。因此,任何错误配置的值都会阻止 CVO 访问上游更新服务或签名存储。现在,CVO 只从验证的状态属性加载其代理配置。(BZ#1978774)
  • 在以前的版本中,Cluster Version Operator (CVO) 不会删除在清单外添加的卷挂载。因此,pod 创建可能会在卷失败时失败。现在,CVO 会删除清单中没有出现的所有卷挂载。(BZ#2004568)
控制台存储插件
  • 在以前的版本中,在使用 Ceph 存储时,控制台存储插件不必要的包括命名空间参数的冗余使用。这个程序错误没有客户可见的影响,但插件已被更新,以避免冗余地使用命名空间。(BZ#1982682)
镜像 Registry
  • Operator 用于检查 registry 是否应该使用自定义容限 (tolerations) 检查 spec.nodeSelector 而不是 spec.tolerations。只有在设置了 spec.nodeSelector 时,才会应用 spec.tolerations 中的自定义容限。在这个版本中,使用字段 spec.tolerations 检查是否存在自定义容限。现在,如果设置了 spec.tolerations,Operator 将使用自定义容限。(BZ#1973318)
  • configs.imageregistry 中的 spec.managementState 设置为 Removed,这会导致镜像修剪器 pod 生成 CronJob 在 v1.21 及更高版本中已弃用的警告,而实际应该使用 batch/v1。在这个版本中,OpenShift Container Platform oc 中使用 batch/v1 更新 batch/v1beta1。现在,在镜像修剪器 pod 中不再出现已弃用的 CronJob 的警告。(BZ#1976112)
安装程序
  • 在以前的版本中,Azure control plane 节点上的网络接口在接口名称中缺少一个连字符。这与其他平台相比不一致,这会导致问题。现在,已添加了缺少的连字符。现在,无论平台是什么,所有 control plane 节点都以相同的形式命名。(BZ#1882490)
  • 现在,您可以在 install-config.yaml 文件中为 oVirt 配置 autoPinningPolicyhugepages 字段 。autoPinningPolicy 字段允许您自动设置集群的非统一内存访问 (NUMA) 固定设置和 CPU 拓扑更改。hugepages 字段允许您设置虚拟机监控程序的 Hugepages。(BZ#1925203)
  • 在以前的版本中,当启用了 FIPS 的情况下使用 Ed25519 SSH 密钥类型时,安装程序不会输出任何错误,即使它不能被使用。现在,安装程序会验证 SSH 密钥类型,在启用了 FIPS 不支持 SSH 密钥类型时输出错误。启用 FIPS 时,只允许 RSA 和 ECDSA SSH 密钥类型。(BZ#1962414)
  • 在某些情况下,Red Hat OpenStack Platform (RHOSP) 网络中继中没有包含用来指示中继所属集群的标签。因此,集群删除丢失了中继端口并卡在循环中,直到它们超时为止。现在,删除集群会删除标记的端口是父端口的中继。(BZ#1971518)
  • 在以前的版本中,当在 Red Hat OpenStack Platform (RHOSP) 上卸载集群时,安装程序会使用低效算法来删除资源。低效算法导致卸载过程需要的时间超过实际需要的时间。安装程序会使用更有效的算法进行更新,该算法会更快速地卸载集群。(BZ#1974598)
  • 在以前的版本中,如果将 AWS_SHARED_CREDENTIALS_FILE 环境变量设置为空文件,安装程序会提示提供凭证,然后创建一个 aws/credentials 文件,忽略环境变量的值,并可能会覆盖现有的凭证。在这个版本中,安装程序被更新以在指定的 文件中存储凭证。如果指定文件具有无效凭据,安装程序会生成错误,而不是覆盖该文件,并可能导致信息丢失。(BZ#1974640)
  • 在以前的版本中,当用户在 Azure 上删除与另一个集群共享资源的集群时遇到错误信息,因此很难了解删除失败的原因。在这个版本中,添加了一个错误消息来解释发生失败的原因。(BZ#1976016)
  • 在以前的版本中,因为一个拼写错误,Kuryr 部署会根据错误的要求被检查,这意味着使用 Kuryr 的安装可能会成功,即使它们没有满足 Kuryr 的最低要求。在这个版本中消除了错误,允许安装程序检查正确的要求。(BZ#1978213)
  • 在更新前,keepalived 的入口检查不包括 fall 和 boost 指令,这意味着单个失败的检查可能会导致入口虚拟 IP 故障。此程序错误修复引进了 fallup 指令,并引发了防止此类故障切换的指令。(BZ#1982766)
Kubernetes API 服务器
  • 在以前的版本中,当同时创建部署和镜像流时,可能会出现一个竞争条件,从而导致部署控制器在无限循环中创建副本集。API 服务器的镜像策略插件的职责降低,并同时创建部署,镜像流不再会导致无限副本集。(BZ#1925180)、(BZ#1976775)
  • 在以前的版本中,安装程序 pod 和 cert-syncer 容器之间出现了竞争,它们写入相同的路径。这可能会导致某些证书留空,并阻止服务器运行。Kubernetes API 服务器证书现在以原子方式编写,以防止在多个进程间发生竞争。(BZ#1971624)
监控
  • 在此次更新之前,即使 cluster-monitoring-view 用户角色的目标是只允许访问 Alertmanager,但分配给此角色的非管理员用户仍然可以创建和静默警报。在这个版本中,仅分配给此角色的用户无法再创建或静默警报。要允许非管理员用户创建和静默警报,除了 cluster-monitoring-view 角色外,还需要为他们分配新的 monitoring-alertmanager-edit 角色。(BZ#1947005)
网络
  • 使用 OVN-Kubernetes 集群网络供应商时,逻辑流缓存是在没有任何内存限制的情况下配置的。因此,在某些情况下,高内存压力可能会导致节点不可用。在这个版本中,逻辑流缓存默认配置有 1 GB 内存限制。(BZ#1961757)
  • 当使用 OVN-Kubernetes 集群网络供应商时,在稍后升级的 OpenShift Container Platform 4.5 集群中创建的任何网络策略都可能会允许或丢弃意外的流量。在以后的 OpenShift Container Platform 版本中,OVN-Kubernetes 使用不同的约定来管理 IP 地址集,在 OpenShift Container Platform 4.5 中创建的任何网络策略都不使用这个规则。现在,在升级过程中,所有网络策略都会迁移到新约定。(BZ#1962387)
  • 对于 OVN-Kubernetes 集群网络供应商,当使用 must-gather 检索 Open vSwitch (OVS) 日志时,收集的日志记录数据中没有 INFO 日志级别。现在,所有日志级别都包含在 OVS 日志记录数据中。(BZ#1970129)
  • 在以前的版本中,性能测试表明,服务控制器指标因为标签要求而显著提高卡片。因此,Open Virtual Network (OVN) Prometheus pod 的内存用量被提升。在这个版本中,标签要求会被删除。现在,服务控制器卡性指标和内存用量会减少。(BZ#1974967)
  • 在以前的版本中,ovnkube-trace 需要在源和/或目标 pod 中安装 iproute,因为它需要检测接口 link 索引。如果没有安装 iproute,这会导致 ovnkube-trace 在 pod 上失败。现在,您可以从 /sys/class/net/<interface>/iflink 而不是 iproute 中获取 link 索引。因此,ovnkube-trace 不再需要在源和目标 Pod 中安装 iproute。(BZ#1978137)
  • 在以前的版本中,Cluster Network Operator (CNO) 为 network-check-source 服务部署了一个服务监控器,以便 Prometheus 发现没有正确的注解和基于角色的访问控制 (RBAC)。因此,该服务及其指标永远不会填充在 Prometheus 中。现在,正确的注解和 RBAC 被添加到 network-check-source 服务的命名空间。现在,Prometheus 会提取服务 network-check-source 的指标。(BZ#1986061)
  • 在以前的版本中,在使用 IPv6 DHCP 时,节点接口地址可能会使用 /128 前缀进行租用。因此,OVN-Kubernetes 使用相同的前缀来推断节点的网络,并通过网关将任何其他地址流量(包括流量到其他集群节点)路由到其他地址流量。在这个版本中,OVN-Kubernetes 会检查节点的路由表,并检查节点的接口地址的更广泛的路由条目,并使用该前缀来推断节点的网络。因此,到其他集群节点的流量不再通过网关路由。(BZ#1980135)
  • 在以前的版本中,当集群使用 OVN-Kubernetes Container Network Interface 供应商时,尝试添加带有 IPv6 地址的出口路由器失败。在这个版本中,对 IPv6 的支持被添加到 egress router CNI 插件中,并添加添加出口路由器成功。(BZ#1989688)
节点
  • 在以前的版本中,在容器中,CRI-O 不会从 /proc/mounts 文件创建到 /etc/mtab 文件的符号链接。因此,用户无法在容器的 /etc/mtab 文件中查看挂载的设备列表。CRI-O 现在添加符号链接。因此,用户可以查看容器的挂载设备。(BZ#1868221)
  • 在以前的版本中,如果在创建 pod 后快速删除 pod,kubelet 可能无法正确清理 pod。这会导致 pod 处于终止状态,并可能会影响升级的可用性。在这个版本中,改进了 pod 生命周期逻辑以避免出现这个问题。(BZ#1952224)
  • 在以前的版本中,当系统内存用量超过保留内存的 90% 时,SystemMemoryExceedsReserved 警报会触发。因此,集群可能会触发过多的警报。该警报的阈值已更改为触发内存的 95%。(BZ#1980844)
  • 在以前的版本中,CRI-O 中的一个程序错误会导致 CRI-O 泄漏它所创建进程的子 PID。因此,如果负载不足,systemd 可以创建大量僵尸进程。如果节点缺少 PID,这可能会导致节点失败。已修复 CRI-O 以防止泄漏。因此,不再创建这些僵尸进程。(BZ#2003197)
OpenShift CLI (oc)
  • 在以前的版本中,oc 命令行工具在镜像 registry 时崩溃,导致一个 slice bounds out of range panic 运行是错误,因为在使用 --max-components 参数时在片段上有一个未检查的索引操作。在这个版本中,添加了检查以确保组件检查不会请求范围外索引值,以便在使用 --max-components 参数时 oc 工具不再 panic。(BZ#1786835)
  • 在以前的版本中,oc describe quota 命令在 ClusterResourceQuota 值的 Used memory 中显示不一致的单元,这无法预测且难以阅读。在这个版本中,Used 内存总是使用与 Hard 内存相同的单元,以便 oc describe quota 命令显示可预测的值。(BZ#1955292)
  • 在以前的版本中,oc logs 命令无法用于管道构建,因为缺少客户端设置。客户端设置已在 oc logs 命令中修复,现在可以用于管道构建。(BZ#1973643)
Operator Lifecycle Manager (OLM)
  • 在以前的版本中,当安装的 Operator 将 olm.maxOpenShiftVersion 设置为小于或等于当前版本的次 OpenShift Container Platform 版本时,Operator Lifecycle Manager (OLM) 可升级条件信息是不正确的。这会导致错误信息被修复,它指定了当 olm.maxOpenShiftVersion 设置为与当前 OpenShift Container Platform 版本不同的版本时,只阻断次版本和主版本升级。(BZ#1992677)
  • 在以前的版本中,当捆绑包出现在索引中时,opm 命令无法弃用它们。因此,在同一调用中作为另一个弃用的一部分被截断的捆绑包会报告为缺少的。在这个版本中,在任何弃用前添加了对捆绑包的检查,以区分不存在的捆绑包和已被截断的捆绑包。因此,同一升级路径中弃用的捆绑包不再报告为缺失。(BZ#1950534)
  • 当 Operator Lifecycle Manager (OLM) 尝试更新集群中的自定义资源定义 (CRD) 对象时,可能会出现临时错误。这会导致 OLM 永久失败包含 CRD 的安装计划。在这个版本中更新了 OLM,针对资源修改冲突错误重试 CRD 更新。因此,OLM 现在对这类瞬态错误更具弹性。如果 OLM 能够重试并解决冲突错误,安装计划不再会失败。(BZ#1923111)
  • opm index|registry add 命令试图验证替换的索引中是否存在 Operator 捆绑包,无论它们是否已从索引中截断。当给定软件包的捆绑包已弃用后,命令将始终失败。在这个版本中,更新了 opm CLI 来处理这个边缘情况,不再验证是否存在截断的捆绑包。因此,在给定软件包弃用捆绑包后,命令不再会失败。(BZ#1952101)
  • Operator Lifecycle Manager (OLM) 现在可以允许使用目录源资源中的标签将优先级类注入到 registry pod 中。默认目录源是由集群管理的命名空间中的重要组件,后者要求优先级类。在这个版本中,openshift-marketplace 命名空间中的所有默认目录源都有一个 system-cluster-critical 优先级类。(BZ#1954869)
  • Marketplace Operator 使用 leader-for-life 实现,其中含有租期所有者身份的配置映射具有控制器 pod 放置的所有者引用。如果 pod 调度的节点不可用,且 pod 无法终止,则此问题。这使得配置映射无法正确收集垃圾,因此可以选举新的领导。因为较新的 Marketplace Operator 版本无法获得领导选举机制,所以会阻止次要版本集群升级。需要手动清理保存领导选举租期的配置映射,以便释放锁定并完成 Marketplace 组件的升级。此程序错误修复切换为使用 leader-for-lease 选举机制实施。因此,领导选举不会再卡住这种情况。(BZ#1958888)
  • 在以前的版本中,为安装计划引进了新的 Failed 阶段。如果无法检测正在在其中创建安装计划的命名空间的有效 Operator 组 (OG) 或服务帐户 (SA) 资源,则会将安装计划转变为失败状态。也就是说,第一次协调安装计划时无法检测这些资源,这被视为平均失败。这是来自以下安装计划行为的回归:

    • 如果无法检测 OG 或 SA 资源,则会重新排列安装计划以进行协调。
    • 在达到通知器队列重试限制前创建所需的资源会把安装计划从 Installing 阶段转换到 Complete 阶段,除非捆绑包解包步骤失败。

    对于同时应用一组清单以安装包含订阅的 Operator 来创建安装计划,以及所需的 OG 和 SA 资源的用户,这个回归会导致一些不正常的行为。在这些情况下,每当 OG 和 SA 协调出现延迟时,安装计划将转变为永久失败状态。

    在这个版本中,删除了将安装计划转换到 Failed 阶段的逻辑。现在,对于任何协调错误,安装计划都会重新排队。因此,当没有检测到 OG 时,会设置以下条件:

    conditions:
     - lastTransitionTime: ""2021-06-23T18:16:00Z""
     lastUpdateTime: ""2021-06-23T18:16:16Z""
     message: attenuated service account query failed - no operator group found that
     is managing this namespace
     reason: InstallCheckFailed
     status: ""False""
     type: Installed

    创建有效的 OG 时,会设置以下条件:

    conditions:
     - lastTransitionTime: ""2021-06-23T18:33:37Z""
     lastUpdateTime: ""2021-06-23T18:33:37Z""
     status: ""True""

    (BZ#1960455)

  • 更新目录源时,Get 调用将立即对与目录源相关的多个资源进行 Delete 调用。在某些情况下,资源已被删除,但该资源仍然存在于缓存中。这允许 Get 调用成功,但以下 Delete 调用会失败,因为集群中不存在该资源。在这个版本中更新了 Operator Lifecycle Manager (OLM),如果未找到资源,则忽略 Delete 调用返回的错误。因此,OLM 在更新目录源时不再报告错误,因为缓存问题会导致 Delete 调用中的 "Resource Not Found" 错误。(BZ#1967621)
  • 名称超过 63 个字符限制的集群服务版本 (CSV) 会导致无效的 ownerref 标签。在以前的版本中,当 Operator Lifecycle Manager (OLM) 使用 ownerref 引用来检索拥有的资源(包括集群角色绑定)时,列表者会因为无效标签返回命名空间中的所有集群角色绑定。在这个版本中更新了 OLM,以使用不同的方法让服务器拒绝无效的 ownerref 标签。因此,当 CSV 具有无效名称时,OLM 不再删除集群角色绑定。(BZ#1970910)
  • 在以前的版本中,Operator 依赖项在安装后并不总是保留。安装声明依赖项的 Operator 后,同一命名空间中的后续更新和安装可能无法满足之前安装的 Operator 依赖项。在这个版本中,依赖项以及 Operator 的所有声明的属性都会保留在 Operator 的 ClusterServiceVersion (CSV) 对象的注解中。因此,在将来的安装中,声明的 Operator 的依赖项仍会受到考虑。(BZ#1978310)
  • 在以前的版本中,当删除了带有已弃用捆绑包的 Operator 时,弃用历史记录不会包含在垃圾回收中。因此,如果您重新安装了 Operator,捆绑包版本会显示已弃用的表。在这个版本中,解决了为已弃用的捆绑包更好地垃圾回收问题。(BZ#1982781)
  • 在以前的版本中,Operator 兼容性计算中使用集群的 z-stream 版本。因此,OpenShift Container Platform 的微发行版本被阻止。在这个版本中,在 Operator 兼容性比较中忽略了集群 z-stream 版本,解决了这个问题。(BZ#1993286)
OpenShift API 服务器
  • 在以前的版本中,对服务的发现端点的一个失败请求可能会使 Operator 报告 Available=False。为了提高弹性,已进行了一组改进,以防止一些 Operator 在更新过程中因为各种临时错误而报告 Available=False。(BZ#1948089)
OpenShift 更新服务
  • 在以前的版本中,当通过 web 控制台创建更新服务应用程序时,会出现无效的主机错误。这是因为默认的 OpenShift Update Service (OSUS) 应用程序名称太长。现在有一个较短的默认名称,不再发生错误。(BZ#1939788)
Performance Addon Operator

OpenShift Container Platform 4.9 现在提供了对 Performance Addon Operator 的以下更新:

  • 在以前的版本中,Performance Addon Operator 无法在带有带宽限制连接的环境中正确重启。它还无法在单一节点集群或其他边缘节点时正确重启,而丢失了与镜像 registry 的连接。在这个版本中,如果镜像已在节点上可用,则通过确保没有从 registry.redhat.io 中拉取(pull)镜像来解决这个问题。在这个版本中,确保 Performance Addon Operator 使用本地镜像缓存中的镜像正确重启。(BZ#2055019)
Red Hat Enterprise Linux CoreOS (RHCOS)
  • 在以前的版本中,systemd 无法读取 /etc/kubernetes 中的环境文件。SELinux 策略会导致这个问题,kubelet 不会启动。该策略已被修改。kubelet 启动,并读取环境文件。(BZ#1969998)
  • 在附加 ECKD DASD 的 s390x 内核虚拟机 (KVM) 中,DASD 看似是常规的 virtio 存储设备,但如果删除了 VTOC,将无法访问。因此,在 KVM 上安装 Red Hat Enterprise Linux CoreOS (RHCOS) 时,您无法使用 DASD 作为 virtio 块设备。coreos-installer 程序已被更新,现在当安装目标是一个 virtio 存储设备(如附加到 KVM 的 ECKD DASD)时,它会使用 VTOC-format 分区表安装 Red Hat Enterprise Linux CoreOS(RHCOS)。(BZ#1960485)
  • 在以前的版本中,NetworkManager-wait-online-service 超时时间过早,这会阻止在 coreos-installer 程序启动前建立连接。因此,如果网络启动用时过长,coreos-installer 程序将无法获取 Ignition 配置。在这个版本中,NetworkManager-wait-online-service 超时被增加到其默认的上游值。因此,coreos-installer 程序不再无法获取 Ignition 配置。(BZ#1967483)
路由
  • 在以前的版本中,Cluster Network Operator (CNO) 试图清理代理配置时会出现配置偏差,特别是 no_proxy 配置。这会导致 no_proxy 中缺少特定的 IPv6 CIDR。此修复实施为所有场景更新双栈(IPV4 和 IPV6)的逻辑。(BZ#1981975)
  • 在以前的版本中,如果 dns.config.openshift.io Operator 的 .spec.privateZone 字段被错误填写,导致 Ingress Operator 无法找到私有托管区,则 Ingress Operator 会被降级。但是,即使修复了 .spec.privateZone 字段,Ingress Operator 仍会降级。Ingress Operator 找到托管区并添加 .apps 资源记录,但 Ingress Operator 不会重置降级状态。在这个版本中,监视 DNS 配置对象并监控 spec.privateZone 字段的更改。它应用适当的逻辑,并相应地更新 Operator 状态。当设置了正确的 .spec.privateZone 字段后,Operator 状态将返回到降级(degraded)或 False。(BZ#1942657)
Samples
  • 在以前的版本中,缺少连接超时会导致长时间的延迟。当 Cluster Samples Operator 的 managementState 设置为 Removed 时,会测试到 registry.redhat.io 的连接。添加了连接超时后,会取消延迟。(BZ#1990140)
存储
  • 在以前的版本中,您可以使用正在使用的 PV 删除 LocalVolumeSet,这需要手动清理。在这个版本中,所有发布的 PV 都会自动清理。(BZ#1862429)
  • 在以前的版本中,oc get volumesnapshotcontent 命令不会显示卷快照的命名空间,这意味着卷快照没有被唯一标识。此命令现在显示卷快照的命名空间。(BZ#1965263)
  • 在以前的版本中,当与使用自签名证书的 Red Hat OpenStack Platform (RHOSP) 端点通信时,Manila CSI Operator 会使用自定义传输。因为这个自定义传输不会使用代理环境变量,所以 Manila CSI Operator 无法与 Manila 进行通信。在这个版本中,自定义传输会消耗代理环境变量。因此,Manila CSI Operator 现在可以使用代理和自定义 CA 证书。(BZ#1960152)
  • 在以前的版本中,Cinder CSI Driver Operator 没有使用配置的代理连接到 Red Hat OpenStack Platform (RHOSP) API,这会导致安装失败。在这个版本中,Cinder CSI Driver Operator 部署中包含了一个注解,用于确保容器上设置了代理环境变量。因此,安装不再会失败。(BZ#1985391)
  • Local Storage Operator 检查新添加的块设备的频率已从 5 秒改为 60 秒,以减少它的 CPU 消耗。(BZ#1994035)
  • 在以前的版本中,与 Manila CSI Operator 通信失败会降级集群。在这个版本中,与 Manila CSI Operator 端点通信失败时会导致一个非严重错误。因此,Manila CSI Operator 被禁用,而不是降级集群。(BZ#2001958)
  • 在以前的版本中,Local Storage Operator 会删除孤立的持久性卷 (PV),并有 10 秒的延迟,延迟是累积的。当同时删除多个持久性卷声明 (PVC) 时,可能需要几分钟或数小时才能删除其 PV。因此,在几个小时内,新 PVC 对应的本地磁盘不可用。在这个版本中,10 秒的延迟被移除。因此,会检测到 PV,并更快地为新 PVC 提供对应的本地磁盘。(BZ#2007684)
Web 控制台(管理员视角)
  • 在以前的版本中,PF4 表中的所有行都在重新渲染。在这个版本中,React.memo 中的内容被打包,因此内容不会在每个滚动事件中恢复。(BZ#1856355)
  • 在以前的版本中,OpenShift Container Platform Web 控制台中的 Cluster Utilization 中的图表以混淆的方式显示数据时间跨度。例如,如果选择了 6 小时的时间范围选项,但数据仅存在于最后三个小时,则这三个数据点被扩展以填充整个图表。前三个小时不会被显示。这可能会导致混淆,使用户认为图表显示了完整的 6 小时时间跨度。为避免混淆,图表现在在缺少信息的地方显示空白。在本例中,图表显示整个 6 小时的时间跨度,数据从第四个小时开始。前三个小时为空。(BZ#1904155)
  • 在以前的版本中,web 控制台中的 NetworkPolicy 不会被转换为韩语或中文。在这个版本中,当使用韩语或中文查看 web 控制台时,NetworkPolicy 会正确翻译。(BZ#1965930)
  • 在以前的版本中,Console Overview 部分的 Needs Attention 状态的问题显示 Operator 为 upgrading,即使它们没有升级。在这个版本中解决了 Needs Attention 状态的问题,以便显示 Operator 的正确状态。(BZ#1967047)
  • 在以前的版本中,失败的 Cluster Service Version (CSV) 的警报显示一个通用的 status.message,这个信息无法帮助对失败的 CSV 进行故障排除。在这个版本中,复制的 CSV 显示帮助信息以及原始 CSV 的链接来进行故障排除。(BZ#1967658)
  • 在以前的版本中,用户无法使用 masthead 中的下拉选项和键盘。在这个版本中,用户可以使用键盘访问下拉选项。(BZ#1967979)
  • 在以前的版本中,用于与所有者匹配的 Operator 拥有的资源会返回错误匹配项。因此,有时 Operator 拥有的资源页面的 Managed by 链接会链接到不正确的 URL。在这个版本中,更新了功能逻辑来正确匹配拥有的 Operator。因此,Managed by 链接现在链接到正确的 URL。(BZ#1970011)
  • 在以前的版本中,Operator Hub Web 控制台界面会导致用户出现不相关的安装计划。在这个版本中,Operator OperatorHub 将用户链接到 Operator Subscription 详情选项卡,以查看安装进度。(BZ#1970466)
  • 在以前的版本中,OAuth 详情页面上的 Add 下拉列表中的项目没有国际化。在这个版本中,这些项目实现了国际化,改进了使用非英语的用户的用户体验。(BZ#1970604)
  • 在以前的版本中,一个无效的本地化属性会阻止某些信息被国际化。在这个版本中,删除了无效的属性。因此,这些信息已国际化,非英语用户的用户体验也得到改进。(BZ#1970980)
  • 在这个版本中,删除了在列表页面中利用资源链接时出现的工具提示,因为这些信息并不会改善用户体验。(BZ#1971532)
  • 在以前的版本中,控制台 pod 使用 preferredDuringSchedulingIgnoredDuringExecution 反关联性规则进行部署,这有时会导致两个控制台 pod 调度到同一 control plane 节点上。在这个版本中,将规则改为 requiredDuringSchedulingIgnoredDuringExecution,以便在条件匹配时 pod 必须调度到不同的节点上。(BZ#1975379)
  • 在以前的版本中,卸载 Operator 无法删除所有启用的插件。在这个版本中,卸载 Operator 会删除所有启用的插件。(BZ#1975820)
  • 在以前的版本中,前端 Operator Lifecycle Manager (OLM) 描述符处理只使用第一个 x-descriptor 在操作对象详情页面中呈现属性。因此,如果为某个属性定义了多个 x-descriptors,并且列表中的第一个无效或不支持,则它不会如预期显示。在这个版本中更新了描述符验证逻辑,以便优先选择受支持的 x-descriptors 而不是不支持的 x-descriptors。因此,使用列表中第一个有效且受支持的 x 描述符在 Operand 详情 页面上呈现描述符解密的属性。(BZ#1976072)
  • 在以前的版本中,字符串数据用于编码的 secret。因此,web 控制台没有正确上传二进制 secret 数据。在这个版本中对 secret 进行编码,并使用数据而不是 API 中的字符串数据。现在,二进制 secret 可以被正确地上传。(BZ#1978724)
  • 在以前的版本中,当手动终止在集群中运行的进程时,终端 ps -aux 命令显示某些进程没有被清除。这会导致进程保留,使集群处于无效状态。在这个版本中,所有进程都在集群中正确终止,且不会出现在终端上列出的活动进程列表中。(BZ#1979571)
  • 在以前的版本中,当将默认 pull secret 添加到新项目并上传多个 registry 的凭证时,Project Details 页面中只列出第一个凭证。也没有指示该列表已被截断。因此,当用户点击 Default pull secret 中的项目详情时,只会列出第一个凭证。在这个版本中,确保所有凭据都已列出,并通知用户如果当前页面中未列出这些凭证,则存在其他凭证。(BZ#1980704)
  • 在以前的版本中,当用户将默认浏览器语言改为简体中文时,Web 控制台的 Overview 页面中的集群使用资源指标以英语和简体中文字符显示。在这个版本中,用户可以完全使用所选语言查看集群使用资源。(BZ#1982079)
  • 在以前的版本中,当语言改为简体中文时,集群使用量统计与 projectpodnode 的左菜单中的转换不匹配。在这个版本中,简化了中文翻译,因此集群利用率指标与 top consumers 过滤器一致。(BZ#1982090)
  • 在以前的版本中,用户从服务帐户中看到错误而不是默认的 pull secret。这会导致项目详情屏幕上的信息不完整。用户必须访问 default ServiceAccount,才能查看整个默认 pull secret 列表。在这个版本中,用户可以从项目详情页面上的默认 ServiceAccount 中查看 pull secret 的整个列表。(BZ#1983091)
  • 在以前的版本中,如果您在查看 Terminal 选项卡时重新定义节点或 pod 的网页大小,有时浏览器会显示两个垂直滚动栏。现在,控制台已被更新,只有在窗口调整大小时才会显示一个滚动栏。(BZ#1983220)
  • 在以前的版本中,当使用单一节点开发人员配置集安装 OpenShift Container Platform 4.8.2 时,Web 控制台不会被部署。如果没有为创建安装计划的命名空间检测到有效的 Operator 组或服务帐户,则安装计划会被置于失败状态。未做进一步尝试。在这个版本中,失败的安装计划会被设置为再次运行,直到检测到 Operator 组或服务帐户为止。(BZ#1986129)
  • 在以前的版本中,在 Events Dashboard 中,MoreShow Less 都没有国际化,从而导致用户体验不佳。在这个版本中,它们被国际化。(BZ#1986754)
  • 在以前的版本中,在 Console 页面中构建服务的完全限定域名 (FQDN) 的逻辑缺失。因此,服务详情页面中缺少 FQDN 信息。在这个版本中,增加了构造 FQDN 的逻辑,以便该服务的 FQDN 信息在页面中现在可用。(BZ#1996816)
Web 控制台 (开发者视角)
  • 在以前的版本中,kamelet 类型的 sink 与源 kamelets 一起显示在事件源的目录中。在当前发行版本中,事件源的目录仅显示类型为 source 的 kamelet。(BZ#1971544)
  • 在以前的版本中,日志文件包含在一行中,没有任何换行符。在当前版本中,日志文件包含预期的换行符,以及日志标头周围的额外换行符。(BZ#1985080)