1.6. 程序错误修复

api-server-auth

  • 在以前的版本中,openshift-service-ca 命名空间使用 openshift.io/run-level:1 标签,这会导致该命名空间中的 pod 使用额外的权限运行。此标签已被删除,现在该命名空间中的 pod 使用适当的权限运行。(BZ#1806915)
  • 在以前的版本中,openshift-service-ca-operator 命名空间使用 openshift.io/run-level:1 标签,这会导致该命名空间中的 pod 使用额外的权限运行。此标签针对新安装移除,现在该命名空间中的 pod 以适当的权限运行。对于升级的集群,您可以手动删除此标签并重启受影响的 Pod。(BZ#1806917)
  • 在以前的版本中,缺少 openshift-oauth-apiserver 命名空间中提取 OAuth API 服务器 pod 的配置,OAuth API 服务器 pod 的指标不会在 Prometheus 中查询。现在,添加了缺少的配置,OAuth API 服务器指标现在包括在 Prometheus 中。(BZ#1887428
  • 在以前的版本中,Cluster Authentication Operator 代码中缺少一个状况,会导致在日志上产生大量有关更新到部署的信息(实际上并没有发生)。确定是否更新 Operator 状态的逻辑已更新,Cluster Authentication Operator 日志不再接收没有发生的部署更新信息。(BZ#1891758)
  • 在以前的版本中,Cluster Authentication Operator 只监视名为 cluster 的配置资源,这会导致 Operator 忽略 ingress 配置(名为 default)的变化。这会导致错误地假设在使用自定义节点选择器配置 ingress 时没有可调度的 worker 节点。Cluster Authentication Operator 现在会监控所有资源的名称,Operator 现在可以正确地观察入口配置更改,并协调 worker 节点的可用性。(BZ#1893386)

裸机硬件置备

  • 之前在有些系统中,安装程序会在 Ironic 就绪前与 Ironic 进行通讯并失败。现在,这个问题已解决。(BZ#1902653
  • 在以前的版本中,当在 Dell 系统中使用虚拟介质时,如果在部署开始前已经连接了虚拟介质,则会失败。现在,Ironic 在出现这种情况时进行重试。(BZ#1910739
  • 在以前的版本中,master 节点在置备接口上丢失了其 IPv6 link-local 地址,因此在使用 IPv6 时无法置备。现在,为 toggle addr_gen_mode 添加了一个临时解决方案来防止发生这种情况。(BZ#1909682)
  • 在以前的版本中,cluster-baremetal-operator 使用不正确的日志库。这会导致命令行参数与其他 Operator 不一致,因此并非所有 Kubernetes 库日志都会被记录。切换日志记录库解决了这个问题。(BZ#1906143)
  • 在接口中使用 IPv6 时,在一定时间后网络管理器删除本地 IPv6 地址。这个问题会造成,在 IPv6 link-local 地址被删除后,节点的 PXE 引导失败。添加了一个临时解决方案来切换接口 IPv6 addr_gen_mode,这样可导致链接本地地址重新添加。(BZ#1901040
  • 以前,Supermicro 节点在成功部署到磁盘后会引导到 PXE。现在,通过在设置 BootSourceOverrideTarget 时始终设置 BootSourceOverrideEnabled 来解决这个问题现在,Supermicro 节点会在部署后引导到持久磁盘。(BZ#1918558
  • baremetal IPI 附带的服务代理镜像现在可以在启用了 UEFI 安全引导的系统中运行。因为网络引导与安全引导不兼容,在这种情况下需要使用虚拟介质。(BZ#1893648
  • baremetal IPI 不再启用节点自动发现。它没有被正确处理,从而导致重复的裸机主机注册。(BZ#1898517
  • 在以前的版本中,裸机置备镜像不包括 syslinux-nonlinux 软件包。因此,在使用 BIOS 引导模式的机器中安装虚拟介质会失败。该软件包现在包含在镜像中。(BZ#1862608)
  • 在以前的版本中,某些 Dell 固件版本错误地报告 Redfish PowerState。将 Dell iDRAC 固件更新到版本 4.22.00.53 可解决这个问题。(BZ#1873305)
  • 以前,Redfish 不在可以获得和设置 BIOS 配置值的接口列表中。因此,Redfish 无法在 BIOS 配置中使用。RedFish 现在包含在列表中,它可用于 BIOS 配置。(BZ#1877105)
  • 在以前的版本中,用来设置 BIOS 配置的 Redfish 接口没有正确实施。因此,Dell iDRAC 无法设置 BIOS 配置值。现在,实现的错误已被修正。现在,Redfish 接口可以设置 BIOS 配置。(BZ#1877924)
  • 在以前的版本中,通过 IPMI 处理引导设备设置的 Supermicro 节点会导致在镜像写入磁盘后使用 IPMI 和 UEFI 的节点失败。Supermicro 节点现在通过适当的 IPMI 代码从磁盘启动。因此,在部署后,Supermicro 节点从磁盘引导。(BZ#1885308)
  • 在安装程序置备的基础架构上的裸机安装不再在提供无效的根设备提示时静默地跳过写入镜像。(BZ#1886327)
  • 在以前的版本中,Supermicro 节点的引导模式信息不完整,这会导致使用 Redfish 进行部署失败。现在包含了这个引导模式的信息。因此,可使用 Redfish 部署 Supermicro 节点。(BZ#1888072)
  • 嵌入在裸机安装程序置备的基础架构中的 Ironic API 服务现在使用四个 worker 而不是 8 个 worker。因此,内存用量会减少。(BZ#1894146)

Builds

  • 在以前的版本中,Docker 构建无法更改 /etc/pki/ca-trust 目录的权限,或者在其中创建文件。这个问题是由于在 4.6 中修复 BZ#1826183 造成的,它添加了对带有CA 的 HTTPS 代理的构建的支持,并总是挂载 /etc/pki/ca-trust,这会阻止包含自身 CA 的构建或修改系统信任存储在运行时正常工作。当前发行版本通过恢复 Bug 1826183 解决了这个问题。现在,包含其自身 CA 的构建器镜像可以再次工作。(BZ#1891759)
  • 在以前的版本中,在从 OpenShift Container Platform 版本 4.5 升级到版本 4.6 后,从私有存储库运行 git clone 会失败,因为构建不会将代理信息添加到用于拉取源代码的 Git 配置中。因此,如果集群使用全局代理且源是从私有 Git 存储库拉取的,则源代码就无法被拉取。现在,当集群使用全局代理时,Git 会被正确配置,如果集群使用全局代理,git clone 命令可以从私有 Git 存储库拉取源代码。(BZ#1896446)
  • 在以前的版本中,节点 pull secret 功能无法正常工作。如果在 Source 和 Docker 策略构建中设置了 forcePull: true,则节点 pull secret 不会被使用。因此,构建无法拉取需要集群范围的 pull secret 的镜像。现在,节点 pull secret 始终与用户提供的 pull secret 合并。因此,构建可在设置 forcePull: true 时拉取镜像,源 registry 需要集群范围的 pull secret。(BZ#1883803)
  • 在以前的版本中,当因为 Golang URL 解析而指定 SCP 风格的 SSH 位置时,OpenShift Container Platform 在 git clone 上构建会失败,它不适用于 Git SCP 风格的 SSH 位置。因此,当提供了这些类型的源 URL 时,OpenShift Container Platform 构建和 Source-to-Image(S2I)会失败。现在,构建和 S2I 可绕过 Golang URL 解析和删除 ssh:// 前缀以容纳 Git SCP 风格的 SSH 位置(BZ#1884270
  • 在以前的版本中,因为无效的构建 pull secret(其身份验证密钥不是 base64 编码)导致的构建错误不会通过构建堆栈传播。因此,很难确定这些错误的根本原因。当前发行版本解决了这个问题,因此这些类型的构建错误通过构建堆栈传播。现在,用户可更容易确定出现无效的构建 pull secret 密钥的根本原因。(BZ#1918879

Cloud Compute

  • 在以前的版本中,Machine API 在用户凭证 secret 无效时不会向用户提供反馈意见,因此很难在云供应商凭证出现问题时进行诊断。现在,如果在创建或更新机器集时存在凭证问题(例如凭证 secret 不存在或存在错误的格式),用户会被警告。(BZ#1805639)
  • 在以前的版本中,裸机操作器还通过删除 Machine 对象来删除底层主机,这不是机器控制器的预期操作。在这个版本中,搜索主机失败时在机器上设置 InsufficientResourcesMachineError 错误原因,因此可确保首先缩减没有主机的机器。如果主机被取消置备,机器会被移到 Failed 阶段。现在,机器健康检查会删除失败的机器,并且 Machine 对象不再会被自动删除。(BZ#1868104)
  • 在以前的版本中,当机器进入 Failed 状态时,云供应商的状态将不再被协调。因此,机器状态会报告云虚拟机的状态为 Running。现在,如果机器处于 Failed 状态,机器状态会更加精确地反映云虚拟机的观察状态为 Unknown。(BZ#1875598
  • 在以前的版本中,几个 Machine API 自定义资源定义包含模板 schema 描述到对应的参考文档中的断开链接。这些链接已更新为正确的上游位置,不再会出现问题。(BZ#1876469)
  • 在以前的版本中,oc explain Provisioning 命令不会返回自定义资源定义(CRD)描述,因为使用的是较老版本的 CRD 定义。CRD 版本已更新,因此 Provisioning CRD 的 oc explain 现在会返回预期信息。(BZ#1880787)
  • 在以前的版本中,当用户创建或更新磁盘大小小于推荐最小值的机器时,当磁盘大小过低时,机器会在没有警告的情况启动失败。磁盘大小必须大于初始镜像大小。现在,用户可以收到一个磁盘大小较低并可能导致其机器或机器设置无法启动的警告信息。(BZ#1882723)
  • 在以前的版本中,机器的状态在协调期间不会保留,因此 Machine 对象的 instance-state 注解和 providerStatus.instanceState 有时会显示不同的值。现在,机器状态会在协调的机器上复制,instance-state 注解与 providerStatus.instanceState 值一致。(BZ#1886848)
  • 在以前的版本中,如果在 MachineSet 资源对象中将 publicIP 选项设置为 true 时,在断开连接的环境中运行的 Microsoft Azure 机器集会无法引导并进行扩展。现在,为了避免机器失败,用户不能使用这个无效的 publicIP 配置在断开连接的环境中创建机器集。(BZ#1889620
  • 在以前的版本中,当创建机器时,只有某些错误会导致 mapi_instance_create_failed 失败指标被更新。现在,创建机器时出现的任何错误都会正确更新 mapi_instance_create_failed 指标。(BZ#1890456)
  • 在以前的版本中,在某些情况下,集群自动扩展使用模板节点作为节点扩展决策。偶尔,nodeAffinity predicate 无法按预期扩展,待处理 pod 无法调度。在这个版本中,模板节点可以包含尽量多的标签,以确保集群自动扩展可以扩展并传递节点关联性检查。(BZ#1891551
  • 在以前的版本中,机器集的默认删除优先级(random )不会使处于 Ready 状态的节点的优先级高于仍在构建的节点。因此,处于 Ready 状态的所有节点可能会在扩展机器集时被删除,然后立即缩减,特别是扩展大量机器时。这也可能导致集群不可用。现在,没有处于 Ready 状态的机器会被分配较低的优先级。因此,在缩减机器后马上进行大规模机器扩展时,会在删除正在运行工作负载的机器前,会先删除仍然在构建的机器。(BZ#1903733)

Cluster Version Operator

  • 在以前的版本中,安装和升级过程中有一个信息显示当前的过程为 100%,即使当前进程还没有完成。这个错误信息是因为一个错误的舍入造成的。现在,这个百分比不再被循环使用,消息会正确显示已完成的子进程数量,以及准确的完成百分比值。(BZ#1768255)
  • 在以前的版本中,当 Cluster Version Operator(CVO)合并 Cincinnati 元数据(如频道成员资格和勘误 URI)时,Cluster Version Operator(CVO)会把 pullspecs 与确切的 available-updatecurrent-target 值进行比较。因此,如果您从一个镜像(mirrored)的、使用有效替代的 pullspec 的发行镜像安装或进行更新,则不会收到 Cincinnati 元数据。现在,CVO 会根据摘要比较发行版本,并正确关联 Cincinnati 元数据,如频道成员资格,无论哪个 registry 托管镜像。(BZ#1879976
  • 在以前的版本中,带有 metrics-serving goroutine 的竞争条件有时会导致 CVO 在关闭时卡住。因此,Management-object 协调和监控等 CVO 的行为不可能,更新和安装可能会停止。现在,CVO 会在几分钟后超时,并取消任何卡住的指标 goroutines,并按照预期关闭。(BZ#1891143)
  • 在以前的版本中,有些 CVO 日志错误消息没有为正确侦测到的更改类型呈现变量。现在,这个变量可以被正确处理,错误信息会如预期显示。(BZ#1921277

CNF 平台验证

  • 在以前的版本中,为平台验证进行端到端测试会导致当机器配置不包含配置规格时 SCTP 验证步骤出现错误。在这个版本中,当没有找到配置规格时,会跳过 SCTP 测试。(BZ#1889275)
  • 在以前的版本中,当 Performance Addon Operator 在有两个或更多 NUMA 节点的主机上运行 hugepages 测试,且性能配置集请求跨节点分发巨页时,测试会失败。在这个版本中,hugepages 测试如何决定 NUMA 节点的巨页数量。(BZ#1889633)

config-operator

  • 在以前的版本中,在升级过程中已弃用的 status.platformStatus 字段不会被填充(从 OpenShift Container Platform 4.1 升级的集群)。因此,升级可能会失败。在这个版本中,更新了 Cluster Config Operator 来填充此字段。因此,不会因为没有填充此字段导致升级失败。(BZ#1890038)

控制台 Kubevirt 插件

  • 在以前的版本中,存储类没有从 DataVolume 源的持久性卷声明中传播到 VM 磁盘列表。现在,存储类在 web 控制台的 VM 磁盘列表中可见。(BZ#1853352)
  • 在以前的版本中,导入的 SR-IOV 网络可能会被设置为不同的网络接口类型。在这个版本中,导入的 SR-IOV 网络只被设置为 SR-IOV 网络接口类型。(BZ#1862918)
  • 在以前的版本中,如果在集群中重复使用虚拟机名称,事件屏幕中显示的虚拟机事件不会被正确过滤,包括两个虚拟机的事件混合在一起。现在。事件被正确过滤,事件屏幕只显示属于当前虚拟机的事件。(BZ#1878701)
  • 在以前的版本中, VM Import 向导创建的 V2VVMWareOvirtProvider 对象不会被正确清理。现在,V2VVMWareOvirtProvider 对象会如预期被删除。(BZ#1881347)
  • 在以前的版本中,没有关联的虚拟机接口(VMI)不会显示使用数据。现在,如果 VMI 有可用的使用数据,则会显示。(BZ#1884654)
  • 在以前的版本中,当克隆 PVC 时,其虚拟机状态会报告为 pending,但不会显示更多信息。现在,当克隆 PVC 时,VM 状态会报告 导入 进度条以及包含到 pod 或 PVC 链接的额外信息。(BZ#1885138)
  • 在以前的版本中,VM 导入状态显示一个不正确的 VM 导入供应商。现在,VM 导入状态会显示正确的 VM 导入供应商。(BZ#1886977)
  • 在以前的版本中,默认 pod 网络接口类型设置为错误的值。现在,默认的 pod 网络接口类型被设置为 masquerade。(BZ#1887797)

控制台存储插件

  • 在以前的版本中,当安装 Local Storage Operator(LSO)时,节点上的磁盘不会被显示,且无法在该节点上启动磁盘发现。现在,当安装 LSO 时,Disk 标签页会被启用,如果发现磁盘操作还没有运行, 会显示 Discover Disks 选项。(BZ#1889724)
  • 在这个版本中, Disk Mode 选项被重命名为 Volume Mode。(BZ#1920367

Web 控制台 (开发者视角)

  • 在以前的版本中,因为用户权限不足,用户无法从其他项目拉取镜像。在这个版本中,删除了所有用户界面检查角色绑定,并显示 oc 命令警告来帮助用户使用命令行。在这个版本中,用户不再无法从不同命名空间创建镜像,现在可以从其他项目中部署镜像。(BZ#1894020
  • 控制台使用之前版本的 KafkaSource 对象,该对象使用规格中的 resourcesservice account 字段。KafkaSource 对象的最新 v1beta1 版本删除了这些字段,因此用户无法使用 v1beta1 版本创建 KafkaSource 对象。这个问题现已解决,用户可以使用 v1beta1 版本创建 KafkaSource 对象。(BZ#1892653)
  • 在以前的版本中,当使用带有 .git 后缀的 Git 存储库的源代码创建应用程序时,会显示一个 没有找到的页面 错误。在这个版本中, .git 后缀从存储库 URL 中删除,并将 SSH URL 转换为 HTTPS URL。现在,生成的链接会显示正确的软件仓库页面。(BZ#1896296)
  • 在以前的版本中,Topology 视图中,除了显示 Container SourceKameletBinding 资源中创建的实际源外,还会显示底层 SinkBinding 资源,这可能会使用户感到混淆。这个问题已被解决。现在,Topology 视图 中只会显示为事件源创建的实际资源,底层 SinkBinding 资源(如果已创建)会在侧边栏中显示。(BZ#1906685)
  • 在以前的版本中,当您在不创建事件自定义资源的情况下安装 Serverless Operator 时,会显示频道卡。当您点击卡时会显示一个混淆的警告信息。这个问题现已解决。现在,只有在频道自定义资源定义存在时才会显示带有正确警报消息的频道卡。(BZ#1909092)
  • 在以前的版本中,当关闭 web 终端连接时,该会话的所有终端输出都会消失。这个问题已被解决。现在,即使会话关闭,终端输出也会被保留。(BZ#1909067)
  • 虽然 Eventing 用户界面在 OpenShift Container Platform 4.6 中已是一个 GA 版本,但仍然会显示技术预览徽。技术预览徽标现已被删除,这个变化已后向移植到 OpenShift Container Platform 4.6.9 版本中。(BZ#1894810)
  • 在以前的版本中,如果部署是使用控制台编辑流程编辑的,部署的卷挂载不会被保留。修改的部署 YAML 覆盖或移除 pod 模板规格中的卷挂载。这个问题已被解决。现在,即使使用控制台编辑流程编辑部署,卷挂载也会保留。(BZ#1867965)
  • 如果有多个触发器,一个用于订阅 Knative 服务,另一个用于 In Memory Channel 作为订阅者,则 Topology 视图中不会显示 Knative 资源。这个问题现已解决,因此 Knative 数据模型返回正确的数据,Knative 资源会显示在 Topology 视图中。(BZ#1906683)
  • 在以前的版本中,在断开连接的环境中,Helm chart 不会在 Developer Catalog 中显示,因为在获取代码时会出现无效的配置。这个问题已被解决,确保考虑代理环境变量,且 Helm chart 现在在 Developer Catalog 上显示。(BZ#1918748
  • 在运行 Pipeline 时,TaskRun 资源的日志标签页在输出中的命令后将字符串显示为 undefined。这是因为,有些边缘情况导致一些内部字符串操作打印到日志输出为 undefined。这个问题现已解决,管道日志输出不会从日志流中丢弃空白行,且不再输出 undefined 字符串。(BZ#1915898
  • 在以前的版本中,Add 流中的 Port 列表只为公开端口提供选项,它不允许您指定自定义端口。现在,这个列表已被一个 typeahead select 菜单替代,现在可以在创建应用程序时指定自定义端口。(BZ#1881881
  • 在以前的版本中,当有条件任务失败时,完成的管道运行会显示每个失败条件任务。这个问题已通过禁用失败的条件任务并在它们中添加跳过的图标来解决。这可让您更好地了解管道运行的状态。(BZ#1880389)
  • 在以前的版本中,pod 扩展或缩减按钮适用于单个 pod 资源,当用户按缩放按钮时,页面会崩溃。这个问题已通过不显示单个 pod 资源扩展或缩减按钮来解决。(BZ#1909678
  • 在以前的版本中,下载 chart 以实例化 helm 发行版本的 Chart URL 无法访问。这是因为,在 Helm Chart 仓库中引用的 index.yaml 来自远程仓库。其中一些索引文件包含相对 Chart URL。现在,通过将相关 Chart URL 转换为绝对 URL 解决了这个问题,从而使 Chart URL 可以被访问。(BZ#1912907
  • Serverless 0.10 中,triggersubscriptionchannelIMC 的最新支持版本已更新。对应每个静态模型的静态模型显示一个 API 版本的 beta。现在,事件资源的 API 版本更新至 v1,UI 现在会显示最新支持的版本。(BZ#1890104)
  • 在以前的版本中,当用户在 Monitoring Dashboard 选项卡上的工作负载间切换时,例如从特定部署到所有工作负载时,仪表板会显示白色画板且没有 chart。这个问题已被解决。现在,当用户在工作负载间切换时,仪表板会显示 chart。(BZ#1911129
  • 在以前的版本中,监控严重性级别(如 criticalwarning )的警报被当作信息级别的警报。因此,Topology 视图中这些警报的工作负载上不会显示 Monitoring Alert 图标。这个问题现已解决,如 critical 的警报被视为 警告 级别警报,并显示 Monitoring Alert 图标。(BZ#1925200
  • 在以前的版本中,在 Helm 安装表单的 YAML 视图中,仅显示 YAML 代码。现在,在 YAML 编辑器中添加了一个 Schema 视图来显示 schema 及其描述。(BZ#1886861)
  • 在以前的版本中,所有 Pod 都会失败并显示 ErrImagePullImagePullBackOff 错误,即使添加了 Image Pull Secret 以访问外部私有镜像容器镜像 registry。这是因为镜像下载失败,因为它没有外部镜像 registry 的权限,集群会在不提供 secret 的情况下尝试直接从外部 URL 加载容器镜像。因此,部署会卡住,直到手动更新服务帐户或部署为止。现在,这个问题已被解决,新的部署可以从内部私有容器 registry 启动 pod,并从外部私有容器 registry 导入容器镜像,而无需对服务帐户或部署进行任何额外的更改。(BZ#1924955
  • 在创建示例应用程序时,Developer 视角会创建多个资源,这些资源相互依赖,且必须按特定顺序完成。在以前的版本中,准入插件有时无法检查其中一个资源,阻止 Developer 视角生成示例应用程序。这个问题已被解决。代码会按所需顺序创建资源,因此创建示例应用程序更为稳定。(BZ#1933665
  • 在以前的版本中,在更新资源配额资源时,API 服务器有时无法创建资源并返回 409 冲突响应状态代码。这个问题已被解决。现在,如果它收到 409 状态代码,OpenShift Web 控制台会最多重试请求三次。如果它继续接收 409 状态代码,控制台会显示错误消息。(BZ#1928228
  • 在以前的版本中,当用户进入到 Topology 视图时,如果 openshift 命名空间中没有模板,会出现一个错误。如果发生此错误,则会显示空白页面。这个问题已通过处理与 openshift 命名空间中不存在的模板相关的边缘条件来解决。现在,用户可以进入到 Topology 视图,并根据预期载入。(BZ#1952293)
  • 虽然 OpenShift Pipelines 已正式发布(GA),但 Web 控制台中的 OpenShift Pipelines 工作流中会显示技术预览徽标。技术预览徽标现已被删除。(BZ#1945153
  • 在以前的版本中,在 Git 导入流中为私有存储库创建的管道无法运行。这是因为 pipeline ServiceAccount 对象没有将 Git 导入流创建的 secret 用于私有 Git 存储库。在这个版本中,您可以在管道 ServiceAccount 对象的注解中添加 secret 名称,并在提供的 secret 中添加特定于管道的注解。因此,私有 Git 存储库的管道运行可以成功。(BZ#1970485)
  • 在以前的版本中,Start Pipeline 模式没有将空字符串识别为一个有效条目,因此您必须输入一个值。即使 OpenShift Pipelines Operator 将空字符串识别为有效的 parameter default,也会发生这种情况。在这个版本中,您可以选择输入空字符串。(BZ#1966275)
  • 在以前的版本中,注解与元数据一起传递给 Knative 服务规格。因此,拓扑中的 Knative 服务的相关修订会显示 decorators。当前发行版本解决了这个问题,方法是仅将注解传递给 Knative 服务元数据。现在,只有拓扑中的 Knative 服务才会在拓扑中显示 decorators,而不为关联的修订版本显示。(BZ#1954962)
  • 在以前的版本中,用户无法从 Developer 视角将 Knative 服务创建为私有服务。这个问题现已解决,更新了标签 'networking.knative.dev/visibility': 'cluster-local'。(BZ#1970796)

DNS

  • 在以前的版本中,因为某些节点上的 /etc/hosts 文件包含无效条目,集群可能会遇到 DNS 解析错误。在这个版本中,因为 /etc/hosts 文件带有无效条目,DNS 解析不再会失败。(BZ#1882485)

etcd

  • 在以前的版本中,etcd 就绪度探测使用 lsofgrep 命令,它们可能会留下失效进程。etcd 就绪度探测现在使用 TCP 端口探测,这个探测的成本较低,且不会创建失效的进程。(BZ#1844727)
  • 在以前的版本中,当在 control plane 节点上更改 IP 地址时,导致磁盘上的证书无效,etcd 错误消息不知道 etcd 无法与 peer 连接的原因。现在,会检测到 control plane 节点上的 IP 地址变化,报告一个事件,EtcdCertSignerController 被标记为 Degraded。(BZ#1882176)
  • 在以前的版本中,当 etcd 集群小于三个成员时,新的静态 pod 修订会发生,这会导致临时 quorum 丢失。现在,当所有 control plane 节点都不可用时,可以避免静态 pod 修订,并避免临时解决这些临时仲裁问题。(BZ#1892288)
  • 在以前的版本中,etcd 备份包含一个特定于从中备份的 control plane 节点的恢复 YAML 文件,因此无法在其他 control plane 节点上恢复从一个 control plane 节点进行的备份。恢复 YAML 文件现在更为通用,以便在任何 control plane 节点上恢复 etcd 备份。(BZ#1895509
  • 在以前的版本中,etcd 备份脚本使用最后修改的时间戳来确定最新的修订,这会导致将不正确的静态 pod 资源存储在 etcd 备份中。etcd 备份脚本现在使用清单文件来决定最新的修订,正确的静态 pod 资源现在存储在 etcd 备份中。(BZ#1898954)
  • 在以前的版本中,bootstrap 在使用 IPv6 双堆栈模式时无法检测可用的机器网络 CIDR,除非 IPv4 CIDR 是 install-config 机器网络 CIDR 阵列中的第一个元素。解析逻辑已被修复为通过所有机器网络 CIDR 进行循环,现在 IPv4 地址以双堆栈模式在机器网络 CIDR 中正确加载。(BZ#1907872)
  • 在以前的版本中,如果删除了 openshift-etcd 命名空间,etcd-endpoints 配置映射不会被重新创建,集群也不会恢复。现在,如果缺少 etcd-endpoints 配置映射,则会重新创建它,从而可以恢复集群。(BZ#1916853

镜像 Registry

  • 上次 Kubernetes 更新在 API 中强制使用超时。使用这个超时的结果时,长的请求会在 34 秒后被丢弃。当导入大型软件仓库时,特别是那些带有几个标签的软件仓库时,会达到超时时间,因此无法象之前的版本一样成功导入。在 oc 客户端上有一个标志来设置不同的超时时间,但没有提供相关的示例,这使客户很难了解如何绕过 API 超时。通过 oc help 提供了使用标记的示例,客户现在更轻松地找到这个选项。(BZ#1878022)
  • 在以前的版本中,使用同一日志记录软件包的两个不同版本会导致 Operator 日志部分丢失。在这个版本中,日志记录软件包版本与 Operator 使用的升级的日志软件包与 client-go 使用的版本一致。现在,日志不会丢失。(BZ#1883502
  • 在以前的版本中,pruner 会尝试使用镜像流检测 registry 名称,但没有镜像流来检测 registry 名称。在这个版本中,Image Registry Operator 为 pruner 提供 registry 名称。现在,修剪器不会依赖于镜像流的存在来检测 registry 名称。(BZ#1887010)
  • 在以前的版本中,Operator pod 没有内存请求,这在节点上出现内存压力时,可能会因为内存不足在其他 BestEffort 容器前被终止。在这个版本中,添加了内存请求。现在,如果节点上存在其他 BestEffort 容器,Operator 不会在内存不足时被终止。(BZ#1888118
  • 在以前的版本中,pruner 会尝试使用镜像流检测 registry 名称,但没有镜像流来检测 registry 名称。在这个版本中,如果 registry 被配置或禁用 registry 修剪,Image Registry Operator 会为 pruner 提供 registry 名称。(BZ#1888494)
  • 在以前的版本中,在定义 Operator 状态时,无法分析 Operand 部署状态。这意味着,在一些情况下,Image Registry Operator 带有两个相互冲突的信息。它通知用户其状态为不可用,同时还为没有降级。即使部署停止尝试启动并运行镜像 registry,这两个条件仍会被显示。在这种情况下,Operator 应该设置 Degraded 标记。通过将镜像 registry 部署纳入考量,如果 Operand 部署在尝试运行应用程序时达到其进度期限,Operator 现在会将自己设置为 Degraded。现在,当 Deployment 失败时,在达到进度期限后,Operator 会将其设置为 Degraded。在 Operator 部署进行时,Operator 仍然会报告自己为 Progressing。(BZ#1889921)
  • 在以前的版本中,Image Registry Operator 不使用其入口点,因为提供了显式命令。因此,Operator 不能使用集群范围的 trusted-ca,Operator 无法连接到在没有自定义 trusted-ca 的情况下无法正常工作的存储供应商。在这个版本中,pod 规格中删除了显式命令。现在,镜像入口点由应用 trusted-ca 的容器使用。(BZ#1892799
  • 以前,pruner 的默认日志级别为 2。因此,当发生错误时,修剪器会转储堆栈 trace。在这个版本中,默认的日志级别被改为 1。现在,只有在没有堆栈追踪的情况下错误信息会输出。(BZ#1894677)
  • 在以前的版本中,configs.imageregistry.operator.openshift.io status 字段在 Operator 同步过程中不会更新,这意味着 status 字段没有显示最新的 swift 配置。在这个版本中,同步过程会将 configs.imageregistry.operator.openshift.io 状态更新为 spec 值。spec 和 status 字段与 status 字段同步,显示已应用的配置。BZ#1907202
  • 在以前的版本中,在 HTTP/2 协议上缺少重试操作会导致一个相关的可重试错误,从而导致使用错误消息取消镜像(mirroring)。在这个版本中,当错误消息与 HTTP/2 协议相关的错误对应时,添加了一个重试功能。现在,对于这些错误,在多次尝试后会取消镜像操作。(BZ#1907421)
  • 在以前的版本中,node-ca 守护进程中没有显式的用户和组群 ID,这混淆了 node-ca pod 中使用的用户和组。在这个版本中,为 runAsUserrunAsGroup 配置明确提供了 node-ca 守护进程。现在,在检查 node-ca DaemonSet YAML 文件时,用户和组会有明确的定义。(BZ#1914407

ImageStreams

  • 在以前的版本中,当镜像修剪器收集正在使用的镜像列表时,镜像修剪器不会考虑 StatefulSetJobCronjob 对象使用的镜像。因此,可能会修剪错误的镜像。现在,镜像修剪器在创建镜像列表时会考虑这些对象正在使用的镜像。不再修剪这些对象正在使用的镜像。(BZ#1880068)
  • 在以前的版本中,新创建的镜像流没有使用 publicDockerImageRepository 值进行解码。watchers 不会为新对象接收 publicDockerImageRepository 值。现在,镜像流使用正确的值进行解码。因此, watchers 会获取带有 publicDockerImageRepository 值的镜像流。(BZ#1912590)

Insights Operator

  • 在以前的版本中,因为错误处理错误,当它观察到的文件有变化时,Operator 会随意结束其进程。改进了 Operator 的错误处理。现在,Operator 会继续运行,当观察到的文件改变时不再发送结束进程信号。(BZ#1884221)
  • 在以前的版本中,Operator 在归档报告时不会使用资源的命名空间。因此,在不同的命名空间中具有相同名称的资源会被覆盖。Operator 现在在归档数据时结合使用报告路径与命名空间。因此,会为每个命名空间收集所有报告。(BZ#1886462)

安装程序

  • 在以前的版本中,当使用 virtual-media 时,fast-track 模式可能无法正常工作,节点会在不同操作间重启。这个问题现已解决。(BZ#1893546)
  • 在以前的版本中,在使用双堆栈部署时,worker 节点主机名与部署前检查的名称不匹配,从而导致节点需要手动批准。这个问题现已解决。(BZ#1895909)
  • 现在,如果 control plane 和要部署的主机之间有一个小的、不超过一小时的时钟偏移,裸机置备将不会失败。(BZ#1906448)
  • 当 vCenter 主机名中包含大写字母时,VMware vSphere 的 OpenShift Container Platform 安装程序会等待较长时间完成集群,然后再最终失败。安装程序现在会验证 vCenter 主机名在安装过程早期不包含大写字母,从而避免了长时间的等待时间。(BZ#1874248)
  • 在以前的版本中,OpenShift Container Platform 安装程序的内部 Terraform 后端不支持从 Terraform 内核到 Terraform 供应商的输入,如 Amazon Web Services(AWS)。当将 bootstrap.ign 文件作为字符串传递给 AWS 供应商时,可能会超过输入限制,从而导致安装程序在创建 bootstrap Ignition S3 存储桶时失败。在这个版本中,Terraform 后端需要将 bootstrap.ign 作为磁盘上的路径传递,允许 AWS 供应商通过绕过输入大小限制来读取大文件。现在,安装程序在执行 Calico 安装时成功,它会创建大于输入限制的 bootstrap Ignition 文件。(BZ#1877116)
  • 在以前的版本中,Red Hat OpenStack Platform(RHOSP)的 pre-flight 安装程序验证是在实例类型元数据上执行的。这可能会使安装无法将类型识别为具有完成安装所需的容量的 baremetal。这通常是由 RHOSP 管理员没有在其裸机类型上设置适当的元数据所致。现在,在检测到为 baremetal 的类型上跳过验证,以防止报告错误。(BZ#1878900)
  • 在以前的版本中,安装程序不允许在 GCP 和 Azure 中安装集群的手动凭证模式。因此,用户无法使用手动凭证将集群安装到 GCP 或 Azure。安装程序现在可以验证为 GCP 和 Azure 提供的手动凭证。(BZ#1884691)
  • 在以前的版本中,安装程序无法在销毁安装到 Azure 的集群前验证资源组是否存在。这会导致安装程序不断循环出现错误。安装程序现在会在销毁集群前验证资源组是否存在,允许成功销毁集群。(BZ#1888378)
  • 在以前的版本中,安装程序不会检查以确保 AWS 帐户在使用共享资源创建集群时具有 UnTagResources 权限。因此,在销毁集群时,安装程序没有权限删除添加到预先存在的网络的标签。此程序错误修复添加了一个使用共享网络资源创建集群时的 UnTagResources 权限检查,以确保帐户在完成安装过程前具有适当的权限。(BZ#1888464)
  • 要使 openshift-install destroy cluster 命令正常工作,安装程序初始创建的集群对象必须被删除。在某些情况下,托管区对象已被删除,导致安装程序挂起。现在,如果对象已被删除,安装程序会跳过删除对象,从而使集群可以被成功销毁。(BZ#1890228)
  • 在以前的版本中,Red Hat OpenStack Platform(RHOSP)上的 control plane 端口没有被分配额外的用户定义的安全组。这会导致额外的用户定义的安全组规则无法正确应用到 control plane 节点。现在,额外的用户定义的安全组被分配给 control plane 端口,允许安全组规则正确应用到 control plane 节点。(BZ#1899853
  • 在以前的版本中,使用另一个安全组的默认 AWS 安全组的规则会阻止安装程序在销毁集群时删除其他安全组。这会导致集群销毁过程永远不会完成并保留 AWS 资源。现在删除默认安全组中的规则,从而取消删除其它安全组。这允许从集群中删除所有 AWS 资源。(BZ#1903277)
  • Red Hat OpenStack Platform(RHOSP)验证中缺少的 guard 可能会获取带有空子网 ID 的子网列表,并导致一些非 RHOSP 云返回预期值。意外的错误代码验证失败,并阻止 OpenShift Container Platform 在这些非 RHOSP 云上安装。在这个版本中,增加了对空子网 ID 的缺少保护功能,从而可以正确验证。(BZ#1906517)
  • 在以前的版本中,在 VMware vSphere 上安装用户置备的基础架构的引用负载均衡器是为简单的 TCP 检查配置的,健康检查不会考虑 api 服务器的健康状态。每当 API 服务器重启时,此配置有时会导致 API 请求失败。现在,健康检查现在根据 /readyz 端点验证 API 服务器健康状况,引用 API 负载均衡器现在会在 API 服务器重启过程中安全处理请求。(BZ#1836017)
  • 在以前的版本中,当您使用安装程序时按 CTRL+C 时,该程序不会被中断,且并不总是如预期退出。现在,当您使用安装程序时按 CTRL+C 时,程序会中断并退出。BZ#1855351)
  • 在以前的版本中,如果在使用无效凭证(如服务主体过期且没有显示 debug 日志)时尝试删除 Azure 中的集群,则会出现在没有删除集群时。除了不删除集群外,本地存储的集群元数据也会被删除,因此无法再次运行 openshift-install destroy cluster 命令删除集群。现在,如果在使用无效的 Azure 凭证时尝试删除集群,安装程序会退出并显示一个错误,您可以更新凭证并再次尝试。(BZ#1866925)
  • 在以前的版本中,安装程序置备的基础架构裸机安装方法的 install-config.yaml 文件错误地使用 provisioningHostIP 名称而不是 clusterProvisioningIP 名称,这会导致文档和 YAML 文件中使用的实际字段名称断开连接。现在,provisioningHostIP 字段已弃用,而是使用 clusterProvisioningIP (删除断开连接)。(BZ#1868748)
  • 在以前的版本中,安装程序不会在 Ignition 配置文件中检查过期的证书。过期的证书会导致安装失败,而无需解释。现在,安装程序会检查过期的证书并在证书过期时打印警告。(BZ#1870728)

kube-apiserver

  • 在以前的版本中,v1beta1 CRD 中将 preserveUnknownFields 字段设置为 true,因此 oc explain 没有解释 CRD 字段时不会出错。现在添加了一个验证条件,在未将 preserveUnknownFields 字段设置为 falsev1beta CRD 的状态会显示 spec.preserveUnknownFields: Invalid value: true: must be false 错误。(BZ#1848358)
  • 在以前的版本中,IBM Cloud 集群的 OpenShift Container Platform 中默认禁用 LocalStorageCapacityIsolation 功能门。禁用后,设置临时存储请求或限制会导致 pod 无法调度。在这个版本中,代码被修改,在 LocalStorageCapacityIsolation 功能门被禁用时,临时存储请求或限制将被忽略,并且可以按预期调度 pod。(BZ#1886294)

Red Hat OpenShift Logging

在这个版本中,Cluster Logging 变为 Red Hat OpenShift Logging 版本 5.0。如需更多信息,请参阅 Red Hat OpenShift Logging 5.0 发行注记

Machine Config Operator

  • 在以前的版本中,当在 Red Hat OpenStack Platform(RHOSP)上部署并使用具有主机名的 HTTP 代理时,有时安装过程可能无法拉取容器镜像并报告错误消息 unable to pull image。此程序错误修复更正了在环境变量中设置代理的方式,节点可以从远程 registry 中拉取容器镜像。(BZ#1873556)
  • 在以前的版本中,在升级过程中,上一版本的 Machine Config Controller(MCC)可能会响应较新的 Machine Config Operator(MCO)的配置变化。然后 MMC 引进了另一个更改,在升级过程中会导致不必要的重启。在这个版本中,MCC 无法响应较新的 MCO 配置更改,并避免不必要的重启。(BZ#1879099)
  • 在以前的版本中,CoreDNS 分发查询的转发插件随机地发送到所有配置的 DNS 服务器。名称解析失败,因为 CoreDNS 会查询无法正常工作的 DNS 服务器。此程序错误修复设置了 forward 插件以使用后续策略,以便查询发送到响应的第一个 DNS 服务器。(BZ#1882209)
  • 在以前的版本中,Machine Config Operator 只从 multi-user.target.wants 目录中读取启用的 systemd 目标单元。因此,任何不是以 multi-user.target.wats 目录为目标的单元都会被改为目标。在这个版本中,MCO 使用 systemd-preset 文件在 MCO 中创建预设置文件。因此,所有 systemd 服务都会如预期被启用和禁用。(BZ#1885365)
  • 在以前的版本中,当将集群迁移到 OVN-Kubernetes 默认 Container Network Interface(CNI)时,预配置的 Linux 绑定接口上的绑定选项。因此,绑定配置使用 round-robin 而不是指定的模式,绑定可能无法正常工作。ovs-configuration.service(configure-ovs.sh)被修改为,将 Linux 绑定中的所有之前绑定选项复制到 ovs-if-phys0 Network Manager 连接。因此,所有绑定应该象最初配置一样工作。(BZ#1899350
  • 在 OpenShift Container Platform 4.6 中,更改了使用 Budget Fair Queueing(BFQ)Linux I/O 调度程序。因此,etcd 中增加了 fsync I/O 延迟。在这个版本中,I/O 调度程序使用 mq-deadline 调度程序,但 NVMe 设备除外,它们配置为不使用 I/O 调度程序。对于 Red Hat Enterprise Linux CoreOS(RHCOS)更新,BFQ 调度程序仍然被使用。因此,延迟时间被降低到可接受的级别。(BZ#1899600

Web 控制台(管理员视角)

  • 在以前的版本中,依赖项的问题会在 OpenShift Container Platform web 控制台中产生永久卸载和重新挂载 YAML Editor。因此,YAML 编辑器每几秒钟就跳到 YAML 文件的顶部,此修复删除了依赖项的默认参数值。因此,YAML Editor 可以正常工作。(BZ#1903164
  • 在以前的版本中,OpenShift Container Platform Web 控制台中的 Operator 描述链接以沙盒 iframe 中呈现,它禁用了 iframe 中的 javascript。因此,当用户点击链接时,新标签页会继承沙箱限制,因此 JavaScript 不会运行链接页面。这些链接已通过在 Operator description iframe sandbox 属性中添加 allow-popups-to-escape- sandbox 参数来解决,它会在沙箱之外打开新标签页。现在,Operator 描述的链接会打开并正常运行。(BZ#1905416)
  • 在以前的版本中,OpenShift Container Platform Web 控制台中的扩展 pod 功能不使用 scale 子资源,任何在部署配置中没有 patch 操作动词的自定义角色无法在 web 控制台中扩展 pod。在这个版本中,代码被修改,扩展 pod 功能现在可以使用 scale 子资源。因此,用户可以在 web 控制台中扩展 pod,而不必添加 patch 动词。(BZ#1911307
  • 在以前的版本中,在 OpenShift Container Platform web 控制台中创建一个自定义资源,其中将 fieldDependency 描述应用到使用与 getJSONSchemaPropertySortWeight helper 功能名称相同的 schema 属性中。因此,DynamicForm 组件会抛出异常,网页浏览器可能会崩溃。这个版本修改了 getJSONSchemaPropertySortWeight helper 功能来跟踪当前路径,并使用整个路径来确定依赖关系关系而不是只有字段名。因此,DynamicForm 组件不再会抛出异常。(BZ#1913969
  • 在以前的版本中,SamplesTBRInaccessableOnBoot 警报描述包含 "bootstrapped" 的错误。警报描述现在正确。(BZ#1914723
  • 在以前的版本中,CPU 和 Memory specDescriptor 字段在 YAML 编辑器中添加了一个空字符串。现在,这些字段不再在 YAML 编辑器中添加空字符串。(BZ#1797766)
  • 在以前的版本中,SubscriptionCSV 对象在 Operator 安装过程中在 Installed Operators 页面中显示。现在,这个重复已被解决,如果匹配的 CSV 对象已存在,Subscription Operator 不会在 Installed Operators 页中显示。(BZ#1854567)
  • 在以前的版本中,当构建启动前一小时后,构建详情页中会显示空资源使用图表,但默认设置仅显示最新的一小时。现在,构建详情页中的使用情况图表显示构建运行时的数据。(BZ#1856351)
  • 在以前的版本中,OpenAPI 定义只在初始页面加载时更新。OpenAPI 定义现在会以 5 分钟间隔进行更新,以及从 API 获取了型号时进行更新。OpenAPI 定义可以在不刷新页面的情况下显示最新的数据。(BZ#1856354)
  • 在这个版本中,集群监控文档中无法访问的链接已被修复。(BZ#1856803)
  • 在以前的版本中,Red Hat Marketplace URL 缺少 utm_source 参数。在本发行版本中,utm_source 参数添加到 Red Hat Marketplace URL 中。(BZ#1874901)
  • 在以前的版本中,无法使用 Escape 键关闭项目选择下拉菜单。Escape 键的处理程序已经更新,用户可以退出并关闭项目选择下拉菜单。(BZ#1874968)
  • 在以前的版本中,用于 Scheduling Status 的字体颜色与可访问性不兼容。对字体和字体颜色进行了更新,以便可以访问。调度禁用的节点显示在黄色警告图标(声明图标)中。(BZ#1875516)
  • 在以前的版本中,一些 API 调用的补丁路径不正确。这会导致 spec 描述符字段更新资源属性。在这个版本里,从描述符构建补丁路径的逻辑已更新。(BZ#1876701)
  • 在以前的版本中,Unschedulable status 字段仅在设置为 True 时才会出现。在这个发行本中,增加了一个新的 UX 设计来显示状态信息。(BZ#1878301)
  • 在以前的版本中,如果具有相同命名空间中的另一个订阅具有手动批准策略,则具有自动批准策略的订阅的行为就像手动批准策略一样。在这个发行版本中,进行了一个更新来通知用户,采用手动批准策略的订阅会导致命名空间中的所有订阅都手动正常工作。(BZ#1882653)
  • 在以前的版本中,一个手动安装计划可以对多个 Operator 有影响。但是,UI 并没有明确标明此情况是正确的,并显示 UI 请求批准时的 UI。因此,用户可以为多个 Operator 批准安装计划,但 UI 并没有明确显示这个情况。在本发行版本中,UI 列出了受手动批准计划影响的所有 Operator,并明确标明要安装哪些 Operator。(BZ#1882660)
  • 在以前的版本中,通过创建命名空间模态创建重复的 namepsace 会导致严重错误。在这个发行版本中,我们添加了在创建项目和创建重复的项目时的错误处理程序不会导致严重错误。(BZ#1883563)
  • 在以前的版本中,Prometheus swagger 定义包含一个无法解析的 $ref 属性,因此 Prometheus 操作对象创建表单出现运行时错误。现在,definitions 属性被添加到 schema 中,它由 definitionFor helper 功能返回,因此 $ref 会被解析且没有运行时错误。(BZ#1884613
  • 在以前的版本中,用户必须在安装状态页面出现前等待在后台载入所需的资源。现在,安装状态页已被更新,以便在用户开始安装 Operator 后马上出现。(BZ#1884664)
  • 在以前的版本中,iOS 不支持通过带有自签名证书的安全 Websocket 连接,因此控制台上会显示白色屏幕。现在,如果带有自分配证书的 Websocket 无法成功,连接会返回 https,因此控制台可以被正确加载。(BZ#1885343)
  • 在以前的版本中,当用户在 web 控制台中创建新角色绑定时,系统角色不会被显示。现在,系统角色会出现在角色名称下拉列表中,因此用户现在可以在创建新角色绑定时选择系统角色。(BZ#1886154)
  • 在以前的版本中,终端假设所有 pod 都是 Linux pod,且没有考虑 Windows pod,因此终端无法用于 Windows Pod,因为默认为 sh 命令。现在,终端会检测 pod 类型并根据需要更改命令。(BZ#1886524)
  • 在以前的版本中,新置备程序名称不包含 kubernetes.io/ 前缀,因此用户可在 web-console 中使用 aws-ebs-csi-driver(gp2-csi)创建 PVC 时选择 RWX 和 RWO 访问模式。现在,在 AccessMode 映射中添加了额外的置备程序,因此在 web-console 中使用 aws-ebs-csi-driver(gp2-csi)创建 PVC 时,RWX 和 RWO 访问模式不可用。(BZ#1887380
  • 在以前的版本中,维护活跃命名空间的逻辑没有考虑删除当前活跃命名空间,因此最近在 UI 中删除的命名空间可能会保留为当前活跃的命名空间中。现在,活跃命名空间逻辑已被更新,在当前浏览器会话中,当用户删除当前活跃命名空间时,默认使用 "All namespaces"。因此,当用户删除当前活跃的命名空间时,同一浏览器会话中的活跃命名空间会自动更新为"所有命名空间"。(BZ#1887465)
  • 在以前的版本中, v0.1.1 中的控制台厂商 'runc' 模块包含潜在的安全问题,因此 frog xray 会把 'runc' 依赖关系标记为潜在的安全漏洞。现在,'runc' 模块被固定到包含修复的 v1.0.0-rc8 版本,因此 'runc' 依赖项不再标记为潜在的漏洞。(BZ#1887864)
  • 在以前的版本中,CSV 和 PackageManifests 列出了每个提供的 API 版本,而不是只是最新版本,因此 CSV 和 PackageManifest 页面可能会显示重复的 API。现在,会更新检索 API 的逻辑,以便只显示每个提供的 API 的最新版本。(BZ#1888150)
  • 在以前的版本中,Install Operand Form 描述缺少 'SynchMarkdownView' 组件,因此它不会使用标记进行格式化。现在,Install Operand Form 被格式化为 markdown,因此安装 Operand Form 描述会被正确格式化。(BZ#1888036
  • 在以前的版本中,fieldDependency specDescriptor 没有使用非同级的依赖关系进行设计或测试。因此,无法保证非同级的依赖关系能够象预期一样工作。在这个版本中,定义了逻辑以确保非同级的依赖关系的行为如预期。(BZ#1890180)
  • 在以前的版本中,如果本地的 ensureKind 函数没有正确处理 null data 参数,则会抛出异常。当使用 data 参数来确保不会抛出异常时,会添加空的 coalescence,这样可以安全地处理 null data 参数。(BZ#1892198
  • 在以前的版本中,在控制台中无法编辑 TLS secret。在这个版本中,添加了一个 type 字段,以便在控制台中更新 TLS secret。(BZ#1893351
  • 在这个版本中,web 控制台显示不正确的文件系统容量和使用数据解决了这个问题。(BZ#1893601)
  • 在以前的版本中,web 控制台会错误地为错误的服务帐户 Prometheus Operator 授予权限,用于为 Operator Lifecycle Manager(OLM)Operator 提取指标。现在,控制台可以正确地为 prometheus-k8s 服务帐户授予权限,允许提取指标。(BZ#1893724)
  • 在以前的版本中,控制台 pod 的 TopologyKey 设置为 kubernetes.io/hostname,这会在更新和区中断过程中造成可用性问题。在这个版本中,TopologyKey 设置为 topology.kubernetes.io/zone,它会在更新和区中断期间提高可用性。(BZ#1894216)
  • 在以前的版本中,在从 OperatorHub 安装新 Operator 时,任何命名空间中缺少 status 块的 OperatorGroup 可能会导致 web 控制台中出现运行时错误。这个问题已解决。(BZ#1895372
  • 在以前的版本中,如果 CRD 的模型不存在,控制台会从 Provided APIs 列表中过滤出自定义资源定义(CRD)。因此,Details 选项卡在初始安装时不会显示 Provided API 卡,这代表 Operator 不提供 API。在此版本中,这个过滤器会从 API 卡中删除,因此即使模型已经存在,也会出现它们。因此,Provided API 卡及其对应标签页始终匹配,如果模型不可用,UI 将不再处于空状态。(BZ#1897354)
  • 在某些情况下,lodash startCase 功能被应用于操作对象描述符字段。因此,字段标签将格式化为 Start Case,这将覆盖描述符的 displayName 属性。在未提供描述符 displayName 时,这个更新只应用于 startCase,这会在操作对象表单中正确显示 displayName。(BZ#1898532)
  • 在以前的版本中,response-jsonschema-form 没有正确处理明确设置为 null 的数组类型 schema。如果传输至 DynamicForm 组件的表单数据包含数组类型属性设为 null,则会出现运行时异常。在这个版本中,在数组字段中添加了 null 检查,确保在这种情况下不再抛出异常。(BZ#1901531

监控

  • 在以前的版本中,prometheus-adapter 没有实现 OpenAPI 规格。因此,API 服务器每 60 秒记录了一个在 Prometheus Adapter 被部署到集群中时 OpenAPI 不存在的消息。另外,KubeAPIErrorsHigh 警报可能会因为日志中的错误而触发。在这个版本中,OpenAPI spec 被引入到 prometheus-adapter 中,它适用于 OpenShift Container Platform 中的其他核心 API 资源。(BZ#1819053)
  • 在以前的版本中,升级安全上下文约束(SCC)的某些场景会导致 Prometheus 有状态集部署失败。现在,非根 SCC 用于用于监控的有状态设置部署。在这个版本中,需要对所有监控有状态集部署(如 Alertmanager、Prometheus 和 Thanos Ruler)的 Kubernetes 安全上下文设置进行以下配置:

    securityContext:
      fsGroup: 65534 1
      runAsNonRoot: true
      runAsUser: 65534 2
    1
    文件系统组 ID 被设置为 nobody 用户, ID 65534。kubelet 在 pod 启动时递归设置组 ID。如需有关为 pod 配置卷权限和所有权更改策略的更多信息,请参阅 Kubernetes 文档
    2
    所有有状态的集合监控部署都以 nobody 用户,ID 65534 身份运行。

    (BZ#1868976)

  • 在以前的版本中,CPU 字节时间(CPU 字节时间)是虚拟 CPU 等待实际 CPU 的时间,而虚拟机监控程序为另一个虚拟处理器提供服务,会影响报告 CPU 消耗的指标。因此,可能会报告 CPU 用量超过节点上的 CPU 数量。现在,报告 CPU 消耗的指标不会考虑 CPU 物理时间,因此报告 CPU 用量可以准确反映实际 CPU 用量。(BZ#1878766)
  • 在以前的版本中,在没有升级权限的情况下验证请求可能会访问用户定义的项目中的 /api/v1/query/api/v1/query_range 的端点。因此,可以访问常规服务帐户令牌的用户可以从任何被监控的目标读取指标。现在,kube-rbac-proxy 被配置为只允许请求到 /metrics 端点。在没有集群范围权限的情况下对 /metrics 的验证请,会接收到一个 HTTP 404 状态代码,以响应对 api/v1/query/api/v1/query_range 端点的查询。(BZ#1913386

网络

  • ovn-kube 中检测默认网关的代码没有考虑多路径环境。因此,Kubernetes 节点启动失败,因为它们无法找到默认网关。现在,相关的逻辑已被修改,它会在有多路径时考虑第一个可用的网关。OVN-Kubernetes 现在可在使用多路径和多个默认网关的环境中工作。(BZ#1914250
  • 当以双堆栈模式部署集群时,OVN-Kubernetes 使用错误的数据源。

    OVN-Kubernetes 主控机节点执行初始同步,使 OVN 和 Kubernetes 系统数据库保持同步。这个问题导致 OVN-Kubernetes 启动出现竞争条件,导致某些 Kubernetes 服务无法访问。Bootstrap 逻辑会删除这些服务,因为它们被视为孤立。

    此程序漏洞已修复,确保了 Kubernetes 用作数据源。OVN-Kubernetes 现在可以正确启动,并在启动时保持 OVN 和 Kubernetes 同步。(BZ#1915295)

  • 当通过在 Cluster Network Operator(CNO)配置对象中指定 additionalNetworks 小节来创建额外网络时,CNO 会管理所创建的 NetworkAttachmentDefinition 对象的生命周期。但是,如果更新 CNO 配置使其从 additionalNetworks 小节中排除额外网络,则该对象不会被删除。在这个发行版本中,CNO 现在删除所有与额外网络相关的对象。(BZ#1755586)
  • 对于 OVN-Kubernetes 集群网络供应商,如果配置了出口 IP 地址,且托管出口 IP 地址的一个节点不可访问,分配给不可访问节点的任何出口 IP 地址都永不会被重新分配给其他节点。在本发行版本中,如果托管出口 IP 地址的节点不可访问,则会将出口 IP 地址分配给另一节点。(BZ#1877273)
  • 对于 OVN-Kubernetes 集群网络供应商,br-ex 网桥的路由优先级可以被安装集群后添加的次网络接口的默认路由替代。当辅助设备的默认路由取代了节点上的 br-ex 网桥,集群网络就不再可以正常工作。在本发行版本中,br-ex 网桥的默认路由不能被替换。(BZ#1880259)
  • 对于使用 OVN-Kubernetes 集群网络供应商的集群,当在集群中添加 Red Hat Enterprise Linux(RHEL)7 worker 节点时,新的 worker 节点无法连接到集群网络。在这个版本中,您可以成功添加 RHEL worker 节点。(BZ#1882667)
  • 对于使用 OVN-Kubernetes 集群网络供应商的集群,无法将 VLAN 或绑定网络设备用作节点上的默认网关。在此发行版本中,OVN-Kubernetes 现在可以使用这些网络设备。(BZ#1884628)
  • 对于使用 Kuryr 集群网络供应商的集群,为主机网络上的 pod 创建不必要的 Neutron 端口。在此发行版本中,主机网络 pod 不再创建 Neutron 端口。(BZ#1886871)
  • 对于使用 OVN-Kubernetes 集群网络供应商的集群,br-ex 网桥不支持附加其他接口,如 veth<N> 对,同时添加到网桥中的接口无法正常工作。在这个版本里,新的接口可以被附加到 br-ex 接口并可以正常工作。(BZ#1887456)
  • 对于使用 OVN-Kubernetes 集群网络供应商的集群,如果配置了 ExternalIP 地址,集群中的任何节点都未配置为使用该 IP 地址正确路由发送到 externalIP 的流量。现在,集群中的每个节点都被配置为使用 ExternalIP 的必要路由。(BZ#1890270)
  • 对于使用 OpenShift SDN 集群网络供应商的集群,会删除命名空间和网络命名空间的顺序。如果首先删除与 Namespace 对象关联的 NetNamespace 对象,则无法再次重新创建该网络命名空间。在本发行版本中,命名空间及其关联的网络命名空间可以按任何顺序删除。(BZ#1892376)
  • 对于使用 OpenShift SDN 集群网络供应商的集群,之前网络供应商会记录以下消息:unable to allocate netid 1。由于此消息对于任何小于 10 的 NETID 来说都不会有害,所以在此发行版本中,OpenShift SDN 不再为任何小于 10 的 NETID 发出信息。(BZ#1897073)
  • 如果集群使用 OVN-Kubernetes 集群网络供应商,则所有入站 ICMPv6 都错误地发送到节点和 OVN。在本发行版本中,只有 ICMPv6 Neighbor Advertisements 和 Route Advertisements 发送到主机和 OVN。因此,发送到集群中节点的 ping 不再会出现重复的响应。(BZ#1897641)
  • 在以前的版本中,在一个有大量节点的集群中,会生成过量多播 DNS(mDNS)流量。因此,网络交换机可能会溢出。此发行版本将 mDNS 查询限制为每秒一次。
  • 在以前的版本中,创建使用 IPv6 的额外网络附加、Whereabouts CNI 插件以及指定排除的子网范围将忽略排除的子网范围。在这个版本中修正了这个插件,从而可以排除子网范围。(BZ#1900835)
  • 在以前的版本中,在某些情况下 od 不会因为 Multus 错误条件终止。当出现问题时,Multus 会在日志中记录 failed to destroy network for pod sandbox 信息。在这个版本中,Multus 可以容忍已删除的缓存文件,pod 可以终止。(BZ#1900835)
  • 在以前的版本中,当将 OpenShift SDN 网络供应商与网络策略搭配使用时,pod 可能会遇到网络连接问题,即使在不使用网络策略的命名空间中也是如此。此程序错误修复确保了实现网络策略的底层 Open vSwitch(OVS)流有效。(BZ#1914284
  • 在以前的版本中,当使用 OVN-Kubernetes 网络供应商并使用多个 pod 作为外部网关时,缩减 pod 会阻止命名空间中的其他 pod 路由流量到剩余的外部网关。相反,流量被路由到节点的默认网关。此程序错误修复可让 pod 继续将流量路由到剩余的外部网关。(BZ#1917605

节点

  • 在以前的版本中,如果 pod 或容器创建请求时间太长,集群的负载可能会出现超时问题。kubelet 试图重新请求该资源,即使 CRI-O 仍然在创建该资源,从而导致请求失败并出现 name is reserved 错误。CRI-O 完成原始请求后,它会注意到请求超时,并清理失败的 pod/container,再启动该过程。因此,pod 和容器创建可能会停止,kubelet 会报告多个 name is reserved 错误。这也可能导致已经过载的节点进一步超载。在这个版本中,修改了 CRI-O,以保存因为系统负载造成超时的 pod 或容器创建的过程。CRI-O 也阻止来自 kubelet 的新请求,因此 name is reserved 错误会较少。因此,当集群负载较大时,CRI-O 会减慢 kubelet 并减少集群的负载。节点上的总负载会减少,Kubelet 和 CRI-O 应该更快速地协调。(BZ#1785399)
  • 在以前的版本中,卷中深度目录会导致 SELinux 重新标记时间。因此,容器创建请求可能会超时,kubelet 会尝试重新请求该资源,从而导致 error reserving ctr nameKubelet may be retrying requests that are timing out in CRI-O due to system load 错误。在这个版本中,修改了 CRI-O,以保存因为系统负载造成超时的 pod 或容器创建的过程。因此,容器请求会及时被处理。(BZ#1806000)
  • 在以前的版本中,CRI-O 只使用 IPv4 iptables 管理主机端口映射。因此:主机端口无法用于 IPv6。在这个版本中,修改了 CRI-O 以支持 IPv6 主机端口。因此,主机端口可以如预期使用 IPv6。(BZ#1872128
  • 在以前的版本中,HTTP/2 传输没有附加到提供超时逻辑的连接中的正确选项,这会导致 VMWare 网络接口(及其他情况)片断几秒钟会导致连接失败。因此,连接静默会导致其他相关故障,如没有检测到节点停机、使用过时连接的 API 调用等。在这个版本中,添加了正确的超时。因此,系统中的 HTTP/2 连接更为可靠,副作用可以被控制。(BZ#1873114
  • 在以前的版本中,拓扑管理器端到端测试(openshift-tests run-test)需要在每个 worker 节点上运行 Machine Config Daemon(MCD),这是部署在 Red Hat Enterprise Linux CoreOS(RHCOS)节点上的节点的情况,而不是针对在 Red Hat Enterprise Linux(RHEL)上部署的节点。因此,当针对在 RHEL 上部署的集群运行时,Topology Manager 端到端测试会错误地失败。在这个版本中,测试已被修改,以跳过所有没有检测到 MCD 的节点。因此,不再报告假的故障。(BZ#1887509
  • 在以前的版本中,当状态缺失时,Kubelet 无法正确处理转换。因此,一些被终止的 pod 不会被重启。在这个版本中,添加了一个 failed 的容器状态,以便可以根据需要重启容器。因此,kubelet pod 处理不会导致无效状态转换。(BZ#1888041
  • 在以前的版本中,Kubernetes 1.19 及更新版本中缺少 cAdvisor 的机器指标。在这个版本中,代码已被修改来正确地收集 CAdvisor 机器指标数据。因此,会显示机器的指标数据。(BZ#1913096
  • 在以前的版本中,Horizontal Pod Autoscaler(HPA)忽略了指标不完整的 pod,如含有 init 容器的 pod。因此,任何带有 init 容器的 pod 都不会被扩展。在这个版本中,Prometheus Adapter 会为 init 容器发送完整的指标数据。因此,HPA 可以使用 init 容器扩展 pod。(BZ#1867477)
  • 在以前的版本中,Vertical Pod Autoscaler(VPA)无法监控部署配置。因此,VPA 无法扩展部署配置工作负载。在这个版本中,VPA 为监控部署配置添加了适当的权限。因此,VPA 可以扩展部署配置工作负载。(BZ#1885213)

Node Tuning Operator

  • 当创建无效的 Tuned 配置集时,openshift-tuned 监控器进程可能会忽略将来的配置集更新,且无法应用更新的配置集。在这个版本中,可以保留有关 Tuned 配置集应用程序成功或失败的状态信息。现在,在收到新的有效配置集时, openshift-tuned 从配置集应用程序失败中恢复。(BZ#1919970

oauth-proxy

  • 在以前的版本中,有失败的身份验证检查的旧记录。对 oauth-proxy 后面的服务的请求可能导致在代理日志中写入一行,从而导致日志中出现大量数据。在这个版本中,代理删除了非格式化的日志行。现在,代理不再遇到日志垃圾邮件。(BZ#1879878)
  • 在以前的版本中,无效的选项处理会在使用 oauth-proxy 命令指定不正确的选项组合时导致 nil dereference。这会导致在用量消息末尾出现 segmentation 错误堆栈跟踪信息。现在,选项处理有所改进,当指定不正确的选项组合时则不会发生 nil dereferences。现在,当指定不正确的选项时,使用情况信息会被输出,无需跟踪堆栈。(BZ#1884565)

oc

  • 在以前的版本中,日志库的改变导致 goroutine 堆栈 trace 的输出日志级别较低(2 级),这使得调试更为困难。goroutine 栈跟踪的日志级别被提高,现在它们只会在日志级别 6 及更高版本中打印。(BZ#1867518)
  • 在以前的版本中,用户使用 OpenShift CLI(oc)登录到多个集群,每次登录到不同集群时都需要使用相同的用户名再次进行登陆。上下文名已被正确更新,因此当使用相同用户名进行登陆时,它会是唯一的。现在,在登录后,如果切换上下文后,不需要再次登录。(BZ#1868384)
  • 在以前的版本中,当使用 oc adm release mirror 将发行版本镜像到磁盘时,清单文件名不包含架构扩展,如 -x86_64。这不允许在不出现标签名称冲突的情况下将多个架构镜像到同一个存储库。文件名现在包含正确的构架扩展,可防止标签名称冲突。(BZ#1878972)
  • 在以前的版本中,镜像验证器对象没有被正确设置,这可能会导致 OpenShift CLI(oc)在验证镜像时出现 nil pointer 异常失败。镜像验证器对象现已正确设置,在验证镜像时,OpenShift CLI(oc)不再会失败且出现 nil pointer 异常。(BZ#1885170)
  • 在以前的版本中,使用 oc adm verify-image-signature 验证镜像签名时使用错误的用户名,镜像签名验证会失败。现在,当验证镜像签名和镜像签名验证时,使用正确的用户名可以正常工作。(BZ#1890671)
  • 在以前的版本中,在构建过程中不会生成提供版本信息的元数据,它不会出现在 OpenShift CLI(oc)的 Windows 二进制文件中。正确的 Windows 版本信息现在在 Windows 二进制文件上生成并可用。(BZ#1891555)
  • 在以前的版本中,缺少路由条件的 nil 检查可能会导致 OpenShift CLI(oc)在描述路由时崩溃。添加了 nil 检查,描述路由现在可以正常工作。(BZ#1893645)
  • 在以前的版本中,OpenShift CLI(oc)对客户端节流有较小的限制,客户端代码则对到达 API 发现的请求进行限制。客户端节流限制已增加,客户端节流现在出现较少的频率。(BZ#1899575
  • 在以前的版本中,在更改 oc debug 命令的过程中,对 init 容器的支持会丢失,且无法调试 init 容器。oc debug 命令中添加了对 init 容器的支持,现在可以调试 init 容器。(BZ#1909289

OLM

  • Marketplace Operator 被编写来报告当 marketplace-operator pod 安全退出时其提供的服务被降级,这会在集群常规升级过程中发生。这会导致 pod 在正常升级过程中报告降级,从而导致混乱。Marketplace Operator 不再会在它安全退出时报告它已被降级,且 Telemeter 客户端不再标记为 degraded。(BZ#1838352)
  • 以前,在 Operator 升级过程中,Operator Lifecycle Manager(OLM)在升级完成前删除了现有集群服务版本(CSV)。这会导致新 CSV 处于 "Pending" 状态。在这个版本中更新了 OLM,以检查服务帐户的所有权,以确保为新 CSV 创建新服务帐户。因此,在新 CSV 正确达到 "Succeeded" 状态前,现有 CSV 不再被删除。(BZ#1857877)
  • 在以前的版本中,Operator Lifecycle Manager(OLM)可以接受指定不存在的频道的 Subscription 对象。订阅可能会成功,且不会出现相关的错误信息,从而导致用户混淆。在这个版本中更新了 OLM,从而导致 Subscription 对象在这种情况下失败。集群管理员可以查看 default 命名空间中的事件以了解依赖项解析失败信息,例如:

    $ oc get event -n default

    输出示例

    LAST SEEN   TYPE      REASON             OBJECT                    MESSAGE
    6m22s       Warning   ResolutionFailed   namespace/my-namespace    constraints not satisfiable: my-operator is mandatory, my-operator has a dependency without any candidates to satisfy it

    (BZ#1873030)

  • 在以前的版本中,Operator Lifecycle Manager(OLM)中对准入 webhook 配置的支持会重复使用部署 API 服务器时使用的 CA 证书生成代码。这个代码使用的挂载目录将证书信息放在以下位置:

    • /apiserver.local.config/certificates/apiserver.crt
    • /apiserver.local.config/certificates/apiserver.key

    但是,使用 Kubebuilder 或 Operator SDK 构建的准入 Webhook 预期将 CA 证书挂载到以下位置:

    • /tmp/k8s-webhook-server/serving-certs/tls.cert
    • /tmp/k8s-webhook-server/serving-certs/tls.key

    此不匹配会导致 Webhook 无法运行。在这个版本中更新了 OLM,现在在通过 Kubebuilder 或 Operator SDK 构建的 webhook 所需的默认位置挂载 Webhook CA 证书。因此,使用 Kubebuilder 或 Operator SDK 构建的 Webhook 现在可以由 OLM 部署。(BZ#1879248)

  • 当部署具有 API 服务、转换 Webhook 或准入 webhook 的 Operator 时,Operator Lifecycle Manager(OLM)应从现有资源检索 CA 以计算 CA 哈希注解。此注解会影响 OLM 依赖于的部署哈希来确认是否已正确安装了部署。OLM 目前不会从转换 Webhook 检索 CA,从而导致无效的部署哈希,导致 OLM 尝试重新安装集群服务版本(CSV)。

    如果 CSV 定义了转换 Webhook 但不包括 API 服务或准入 Webhook,CSV 周期会无限期地在 "Pending"、"ReadyToInstall" 和 "Insbil" 阶段间进行。在这个版本中更新了 OLM,以使用现有转换 Webhook 来检索 CA 的值并正确计算部署散列。因此,OLM 现在可以安装 CSV 来定义转换 Webhook,无需 API 服务或准入 Webhook。(BZ#1885398)

  • opm 命令中,semver-skippatch 模式之前只允许带有后续补丁版本的捆绑作为有效替代,忽略所有预发布版本。带有相同补丁版本但后续预发布版本的捆绑包不被接受替代版本。此程序错误修复更新了 opm 命令,它基于 semver-skippatch 检查整个语义版本,而不是只是补丁版本。因此,后续预发布版本现在在 semver-skippatch 模式中有效。(BZ#1889721)
  • 在以前的版本中,Marketplace Operator 在集群升级过程中无法清理过时的服务,Operator Lifecycle Manager(OLM)在不验证服务的情况下接受过时的服务。这会导致过时的服务将流量定向到包含过时内容的目录源 pod。在这个版本中更新了 OLM,为服务添加 spec hash 信息,并通过比较散列信息来确保服务具有正确的 spec。然后,如果服务过时,OLM 会删除并重新创建该服务。因此,服务规格现在会将流量定向到正确的目录源 pod。(BZ#1891995
  • 将 Operator 镜像到断开连接的 registry 后,因为缺少相关的捆绑包镜像,Operator 安装可能会失败。这是因为 bundle 镜像不存在于 index.db 数据库中。在这个版本中,更新了 opm 命令,以确保捆绑包镜像存在于数据库的 related_images 表中。(BZ#1895367)
  • 在以前的版本中,Operator 作者可创建集群服务版本(CSV),使用在 165535 范围内设置的容器端口来定义 webhook。这导致无法因为验证失败而创建 ValidatingWebhookConfigurationMutatingWebhookConfiguration 对象,从而无法创建成功安装的 CSV。CSV 的自定义资源定义(CRD)验证现在包含 WebhookDescription ContainerPort 字段的正确的最小和最大值。现在,如果没有定义容器端口,则默认为 443。无效容器端口的 CSV 现在会在创建 CSV 前失败验证。(BZ#1891898
  • 不由任何频道条目引用的滞留的 Operator 镜像捆绑包在 opm index prune 操作后仍会被保留。这会导致意外的索引镜像被镜像。现在,当修剪索引且在以后的 Operator 目录没有包括意外镜像时,滞留的镜像捆绑包也会被删除。(BZ#1904297)
  • 在以前的版本中,Operator 更新可能会导致在创建新服务帐户前部署 Operator pod。pod 可以通过使用现有服务帐户部署,且无法在权限不足的情况下启动。添加了一个检查,以在集群服务版本(CSV)从 Pending 状态变为 Installing 状态前验证新的服务帐户是否存在。如果不存在新服务帐户,CSV 仍处于 Pending 状态,从而导致无法更新部署。(BZ#1905299)
  • 在以前的版本中,当 Operator Lifecycle Manager(OLM)将 ClusterServiceVersion(CSV)对象复制到多个目标命名空间时,复制的 CSV 中的 .status.lastUpdateTime 字段被设置为当前时间。如果当前时间比原始 CSV 的最后更新时间要长,则会触发同步竞争条件,其中复制的 CSV 永远不会组合来与原始 CSV 匹配。当集群中有很多命名空间时,则可能发生这个情况。现在,复制的 CSV 中会保留原始 .status.lastUpdateTime 时间戳,且同步竞争条件不会由 .status.lastUpdateTime 值之间的不同而触发。(BZ#1905599)
  • 在以前的版本中,ClusterServiceVersion(CSV)对象的 StrategyDetailsDeployment 对象中定义的 Pod 模板可能包含与 CSV 中定义的 pod 注解不匹配。Operator Lifecycle Manager(OLM)无法安装 Operator,因为 CSV 中的注解应该存在于作为 CSV 一部分的 pod 中。现在,StrategyDetailsDeployment 对象中定义的 pod 模板注解会被 CSV 中定义的 Pod 模板注解覆盖。OLM 不再无法部署与 pod 模板中定义的注解冲突的 CSV。(BZ#1907381)
  • openshift-marketplace 命名空间中的默认目录源通过 OperatorHub API 禁用时,您可以创建一个与默认名称相同的自定义目录源。在以前的版本中,当 marketplace 重启时,Marketplace Operator 会删除名称与默认目录源相同的自定义目录源。注解添加到 Marketplace Operator 创建的默认目录源中。现在,Operator 仅在重启 marketplace 时删除包含注解的目录源。创建的自定义目录源与默认目录源的名称相同,不会被删除。(BZ#1908431)
  • 在以前的版本中,oc adm catalog mirror 命令在没有命名空间的情况下无法为 Operator 索引镜像生成正确的映射。另外,--filter-by-os 选项会过滤整个清单列表。这会导致目录中对过滤的镜像的引用无效。现在,没有命名空间的索引镜像被正确映射,--index-filter-by-os 选项添加到仅拉取和解包的索引镜像。oc adm catalog mirror 命令现在在没有命名空间的情况下为索引镜像生成有效的映射,--index-filter-by-os 选项会创建对过滤的镜像的有效引用。(BZ#1908565)
  • 在以前的版本中,Operator 可以在集群服务版本(CSV)替换链中指定一个 skipRange,这会导致 Operator Lifecycle Manager(OLM)尝试更新 Operator。这个无限循环将增加 CPU 用量。现在,CSV 替换链已被更新,Operator 不会因为一个无效的 skipRange 停留在无限循环中。(BZ#1916021
  • 在以前的版本中,集群服务版本(CSV)协调循环中的 csv.status.LastUpdateTime 时间比较总是返回一个 false 的结果。这会导致 Operator Lifecycle Manager(OLM)Operator 不断更新 CSV 对象并触发另一个协调事件。现在,改进了时间比较,在没有状态更改时 CSV 将不再更新。(BZ#1917537
  • 当 Catalog 更新 pod 轮询间隔(15 的倍数)大于默认的 15 分钟重新同步周期,则 Catalog Operator 将继续协调。这会一直进行直至达到下一次轮询时间,从而增加 CPU 负载。现在改进了协调重新排队逻辑,因此不会出现持续协调以及相关的 CPU 负载增加。(BZ#1920526
  • 在以前的版本中,如果在尝试创建 Operator 订阅的过程中未找到匹配的 Operator,则解析失败事件中列出的限制包括内部术语。订阅约束字符串没有从用户视角描述解析失败的原因。约束字符串现在更为明确。(BZ#1921954

openshift-apiserver

  • 在以前的版本中,针对 deploymentconfigs/<name>/instantiate 子资源的请求会失败,并带有一个 no kind "DeploymentConfig" is registered for version apps.openshift.io/ 错误。现在设置了 DeploymentConfig 的正确版本,这些请求不再会失败。(BZ#1867380)

Operator SDK

  • 在以前的版本中,所有的 operator-sdk 子命令都试图读取 PROJECT 文件,即使 PROJECT 是目录。因此,不需要 PROJECT 文件的子命令会失败。现在,不需要 PROJECT 文件的子命令不会试图读取该文件,即使存在无效的 PROJECT 文件也是如此。(BZ#1873007)
  • 在以前的版本中,运行 operator-sdk cleanup 命令不会清理通过 operator-sdk run bundle 命令部署的 Operator。相反,会显示错误消息且 Operator 不会被清理。现在,operator-sdk cleanup 命令已被更新,可以使用 cleanup 命令清理部署了 run bundle 的 Operator。(BZ#1883422)

Performance Addon Operator

  • 在以前的版本中,在 must-gather 逻辑中等待错误会导致日志收集时间过早终止。这个问题会根据时间造成日志收集操作提早中断。这会导致只收集了部分日志。现在,通过在 must-gather 逻辑中添加正确的等待来解决这个问题。(BZ#1906355)
  • 在以前的版本中,must-gather 在所有节点上收集未绑定的 kubelet 日志。此问题导致过度的数据传输和收集,对用户没有明显的好处。

    这个问题已解决,方法是只收集 worker 节点上的 kubelet 日志中绑定的数量(最后 8 小时),而不收集 control plane 节点上的 kubelet 日志。(BZ#1918691

  • 在以前的版本中,当机器配置池降级时,性能配置集不会被更新来显示准确的机器配置池状态。现在,性能配置集节点选择器或机器配置池选择器可以正确地监控相关的机器配置池,降级的机器配置池反映了正确的状态。(BZ#1903820

RHCOS

  • 在以前的版本中,在 RHCOS 安装过程中配置额外的 Azure 磁盘会导致失败,因为 RHCOS initramfs 中缺少 Azure 磁盘的 udev 规则。添加了必要的 udev 规则以便在安装过程中配置附加磁盘现在可以正常工作。(BZ#1756173)
  • 以前,rhcos-growpart.service 的用途并非是最佳实践。现在,rhcos-growpart.service 已被删除,用于在安装时通过 Ignition 配置磁盘。要在初始 RHCOS 安装后更改磁盘配置,您必须为您的系统置备所需的磁盘配置更改。(BZ#1851103)
  • 在以前的版本中,当运行 rpm-ostree cleanup -p 时,Machine Config Operator 会尝试回滚 rpm-ostree,从而导致出现 "System transaction in progress" 错误。在这个版本中改进了与 D-Bus 处理相关的 rpm-ostree 代码,因此不再会发生错误。(BZ#1865839)
  • 在以前的版本中,在 RHEL 8.2 中 KVM 中不支持 NVME 模拟的 ppc64le 或 s390x,这会导致 kola --basic-qemu-scenarios 使用 NVME 模拟失败。在 ppc64le 和 s390x 中禁用了对 NVME 模拟的测试,以便测试现在可以成功。(BZ#1866445)
  • 在以前的版本中,当 DHCP 服务器需要很长时间响应 DHCP 查询时,Ignition 无法通过网络获取远程配置,因为 NetworkManager 会停止等待 DHCP 回答,且不会在 initramfs 中配置网络。现在,当作为内核参数设置来增加超时和重试次数时,NetworkManager 的新版本可以了解 rd.net.timeout.dhcp=xyzrd.net.dhcp.retry=xyz 选项,您可以考虑使用这些参数来处理 DHCP 延迟的问题。(BZ#1877740)
  • 在以前的版本中,因为内核命令行中的多个 nameserver= 条目可能会创建多个网络管理器(NetworkManager)连接配置集,所以可能会创建不正确的网络配置,。现在,RHCOS 中的 NetworkManager 的新版本可以正确处理多个 nameserver= 条目,以便在提供了多个 nameserver= 条目时可以正确生成网络配置。(BZ#1882781)
  • 在以前的版本中,节点进程会因为一个递归调用(recursive call)造成堆栈溢出,导致节点进程出现问题。已修复这个逻辑错误,不再会出现这个问题。(BZ#1884739)
  • 在以前的版本中,网络相关的服务单元没有被严格排序,这意味着使用 -copy-network 复制的网络配置在第一次重启系统时不会生效。相关的服务单元的顺序已被修复,它们现在总是在第一次重启时生效。(BZ#1895979
  • 在以前的版本中,当 coreos-installer 命令调用 fdasd 来检查 s390x 中的有效 DASD 标签时,udev 会重新探测 DASD 设备,因为 udev 仍可以访问该设备,从而导致 DASD 格式化失败,。现在,在检查 DASD 标签后,coreos-installer 会等待 udev 完成处理 DASD,以确保 DASD 格式化成功。(BZ#1900699
  • 在以前的版本中,在使用 DHCP 时,查询和修改网络管理器(NetworkManager)连接设置可能会混淆,因为默认创建的网络管理器连接是为所有接口匹配的。用户体验已被改进,在使用 DHCP 时,网络管理器(NetworkManager)现在默认为每个接口创建一个单独的连接。(BZ#1901517)
  • 在以前的版本中,在切换到真实 root 前无法正确检测到 initrd 中的网络接口会导致静态 IP 分配到 VLAN 接口,因此无法在实际的 root 中成功激活。在这个版本中,修改网络接口在 initrd 中的处理方式,从而可以在真实的根用户中成功激活到 VLAN 接口的静态 IP 分配。(BZ#1902584
  • 在以前的版本中,如果您将 RHCOS 配置为使用 dhclient 进行 DHCP 操作,您会保留无法正确获取 DHCP 地址的系统,因为在生成了 initramfs 中的 NetworkManager 时,dhclient 二进制代码已从 RHCOS 中删除。dhsclient 二进制文件现在包括在 RHCOS 中,以便 RHCOS 系统能够使用 dhclient 成功执行 DHCP 操作。(BZ#1908462)
  • 在以前的版本中,升级的节点不会接收唯一的发起方名称,因为重新生成 iSCSI 启动程序名称的服务单元只能在第一次引导时正常工作。在这个版本中,服务单元会在每次引导时运行,因此升级的节点如果不存在,则会接收生成的 initiator 名称。(BZ#1908830)
  • 在以前的版本中,您无法使用 Ignition 创建 ext4 文件系统,因为当 /etc/mke2fs.conf 不存在时 mkfs.ext4 会失败。在这个版本中,/etc/mke2fs.conf 已被添加到 initramfs 中,以便 Ignition 能够成功创建 ext4 文件系统。(BZ#1916382

路由

  • 在以前的版本中,可以在路由上设置 haproxy.router.openshift.io/timeout 注解,其值超过 25 天。大于 25 天的值会导致入口控制器失败。现在,超时的上限被设置为 25 天。(BZ#1861383)
  • 在以前的版本中,即使未置备 DNS 或所需的负载均衡器未就绪,入口控制器也会报告 Available 状态。现在,为 Ingress Operator 添加了验证,以确保在入口控制器被报告就绪前,置备了 DNS 和负载均衡器(如果需要)。(BZ#1870373)
  • 在以前的版本中,可以将 ingress 控制器的默认证书设置为不存在的 secret(如因为输入了错误的信息)。此程序错误修复添加了验证,以确保 secret 在更改默认证书前存在。(BZ#1887441)
  • 在以前的版本中,可以创建名称大于 63 个字符的路由。但是,在路由被创建后验证会失败。此程序错误修复添加了在路由创建时的验证。(BZ#1896977)

存储

  • 在以前的版本中,准入插件会添加一个故障切换域和区域标签,即使它们没有正确配置,从而导致使用静态置备的持久性卷(PV)的 pod 无法在配置中带有空区域的 OpenStack 集群中启动。在这个版本中,表只有在包含有效区域和故障域时才添加到 PV 中,因此使用静态置备的 PV 的 pod 与配置了空区域或故障域的 OpenStack 集群上的 pod 的行为相同。(BZ#1877681)
  • 在以前的版本中,Web 控制台中会显示 LocalVolumeDiscoveryResult 对象,表示可以手动定义它们。在这个版本中,LocalVolumeDiscoveryResult 类型被标记为内部对象,在 web 控制台中不再显示。要查看本地磁盘,请导航到 Compute → Nodes → Select Nodes → Disks。(BZ#1886973)
  • 在以前的版本中,当创建需要凭证的快照时,如果 VolumeSnapshotClass CRD 已被删除,对快照的强制删除操作将无法正常工作。现在,不需要依赖于 VolumeSnapshotClass CRD 的存在,而是从 VolumeSnapshotContent CRD 获取凭证,以便可以删除使用凭证的卷快照和卷快照内容,如果包含这些凭证的 secret 仍然存在。(BZ#1893739)
  • 在以前的版本中,Kubernetes FibreChannel(FC)卷插件不会在删除多路径设备前正确清除该多路径设备。在极个别的情况下,多路径 FC 设备上的文件系统在 pod 销毁过程中可能会被破坏。现在,Kubernetes 在删除 FC 多路径设备前清除数据,以防止文件系统崩溃。(BZ#1903346)

扩展

  • 在 OpenShift Container Platform 中使用用于配置超线程的 nosmt 额外内核参数以前没有包括在相关文档中。要禁用超线程,创建一个适合您的硬件和拓扑的性能配置集,然后将 nosmt 设置为附加内核参数。

    如需更多信息,请参阅有关低延迟和实时应用程序的超线程