1.6. 程序错误修复
裸机硬件置备
-
在以前的版本中,当将 RHCOS 镜像写入一些磁盘时,
qemu-img
将空间分配给整个磁盘,包括稀疏区域。这延长了在某些硬件上写入进程的时间。在这个版本中,禁用镜像创建中的qemu-img
稀疏。因此,在受影响的硬件上镜像写入将不再需要很长时间。(BZ#2002009) -
在以前的版本中,如果为
RootDeviceHints
设置rotational
字段,则主机可能会失败。在这个版本中,RootDeviceHints
中的rotational
字段会被正确复制并被检查。因此,在使用rotational
字段时置备会成功。(BZ#2053721) 在以前的版本中,Ironic 无法使用虚拟介质置备 Nokia OE 20 服务器,因为 BMC 需要在请求中明确设置
TransferProtocolType
属性,尽管这是可选属性。另外,BMC 还需要使用一个专用的RedFish
设置资源来覆盖引导订购,而大多数 BMC 只是使用system
资源。发生此错误的原因是,Nokia OE 20 严格要求 vMedia 附加一个可选的TransferProtocolType
属性,且需要使用RedFish
设置资源来覆盖引导序列。因此,基于虚拟介质的置备会在 Nokia OE 20 上会失败。这个问题有两个临时解决方案:-
当 vMedia 附加请求失败时,出现错误表示缺少
TransferProtocolType
属性,请重试请求并明确指定此属性。 - 检查系统中是否存在 RedFish 设置资源。如果存在,请将其用于引导序列覆盖。
因此,基于虚拟介质的置备会在 Nokia OE 20 机器上成功。(BZ#2059567)
-
当 vMedia 附加请求失败时,出现错误表示缺少
- 在以前的版本中,在使用 OpenShift Container Platform 裸机 IPI 部署时,Ironic API 检查器镜像无法清理属于被动多路径设置一部分的磁盘。在这个版本中,当使用主动或被动存储阵列时,会失败。现在,当客户想使用主动或被动的多路径设置时,可以使用 OpenShift Container Platform 裸机 IPI。(BZ#2089309)
-
在以前的版本中,Ironic 无法将
wwn
序列号与多路径设备匹配。因此,在install-config.yaml
配置文件中的rootDeviceHint
参数中无法使用wwn
的序列号。在这个版本中,Ironic 会识别wwn
序列号作为多路径设备的唯一标识符。作为结果,现在可以为install-config.yaml
文件为设备 mapper 设备使用wwn
序列号。(BZ#2098392) - 在此次更新之前,当 Redfish 系统具有 Settings URI 时,Ironic 置备服务总是尝试使用此 URI 来更改引导相关的 BIOS 设置。但是,如果 Baseboard Management Controller (BMC) 带有 Settings URI,但不支持使用此设置 URI 更改特定的 BIOS 设置,裸机置备会失败。在 OpenShift Container Platform 4.11 及更高版本中,如果系统具有 Settings URI,Ironic 会在继续操作前使用 Settings URI 来验证它是否可以更改特定的 BIOS 设置。否则,Ironic 使用 System URI 实现更改。此额外逻辑可确保 Ironic 可以应用与引导相关的 BIOS 设置更改,裸机置备可以成功。(OCPBUGS-2052)
Builds
-
在以前的版本中,在
BuildConfig
实例的ImageLabel
名称中使用正斜杠(/
)会导致错误。在这个版本中,通过更改用于验证的实用程序解决了这个问题。因此,您可以在BuildConfig
实例的ImageLabel
名称中使用正斜杠。(BZ#2105167) -
在以前的版本中,当使用
$ oc new-app --search <image_stream_name>
命令时,可能会收到与docker.io
镜像相关的错误信息。这会给用户造成混淆,因为 OpenShift Container Platform 不使用指向docker.io
的镜像流。在这个版本中,添加了代码检查以防止对docker.io
的引用。因此,该命令的输出不包括消息。(BZ#2049889) - 在以前的版本中,共享资源 CSI Driver 指标不会导出到 Telemetry 服务。因此,无法分析 Shared Resource CSI Driver 的使用指标。在这个版本中,共享资源 CSI Driver 指标会公开到 Telemetry 服务。因此,可以收集和分析 Shared 资源 CSI Driver 的使用指标。(BZ#2058225)
默认情况下,Buildah 会输出日志文件的步骤,包括环境变量的内容,其中可能包括 构建输入 secret。虽然您可以使用
--quiet
构建参数来禁止打印这些环境变量,但如果使用 Source-to-image(S2I)构建策略,则此参数将不可用。当前发行版本解决了这个问题。要禁止打印环境变量,请在构建配置中设置BUILDAH_QUIET
环境变量:sourceStrategy: ... env: - name: "BUILDAH_QUIET" value: "true"
-
在此次更新之前,使用
$ oc new-app --search <image_stream_name>
命令提供了一个警告,您可能无法访问容器镜像"docker.io/library/<image_name>:<tag>
"。这会导致 OpenShift Container Platform 带有指向docker.io
的镜像流的混乱。在这个版本中解决了这个问题,增加了代码检查以防止混淆对 'docker.io' 的引用。现在,该命令的输出不包括docker.io
的信息(BZ#2049889)
Cloud Compute
-
CertificateSigningRequest
(CSR)资源续订由 Kubernetes 控制器管理器处理,并被 Cluster Machine Approver Operator 正确保留等待,这会将mapi_current_pending_csr
指标的值增加到1
。在以前的版本中,当 Kubernetes 控制器管理器批准 CSR 时,Operator 会忽略它,并保留指标没有改变。因此,mapi_current_pending_csr
指标一直处于1
状态,直到 Operator 下一个协调为止。在这个版本中,来自其他控制器的 CSR 批准始终被协调来更新指标数据,在每个协调后更新mapi_current_pending_csr
指标的值。(BZ#2047702) - 在以前的版本中,只有 AWS SDK 中已知区域列表里的区域被验证,并指定任何其他区域会导致错误。这意味着,随着新区域被添加的,在 SDK 已更新以包含新区域信息前无法使用它们。在这个版本中,使用不太严格的设置验证区域,在无法识别区域时警告用户。因此,新区域可能会导致警告信息,但可以被立即使用。(BZ#2065510)
-
在以前的版本中,Cluster Machine Approver Operator 将
"Approved"
状态条件附加到其 condition 列表中。因此,Kubernetes API 服务器会记录包含消息[SHOULD NOT HAPPEN] failed to update managedFields
。在这个版本中,Operator 被更新为在附加到列表前检查其条件,并仅在需要时更新条件。因此,在CertificateSigningRequest
资源中不再重复条件,Kubernetes API 服务器不再记录与重复相关的错误。(BZ#1978303) - 在以前的版本中,Cisco ACI neutron 实现中存在 Red Hat OpenStack Platform(RHOSP)版本 16 中的一个缺陷,导致对属于给定网络的子网的查询返回非预期的结果。因此,RHOSP Cluster API 供应商可能会尝试置备同一子网上带有重复端口的实例,从而导致置备失败。在这个版本中,RHOSP Cluster API 供应商中的其他过滤可确保每个子网没有多个端口,现在可以使用 Cisco ACI 在 RHOSP 版本 16 上部署 OpenShift Container Platform。(BZ#2033862)
- 在以前的版本中,Red Hat OpenStack Platform(RHOSP)Machine API 供应商不使用代理环境变量指令,从而导致在 HTTP 或 HTTPS 代理后安装失败。在这个版本中,供应商可以在一个 egress 网络流量需要通过一个代理的受限环境中正确处理代理指令和功能。(BZ#2046133)
- 在以前的版本中,当从 OpenShift Container Platform 4.9 升级到 4.10 时,多个控制器间的不一致会导致版本号不正确。因此,版本号不一致。在这个版本中,对版本号的读取一致,集群 operator 状态中的发行版本现在稳定。(BZ#2059716)
- 在以前的版本中,可能会发生 AWS Machine API 供应商中的负载均衡器目标。这是因为在替换 control plane 机器时,基于 IP 的负载均衡器附加可能会保留在负载均衡器注册中。在这个版本中,在从 AWS 中删除 Amazon EC2 实例前,基于 IP 的负载均衡器附加会从负载均衡器中删除。因此,可以避免泄漏。(BZ#2065160)
-
在以前的版本中,在升级过程中,通过 Machine API 创建的新机器默认为 HW-13,这会导致集群降级。在这个版本中,虚拟机控制器会在从模板克隆创建过程中检查虚拟机的硬件版本。如果模板的硬件版本小于 15,则机器会进入
failed
状态,这是 OpenShift Container Platform 4.11 及以上版本所支持的最小硬件版本。(BZ#2059338) - 在以前的版本中,Azure 可用性集的 procedural 名称生成器超过了 80 个字符的最大限制。这可能导致 Machine API 在名称截断过程中重复使用相同的集合,而不是创建多个可用性集。在这个版本中,procedural 名称生成器被更新,以确保名称不再超过 80 个字符,且集群名称不会在集合名称中重复。因此,Azure 可用性集不再以意外的方式截断。(BZ#2093044)
- 因为 Cluster Autoscaler Operator 是在不设置任何领导选举参数的情况下部署集群自动扩展,所以集群自动扩展可能会意外失败,并在集群重启后重启。在这个版本中,Cluster Autoscaler Operator 会使用定义良好的领导选举标记部署集群自动扩展。因此,集群自动扩展在重启后可以正常工作。(BZ#2063194)"
-
在以前的版本中,证书签名请求(CSR)续订由
kube-controller-manager
处理,由机器批准程序正确保留等待,这会将mapi_current_pending_csr
增加到1
。之后,kube-controller-manager
批准 CSR,但机器批准者将忽略它,这会使指标保持不变。因此,mapi_current_pending_csr
一直处于1
个状态,直到有其他机器批准人被协调。在这个版本中,CSR 批准与其它控制器协调,以正确更新指标。因此,每次协调后mapi_current_pending_csr
始终保持最新状态。(BZ#2072195) - 在以前的版本中,如果集群安装时启动了 worker 节点数量,Machine API Operator 不会报告降级,即使其他 Operator 被报告为 degraded。在这个版本中,Machine API Operator 会被报告为 degraded,并会在安装日志中发布错误。因此,当 Machine API Operator 出现在失败的 Operator 列表中,用户现在知道检查机器的状态作为 worker 节点不足的原因。(BZ#1994820)
- 因为 Machine API Operator 没有遵循代理环境变量指令,所以在 HTTP 或 HTTPS 代理后安装会失败。在这个版本中,Machine API Operator 的 HTTP 传输逻辑现在遵循代理指令。因此,Machine API Operator 现在可以在只通过代理允许出口流量的受限环境中工作。(BZ#2082667)
- 在以前的版本中,在 vSphere 上安装有数千个标签和重度 API 负载的集群会失败。现在,机器控制器只查询与特定 OpenShift Container Platform 安装相关的标签。因此,OpenShift Container Platform 在 vSphere 上为这些集群正确安装。(BZ#2097153)
-
因为 kubelet 需要联系 vCenter 来获取节点区标签,如果 vCenter 凭证存储在 secret 中,所以 kubelet 无法启动,因为 kube 客户端没有及时创建。因此,如果您重新引导节点,在编辑
cloud-provider-config
配置映射时会出现,节点没有启动。在这个版本中,如果凭证存储在 secret 中,kubelet 会在节点注册后获取区标签。因此,节点会如预期重启。(BZ#1902307) -
在以前的版本中,因为缺少
timeout
选项,可能会导致控制器阻塞的问题(vCenter 永远不会进行响应或响应非常慢。此发行版本为 vSphere 机器控制器中的 vCenter 客户端添加timeout
选项。(BZ#2083237)
Cluster Version Operator
-
在以前的版本中,当 Cluster Version Operator(CVO)在升级过程中遇到错误时,Cluster Version Operator(CVO)会停止协调当前发行清单。在这个版本中,版本加载与协调不同,后者不会阻断前,并添加了一个新的条件
ReleaseAccepted
来阐明发行负载的状态。(BZ#1822752)
控制台 Metal3 插件
-
在以前的版本中,UI 中有一个缺少的选项来设置
bootMode
策略。因此,UI 会始终使用默认的(UEFI)引导策略,这会导致引导某些类型的裸机部署出现问题。在这个版本中,Add Bare Metal 主机表单中会公开一个新字段,以选择适当的引导模式策略。因此,裸机会正确启动。(BZ#2091030) - 在以前的版本中,节点维护功能被移到新项目中,这会导致 API 更改。因此,节点维护停止工作。在这个版本中,代码被修复,以便与新的 API 正常工作。因此,节点维护可以再次正常工作。(BZ#2090621)
- 在以前的版本中,在某些情况下,由辅助安装程序创建的集群中的第 2 天 worker 缺少底层裸机主机和机器资源。因此,当尝试显示 worker 节点的详情时,UI 会失败。在这个版本中,裸机主机和机器资源更为安全处理,UI 会显示所有可用的详情。(BZ#2090993)
域名系统(DNS)
-
拓扑了解 OpenShift Container Platform 4.11 中的新功能,它允许
EndpointSlice
控制器指定容器网络接口(CNI)的提示,以便它如何将流量路由到服务的端点。DNS Operator 没有为集群 DNS 服务启用拓扑了解提示。因此,CNI 网络供应商不会将 DNS 流量保留在区或节点。在这个版本中,DNS operator 被更新为在集群 DNS 服务中指定拓扑感知提示。(BZ#2095941) -
在以前的版本中,kubelet 根据来自节点主机的
/etc/resolv.conf
,为 pod 创建默认的/etc/resolv.conf
。因此,错误的resolv.conf
文件可能会导致解析器无法解析resolv.conf
,因此破坏 pod 中的 DNS 解析。在这个版本中,kubelet 接受resolv.conf
文件,pod 获得有效的resolv.conf
文件。(BZ#2063414) -
在以前的版本中,DNS Operator 不会在 DNS pod 上设置
cluster-autoscaler.kubernetes.io/enable-ds-eviction
注解。因此,在删除节点前,集群自动扩展不会从节点中删除 DNS pod。在这个版本中,DNS 操作器被修改为将cluster-autoscaler.kubernetes.io/enable-ds-eviction
注解添加到 DNS pod。现在,在按照集群自动扩展删除节点前,DNS pod 可以从节点中删除。(BZ#2061244)
镜像 Registry
-
在以前的版本中,镜像 registry 只有在一个完全匹配时才会将
ImageContentSourcePolicy
(ICSP)用作源。对于任何子仓库,应该拉取相同的源文件。ICSP 名称和路径与子仓库不匹配。因此,不使用镜像。现在,ICSP 已被成功应用到子仓库,可以使用镜像的镜像。(BZ#2014240) - 在以前的版本中,如果修剪器失败,镜像 registry Operator 会报告 degraded,直到修剪器成功运行。在这个版本中,Operator 对修剪器失败更具弹性。(BZ#1990125)
-
在以前的版本中,当应用
ImageContentSourcePolicy
(ICSP)时,registry 会根据准确匹配。在这个版本中,ICSP 适用于子存储库和镜像现在可以正常工作。(BZ#2014240) - 在以前的版本中,Image Registry Operator 无法用于 RHOSP 上的 AWS S3。在这个版本中,Image Registry Operator 在所有平台上信任 AWS S3。(BZ#2007611)
- 在以前的版本中,OpenShift Container Platform 镜像 registry 无法用于 Ceph Radosgw。借助此次更新,镜像 registry 可与 Ceph Radosgw 一起工作。(BZ#1976782)
-
在以前的版本中,Image Registry Operator 会将来自上游 registry 的
429
错误消息解析为数据不可用。Operator 会返回404 Not Found
消息,而不是429 Too Many Requests
。在这个版本中,可以返回正确的429 Too Many Requests
消息,以便管理员可以重新尝试请求。(BZ#1923536) - 在以前的版本中,Image Registry Operator 无法用于配置 CloudFront。在这个版本中,Image Registry Operator 可以配置 CloudFront。(BZ#2065224)
- 在以前的版本中,当启用 KMS 加密时,Image Registry Operator 会拉取镜像,而不会推送镜像。在这个版本中,可以在启用了 KMS 加密的情况下推送和拉取镜像。(BZ#2048214)
- 在以前的版本中,因为未提供凭证,Image Registry Operator 无法匿名拉取公共镜像。在这个版本中,客户端可以匿名拉取公共镜像。(BZ#2060605)
-
在以前的版本中,Image Registry Operator 无法使用
ap-southeast-3
AWS 区域。在这个版本中,registry 可以配置为ap-southeast-3
。(BZ#2065552)
安装程序
- 在以前的版本中,如果用户使用句点指定 OpenShift Container Platform 集群名称,安装会失败。在这个版本中,为安装程序添加了一个验证检查,如果集群名称中存在句点,它会返回一个错误。(BZ#2084580)
-
在以前的版本中,在使用安装程序创建
install-config.yaml
文件时,用户可以选择 AWSus-gov-east-1
区域。这会导致部署失败,因为安装程序只能用于为公共 AWS 区域创建install-config.yaml
文件。在这个版本中,从公共 AWS 云不支持的安装程序中删除所有 AWS 区域。(BZ#2048222) -
在以前的版本中,在使用安装程序创建
install-config.yaml
文件时,用户无法选择ap-north-east-3
区域。导致此问题的 AWS SDK 已更新,用户现在可以选择ap-north-east-3
区域。(BZ#1996544) - 在以前的版本中,在 Azure Stack Hub 上安装私有(内部)OpenShift Container Platform 集群会失败,因为安装程序没有为 API 虚拟 IP 地址创建 DNS 记录。在这个版本中,删除了导致这个问题的无效检查。安装程序现在可以正确地为私有集群创建 DNS 记录。(BZ#2061549)
- 在以前的版本中,卸载 IBM Cloud VPC 集群可能会导致意外的结果。当用户卸载集群(集群 1)时,当集群 1 的名称 (example) 是集群 2 (myexample) 的一部分,或者两个集群共享一个基域时,另外一个集群(集群 2)的 DNS 记录会被删除。在这个版本中修正了此行为。现在,只有特定于正在卸载的集群的资源才会被删除。(BZ#2060617)
- 在以前的版本中,Azure Stack Hub 不支持 Standard_LRS 以外的任何磁盘类型。在这个版本中,增加了自定义磁盘类型的功能,它允许集群在没有手动自定义的情况下使用默认磁盘类型。这会导致使交换机从硬编码磁盘类型进行,以接受用户输入并根据 Stack Hub API 验证它。(BZ#2061544)
- 在以前的版本中,当销毁集群时,当从托管区中删除 DNS 记录时,集群的私有 route5 托管区的 ID 会错误地报告。这会导致在 destroyer 的日志中报告不正确的主机区 ID。在这个版本中,日志中使用正确的主机区 ID。因此,当销毁基域的托管区中的 DNS 记录时,日志会显示正确的托管区 ID。(BZ#1965969)
-
在以前的版本中,在请求 AWS 自定义服务端点时,系统代理设置不会被考虑。在这个版本中,配置了 AWS 自定义服务端点验证,以考虑系统代理设置,以及 AWS 自定义服务端点的
HEAD
请求。因此,AWS 自定义服务端点可以从用户的机器访问。(BZ#2048451) -
在以前的版本中,安装程序在安装程序主机的
$PATH
中使用任何 Terraform 供应商。因此,如果$PATH
中存在使用不正确的版本或供应商中的 Terraform 供应商,而不是安装程序中嵌入的供应商,则安装会失败。在这个版本中,安装程序会将供应商嵌入到已知目录中,并将 Terraform 设置为使用已知的目录。因此,安装会成功,因为安装程序总是使用已知目录中的供应商。(BZ#1932812) - 在以前的版本中,更新新的负载均衡器时,AWS Terraform 供应商中存在一个最终一致性问题。因此,当尝试访问新的负载均衡器时,安装会失败。在这个版本中,安装程序被更新为一个上游 Terraform 供应商,以确保最终一致性。因此,安装不会失败。(BZ#1898265)
-
在以前的版本中,安装程序包含检查配额和权限所需的 API 列表,如果用户没有提供权限,列表包含一些不必要的 API。在这个版本中,API 列表被分成
required
和optional
,optional
API 不能访问。为optional
API 显示一个警告信息。(BZ#2084280) -
在以前的版本中,
.apps
条目没有标签kubernetes.io_cluster<infraID>
,安装程序使用这个标签从数据库中删除代码,这会隔离为给定集群创建的所有资源,并删除它们。在这个版本中,在创建过程中添加了一个标签到集群 Ingress Operator 中,这样会使条目无法删除。(BZ#2055601) -
在以前的版本中,当使用内部发布策略时,
openshift-install
命令会失败。在这个版本中,openshift-install
命令不再失败。(BZ#2047670) - 在以前的版本中,当更新到新创建的虚拟私有云(VPC)时,AWS Terraform 供应商中存在一个最终一致性问题。因此,当尝试访问 VPC 时,安装程序会失败。在这个版本中,安装程序被更新到上游 Terraform 供应商,安装不会失败。(BZ#2043080)
- 在以前的版本中,当更新到新创建的网络接口时,AWS Terraform 供应商中存在一个最终一致性问题。因此,安装将无法访问网络接口。在这个版本中,Terraform 供应商被更新为接受最终一致性,且安装不会失败。(BZ#2047741)
-
在以前的版本中,当使用安装程序置备的基础架构安装 VMware 集群时,
corespersocket
值可能大于numCores
值。这可能会在安装过程中造成意外的结果。在这个版本中,用户在创建集群前收到更正这些值的警告信息。(BZ#2034147) - 在以前的版本中,在 AWS 集群安装过程中造成不一致的错误。安装程序已更新,以避免这种情况。(BZ#2046277)
- 在以前的版本中,支持的用户定义的标签数量是 8,保留的 OpenShift Container Platform 标签是 2 个用于 AWS 资源。在这个版本中,支持的用户定义标签的数量是 25,对于 AWS 资源,保留的 OpenShift Container Platform 标签为 25。现在,您可以在安装过程中最多添加 25 个用户标签。(CFE#592)
- 在以前的版本中,当使用安装程序置备的基础架构在 Azure 上安装时,bootstrap 机器使用默认大小和实例类型。在这个版本中,bootstrap 机器使用 control plane 机器的大小和实例类型。现在,您可以通过修改安装配置中的 control plane 设置来控制 bootstrap 机器的大小和实例类型。(BZ#2026356)
- 在以前的版本中,安装程序提供带有模糊的网络名称的 Terraform。这可能会导致 Terraform 无法确定要使用的正确网络。在这个版本中,安装程序会提供唯一网络 ID 的 Terraform,以便安装成功。(BZ#1918005)
- 在以前的版本中,在 AWS 上安装集群时可创建 control plane 机器,从而导致安装失败。在这个版本中,Terraform 可确保在创建 control plane 机器前创建 NAT 网关。这样可确保安装成功。(BZ#2049108)
- 在以前的版本中,如果您使用 OVN 网络而不是默认的 OSN 网络,则扩展任务会失败,因为它需要的时间更长。在这个版本中,扩展任务期间的重试数量加倍,以便可以完成任务。(BZ#2090151)
-
在以前的版本中,当尝试同时从数据库中删除多个集群时,删除过程会失败,因为
vmware
和govmomi
库中存在错误。错误会导致集群的标签被删除,当删除过程无法找到标签时会导致 404 错误。在这个版本中,忽略了未找到的标签,并继续删除过程,以便其完成且无错误。(BZ#2021041) - 在这个版本中,Red Hat Virtualization(RHV)上的 OpenShift Container Platform 支持用于安装程序置备的基础架构的 control plane 和 worker 节点的预分配磁盘。在高负载环境中,预分配的磁盘可受益于 etcd 和其他组件的性能。(BZ#2035334)
-
在以前的版本中,当尝试并行删除多个集群时,因为
vmware/govmomi
库中存在错误,进程会失败。错误会导致删除集群标签,当删除过程无法找到标签时会导致404
错误。在这个版本中,忽略未找到的标签,并继续删除,以便它完成且没有错误。(BZ#2021041) - 在以前的版本中,VMware vSphere 的安装方法包括检查在创建配置文件过程中检查是否有网络的验证。这会导致用户置备的基础架构和其它安装方法创建网络作为置备基础架构的一部分,在这种情况下,当生成配置文件时,网络可能不存在。在这个版本中,安装程序只在安装程序置备的基础架构安装中执行网络验证。因此,用户置备的基础架构和其他安装方法都可以生成配置文件,而不考虑网络存在。(BZ#2050767)
-
在以前的版本中,
runc
依赖于libseccomp
2.5 或更高版本,这会导致操作系统使用 8.3 或更高版本安装并不会完全更新至 8.4 或更高版本。在这个版本中,RHEL 主机成功安装,避免了软件包的早期版本的问题。(BZ#2060147) - 在以前的版本中,安装程序会指定网络资源来按相对路径进行 terraform。当网络资源嵌套在文件夹中时,terraform 供应商无法找到该资源。在这个版本中,网络资源由 ID 指定,安装可以成功。(BZ#2063829)
-
在以前的版本中,vSphere RHCOS 镜像没有
/etc/resolv.conf
文件。这会导致默认的networkmanager
设置显示/etc/resolv.conf
的错误。在这个版本中,会设置rc-manager=unmanaged
值,networkmanager
设置不会定向到/etc/resolv.conf
。(BZ#2029438) - 在以前的版本中,安装程序不会创建云供应商配置,因为 Amazon Web Services(AWS)不需要它。这会导致 Kubernetes API 服务器提供在没有云供应商配置的情况下的错误。在这个版本中,为 AWS 创建一个空的云供应商配置,Kubernetes API 服务器可以成功运行。(BZ#1926975)
Kubernetes API 服务器
-
在以前的版本中,
KubeAPIErrorBudgetBurn
计算的长期运行请求被考虑。因此,KubeAPIErrorBudgetBurn
中的警报会被触发,并导致误报。在这个版本中,从KubeAPIErrorBudgetBurn
计算中排除了长时间运行的请求。因此,在KubeAPIErrorBudgetBurn
指标上会减少假的正。(BZ#1982704)
Kubernetes 调度程序
- 在 OpenShift Container Platform 4.11 中,当启用了托管 control planes 的集群中安装 descheduler 时,托管 control plane 命名空间不会被驱除。因此,当安装 descheduler 时,pod 不再从托管的 control plane 命名空间中驱除。(BZ#2000653)
-
在以前的版本中,资源错误地在
kubedescheduler
自定义资源(CR)的所有者引用中指定 API 版本。因此,所有者引用无效,在kubedescheduler
CR 运行时不会删除受影响的资源。在这个版本中,指定所有所有者引用中的正确的 API 版本。因此,在删除 CR 后会删除对kubedescheduler
CR 的所有者引用的所有资源。(BZ#1957012)
Machine Config Operator
-
因为
keyFile
没有配置为 RHEL 节点上的 NetworkManager 的默认插件,所以 RHEL 节点重启后可能无法进入就绪状态。在这个版本中,keyFile
设置为所有集群节点上的默认 NetworkManager 插件。因此,节点重启后可以正确地进入ready
状态。(BZ#2060133) -
因为 vSphere UPI 集群在安装时没有设置
PlatformStatus.VSphere
参数,所以该参数被设置为nil
。这会导致 MCO 日志被填充,带有不必要的重复性信息,这些参数无法具有值nil
。在这个版本中删除了这个警告信息,它被添加来解决这个问题。因此,日志不再列出 vSphere UPI 安装此消息。(BZ#2080267) -
在以前的版本中,当您试图使用 FIPS 和
realTimeKernel
创建集群时,Machine Config Operator (MCO) 会因为代码中的合并逻辑问题而降级。在这个版本中,当创建带有 FIPS 和realTimeKernel
的集群时,MCO 不再降级。(BZ#2096496)
Compliance Operator
-
在以前的版本中,Compliance Operator 会引用机器配置数据,这显著提高了内存用量。因此,因为内存不足例外,Compliance Operator 会失败并显示
CrashLoopBackoffs
。作为临时解决方案,您应该使用 Compliance Operator 的更新版本,例如:0.1.53,它可更好地处理内存中的大型机器配置数据集。因此,Compliance Operator 在处理大型机器配置数据集时会继续运行。(BZ#2094854)
管理控制台
-
在以前的版本中,在批准
InstallPlans
时,web 控制台没有正确验证权限。这会导致一个可能的未处理的错误。在这个版本中,在 web 控制台中正确显示权限以一致性,错误消息会被正确显示。(BZ#2006067)
监控
-
在此次更新之前,OpenShift Container Platform web 控制台中的仪表板包括了使用
container_fs*
指标的查询没有返回数据点的查询,因为容器标签因为高卡而丢弃了容器标签。在这个版本中解决了这个问题,这些仪表板现在会按预期显示数据。(BZ#2037513) -
在此次更新之前,
prometheus-operator
组件允许配置映射中ScrapeTimeout
的任何时间值。如果将ScrapeTimeout
设置为大于ScrapeInterval
的值,Prometheus 将停止加载配置映射设置,且无法应用所有后续配置更改。在这个版本中,如果指定的ScrapeTimeout
值大于ScrapeInterval
值,则系统将设置无效,但继续载入其他配置映射设置。(BZ#2037762) - 在此次更新之前,在 OpenShift Container Platform Web 控制台中的 Kubernetes / Compute Resources / Cluster 仪表板的 CPU U tilis 面板中,用于计算节点的 CPU 使用率的公式可能会错误地显示无效的负值。在这个版本中,公式已被更新,CPU Utilisation 面板现在显示正确的值。(BZ#2040635)
-
在此次更新之前,在自动更新期间,无法访问
prometheus-adapter
组件的数据,每 15 天发生,因为更新过程在新 Pod 可用前删除了旧的 pod。在这个版本中,自动更新过程仅在新 pod 能够服务请求后删除旧的 pod,以便在更新过程中继续提供旧 pod 的数据。(BZ#2048333) -
在此次更新之前,
kube-state-metrics
错误地缺少以下指标:kube_pod_container_status_terminated_reason
、kube_pod_init_container_status_terminated_reason
、kube_pod_status_scheduled_time
。在这个版本中,kube-state-metrics
可以正确地显示这些指标,以便它们可用。(BZ#2050120) -
在此次更新之前,如果
prometheus-operator
组件存在无效的 write relabel 配置映射设置,则配置仍会加载所有后续设置。在这个版本中,组件会在载入配置时检查有效的写入重新标记设置。如果无效设置,则会记录错误,配置加载过程将停止。(BZ#2051470) -
在此次更新之前,Prometheus pod 的
init-config-reloader
容器请求100m
CPU 和50Mi
内存,即使实践了容器需要较少的资源。在这个版本中,容器请求1m
CPU 和10Mi
内存。这些设置与config-reloader
容器的设置一致。(BZ#2057025) -
在此次更新之前,当管理员启用了用户工作负载监控时,
user-workload-monitoring-config
配置映射不会被自动创建。因为具有user-workload-monitoring-config-edit
角色的非管理员用户没有手动创建配置映射的权限,所以他们需要管理员创建该配置映射。在这个版本中,当管理员启用用户工作负载监控并可供具有适当角色的用户编辑时,user-workload-monitoring-config
配置映射会自动创建。(BZ#2065577) - 在此次更新之前,在删除部署后,Cluster Monitoring Operator(CMO)不会等待删除完成,从而导致协调错误。在这个版本中,CMO 会在重新创建前等待部署被删除,从而解决这个问题。(BZ#2069068)
- 在此次更新之前,对于用户工作负载监控,如果您在 Prometheus 中为指标配置了外部标签,则 CMO 不会正确将这些标签传播到 Thanos Ruler。如果您查询了用户定义的项目的外部指标,则不会由 Prometheus 的用户工作负载监控实例提供,有时也会看到这些指标的外部标签,即使您已配置了 Prometheus 来添加它们。在这个版本中,CMO 会正确地传播您在 Prometheus 中配置的外部标签到 Thanos Ruler,您可以在查询外部指标时看到标签。因此,对于用户定义的项目,如果您查询不是由 Prometheus 的用户工作负载监控实例提供的外部指标,有时即使您配置了 Prometheus 来添加这些指标,您有时不会看到这些指标的外部标签。在这个版本中,CMO 会正确地传播您在 Prometheus 中配置的外部标签到 Thanos Ruler,您可以在查询外部指标时看到标签。(BZ#2073112)
-
在此次更新之前,
tunbr
接口会错误地触发NodeNetworkInterfaceFlapping
警报。在这个版本中,tunbr
接口被包含在警报忽略的接口列表中,不再导致警报触发错误。(BZ#2090838) - 在以前的版本中,Prometheus Operator 允许无效的重新标签(re-label)配置。在这个版本中,Prometheus Operator 会验证 re-label 的配置。(BZ#2051407)
网络
- 在以前的版本中,当将 bond CNI 插件用于额外网络附加时,它与 Multus 不兼容。当绑定 CNI 插件与 Whereabouts IPAM 插件一同使用时,网络附加定义的 IP 地址被错误协调。现在,使用 bond CNI 插件的网络附加定义与 Whereabouts IPAM 插件进行 IP 地址分配正常工作。(BZ#2082360)
- 在以前的版本中,当将 OVN-Kubernetes 集群网络供应商使用多个默认网关时,选择了错误的网关,从而导致 OVN-Kubernetes pod 意外停止。现在选择了正确的默认网关,以便这些 pod 不再失败。(BZ#2040933)
- 对于使用 OVN-Kubernetes 集群网络供应商的集群,之前,如果 NetworkManager 服务在节点上重启,该节点会丢失网络连接。现在,重启 NetworkManager 服务时会保留网络连接。(BZ#2048352)
-
在以前的版本中,在保留
mutex
的同时,goroutine
处理缓存更新可能会停止写入未缓冲的频道。在这个版本中,解决了这些竞争条件。(BZ#2052398) -
在以前的版本中,对于 ovn-kubernetes,在启动时使用绑定或组接口设置
br-ex
会导致br-ex
和绑定接口间的介质访问控制(MAC)地址不匹配。因此,由于意外的br-ex
MAC 地址,裸机或某些虚拟平台都会因为网络接口控制器(NIC)驱动程序丢弃流量而丢失所有流量。在这个版本中,br-ex
和绑定接口使用相同的 MAC 地址,从而导致没有丢弃的流量。(BZ#2103080) -
在以前的版本中,具有
cluster-reader
角色的用户无法从 kubernetes-nmstate 读取自定义资源,如NodeNetworkConfigurationPolicy
。在这个版本中,具有cluster-reader
角色的用户可以读取 kubernetes-nmstate 自定义资源。(BZ#2022745) -
在以前的版本中,当删除服务端点时,当因为端点失败而被删除时,
LoadBalancer
IP 的 contrack 条目不会被删除。在这个版本中,Contrack 条目不会导致连接失败。(BZ#2061002) -
在以前的版本中,因为缺少
jq 软件包
会导致在节点部署中扩展带有 RHEL 节点的集群会失败。在这个版本中,在部署时安装了jq 软件包
,扩展带有 RHEL 节点的集群会成功。(BZ#2052393) - 在以前的版本中,当发生服务配置更改时,OVN-Kubernetes 会花费过量时间。这会导致服务配置更改出现显著延迟。在这个版本中,OVN-Kubernetes 被优化,以减少服务配置更改的延迟。(BZ#2070674)
- 在以前的版本中,因为 API 连接问题导致 Whereabouts IPAM CNI 的 IP 协调 CronJob 会失败,这会导致 CronJob 间歇性失败。在这个版本中,在 Whereabouts IPAM CNI 上启动 CronJob 使用 api-internal 服务器地址和一个扩展的 api 超时来防止连接问题。(BZ#2048575)
-
在这个版本中,安装了 Kubernetes-NMstate 的 OpenShift Container Platform 集群现在包括在
must-gather
的 Kubernetes-NMstate 资源中。这通过在must-gathers
中包含 Kubernetes-NMstate 中的资源来提高问题处理。(BZ#2062355) -
目前,在使用集群流量策略配置负载均衡器时,主机路由存在一个已知问题。因此,负载均衡器服务的出口流量会使用默认网关,而不是主机路由表中存在的最佳匹配路由。作为临时解决方案,将负载均衡器类型服务设置为
Local
流量策略。(BZ#2060159) -
在以前的版本中,
PodDisruptionBudget
规格不适用于单节点 OpenShift 集群,因为所有 pod 无法被驱除,这限制了升级功能。在这个版本中,PodDisruptionBudget
规格会根据可以在单节点 OpenShift 集群上升级的集群拓扑调整。(BZ#2075491) -
在以前的版本中,在引导时设置
br-ex
网桥时,DHCP 客户端 ID 和 IPv6 地址生成模式配置无法正常工作,导致在br-ex
中有预期外的 IP 地址。在这个版本中,在br-ex
上正确设置了 DHCP 客户端 id 和 IPv6 生成模式配置。(BZ#2058030) -
在以前的版本中,
egress-router-cni
pod 缺少一些集群内部路由,因为依赖 CNI 定义的gateway
字段来删除默认路由并注入自己的路由。在这个版本中,egress-router-cni
pod 会注入正确的路由信息,以便 pod 可以访问外部和内部集群目的地。(BZ#2075475) -
在以前的版本中,pod 中断预算用于在单节点 OpenShift 上创建 OVN raft 仲裁。这会引发在单节点 OpenShift 集群中引发一个无格式的
PodDisruptionBudgetAtLimit
警报。在这个版本中,PodDisruptionBudgetAtLimit
警报不再在这些集群中出现。(BZ#2037721) -
在以前的版本中,
NetworkManager
重启中的一个竞争条件有时会阻止 DHCP 解析在节点引导时成功设置br-ex
网桥。在这个版本中,设置br-ex
时NetworkManager
不再重启,从而消除了竞争条件。(BZ#2055433) -
在以前的版本中,
PtpConfigSlave
源自定义资源(CR)被设置为不受支持的网络传输 UDPv4,从而导致分布式单元(DU)节点出现错误。在这个版本中更新了PtpConfigSlave
源 CR,以使用网络传输 L2 而不是 UDPv4。因此,在 DU 节点上不再发现错误。(BZ#2060492) - 在以前的版本中,当更新网络策略时,所有 OpenShift Container Platform 策略日志记录配置都会更新。这会导致在一些并发或之后的网络策略中出现显著的延迟。在这个版本中,添加新策略时不再更新所有网络策略,从而消除了延迟。(BZ#2089392)
网络性能改进
-
在以前的版本中,
systemd
服务根据性能配置集中保留的 CPU 列表,为 udev 排除虚拟设备查看的所有网络设备,设置一个默认的 Recieve Packet Steering(RPS)掩码。crio
hook 脚本设置/sys/devices
中所有网络设备的 RPS 掩码,用于保证 pod。这会导致对网络性能进行多次影响。在这个版本中,systemd
服务只为/sys/devices/virtual
下的虚拟接口设置默认 RPS 掩码。crio
hook 脚本现在也会排除物理设备。此配置可减少进程过载、长度轮询间隔和延迟高峰等问题。(BZ#2081852)
节点
- 在以前的版本中,pod Manager 处理 pod secret 和配置映射的注册和取消注册。因此,pod secret 有时可能无法挂载到 pod 中。在这个版本中,kubelet 用来管理注册的 pod 的密钥中包含 pod ID。因此,secret 会如预期正确挂载。(BZ#1999325)
- 由于垃圾回收过程中存在一个内存泄漏问题,pod 可能会因为内存不足而无法在节点上启动。在这个版本中,在垃圾回收过程中不会在节点中出现内存泄漏问题,节点会如预期启动。(BZ#2065749)
- 由于上游 Kubernetes 的变化,kubelet 没有在被终止的 pod 上运行就绪度探测。因此,负载均衡器或控制器可能会更快地对终止 pod 做出反应,这可能会造成错误。在这个版本中,就绪度探测再次在 pod 终止上执行。(BZ#2089933)
-
由于一个程序漏洞,kubelet 可能会错误地拒绝具有
OutOfCpu
错误的 pod,如果 API 中报告其他 pod 后快速调度 pod。在这个版本中,kubelet 会等待将 pod 的阶段报告为 API 中的终端,直到所有运行中的容器都停止并且没有启动新容器。短期存在的 pod 可能需要更长的时间,大约 1s 才能在此更改后报告成功或失败。(BZ#2022507) -
因为最新版本的
prometheus-adapter
会发送额外的 pod 指标,所以 Vertical Pod Autoscaler(VPA)推荐程序会产生大量不必要的重复的信息。在这个版本中,VPA 会识别并忽略额外的指标。因此,不会再生成这些消息。(BZ#2102947)
OpenShift CLI (oc)
-
在以前的版本中,如果一个旧的、弃用的镜像版本用作源,则
oc
catalog mirror 会失败。现在,镜像清单版本会被自动探测,mirror 可以成功正常工作。(BZ#2049133) -
在以前的版本中,当出现回退检查时,很难理解日志中的信息。现在,日志已被改进,以便更明确。因此,
must-gather run
的输出更为明确。(BZ#2035717) -
在以前的版本中,如果您使用无效的参数运行
must-gather
,它不会统一报告错误,而在无法实现时可能会尝试收集数据。现在,如果使用无效选项调用must-gather
,它会提供有用的错误输出。(BZ#1999891) -
在以前的版本中,如果
oc adm catalog mirror
命令出错,它仍然继续并返回0
退出代码。现在,可以使用--continue-on-error
标志来确定命令是否应该继续是否存在错误,或使用非零退出代码退出。(BZ#2088483) -
在这个版本中,在
oc adm policy who-can
命令中添加了--subresource
标志,以检查谁可以对子资源执行指定操作。(BZ#1905850) -
在以前的版本中,用户无法对
oc project
命令使用 tab 自动完成功能。现在,在oc project
正确列出项目后按 tab 键。(BZ#2080416) -
在以前的版本中,启动探测不会从 debug pod 中删除,如果启动探测失败,可能会导致 debug pod 出现问题。添加了
--keep-startup
标志,默认为false
,即从 debug pod 中删除启动探测。(BZ#2056122) -
在以前的版本中,调用
oc debug node
后没有指定超时,因此用户从不会注销集群。添加了TMOUT
环境变量,以便在不活跃的时间超过设置的值后,话会自动终止。(BZ#2043314) -
在这个版本中,
oc login
会显示 web 控制台的 URL,即使用户已注销。(BZ#1957668) -
在以前的版本中,当容器找不到时,
oc rsync
命令会显示一个错误输出。在这个版本中,oc rsync
命令在特定容器没有运行时会显示正确的错误消息。(BZ#2057633) - 在以前的版本中,如果大型镜像对于集群是新的,则无法修剪它们。这会导致在过滤大的镜像时会省略最新的镜像。在这个版本中,您可以修剪超过给定大小的镜像。(BZ#2083999)
-
在以前的版本中,
gather
脚本中有一个拼写错误。因此,无法正确收集 insights 数据。在这个版本中,拼写错误已被修正,Insights 数据现在可以通过must-gather
正确收集。(BZ#2106543) -
在以前的版本中,您无法通过
oc
CLI 应用集群中的EgressNetworkPolicy
资源类型。在这个版本中,您可以创建、更新和删除EgressNetworkPolicy
资源。(BZ#2071614)
Kubernetes Controller Manager
-
在以前的版本中,默认启用用于使用 pod 终结器跟踪作业的 beta 功能。在某些情况下,pod 并不总是被删除,因为在它们上的终结器没有被删除。在这个版本中,功能门
JobTrackingWithizers
会被默认禁用。因此,删除过程不会遗留任何 pod。(BZ#2075621) -
在以前的版本中,当 CR 副本数为零时就会发生
PodDisruptionBudgetAtLimit
警报。在这个版本中,如果没有应用程序中断或副本数为零,警报将不再触发。(BZ#2053622)
Operator Lifecycle Manager (OLM)
- 在此次更新之前,当资源名称超过 63 个字符时,会创建无效的订阅标签。修剪超过 63 个字符限制的标签会解决这个问题,订阅资源不再拒绝 Kubernetes API。(BZ#2016425)
-
在此次更新之前,Marketplace Operator 的目录源 pod 会阻止节点排空。因此,Cluster Autoscaler 无法有效地缩减。在这个版本中,将
cluster-autoscaler.kubernetes.io/safe-to-evict
注解添加到目录源 pod 会修复这个问题,Cluster Autoscaler 可以有效地缩减。(BZ#2053343) -
在此次更新之前,在某些情况下,
collect-profiles
作业可能需要很长时间才能完成,比如当 pod 无法调度时。因此,如果已调度了足够的作业但无法运行,调度的作业数量会超过 pod 的配额限制。在这个版本中,每次只有一个collect-profiles
pod,而collect-profiles
作业不会超过 pod 配额限制。(BZ#2055861) -
在此次更新之前,在定义其领导选举期、续订期限和重试期限时,软件包服务器不知道 pod 拓扑。因此,对于只有有限资源的环境(如单节点环境),软件包服务器可能会出现资源紧张的情况。这个版本引入了一个
leaderElection
软件包,它设定合理的租期持续时间、续订期限和重试周期。这可以减少了对具有有限资源的集群出现资源紧张的问题。(BZ#2048563) -
在以前的版本中,
openshift-marketplace
命名空间中有一个错误的目录源。因此,所有订阅都被阻断。在这个版本中,如果openshift-marketplace
命名空间中有一个错误的目录源,用户可以从自己的命名空间的质量目录源中订阅 operator。因此,如果本地命名空间中存在错误的目录源,用户无法订阅命名空间中的任何 Operator。(BZ#2076323) -
在以前的版本中,在
operator-marketplace
项目轮询过程中会生成 info 级别的日志,这会导致日志垃圾邮件。在这个版本中,使用命令行标志将日志行减少到 debug 级别,并为用户添加更多日志级别。因此,这减少了日志垃圾邮件。(BZ#2057558) -
在以前的版本中,由 Cluster Version Operator(CVO)管理的每个组件都包含在项目存储库根目录下的
/manifest
目录中定义的 YAML 文件。从/manifest
目录中删除 YAML 文件时,您需要添加release.openshift.io/delete: "true"
注解,否则 CVO 不会从集群中删除资源。在这个版本中,重新引入从/manifest
目录中删除的所有资源,并添加release.openshift.io/delete: "true"
注解,以便 CVO 清理资源。因此,从集群中移除 OLM 组件不再需要的资源。(BZ#1975543) -
在以前的版本中,gRPC 目录源使用的
CheckRegistryServer
功能没有确认与目录源关联的服务帐户是否存在。这会导致没有服务帐户的不健康目录源存在。在这个版本中,gRPCCheckRegistryServer
函数检查服务帐户是否存在,并在找不到该服务时重新创建该服务。因此,OLM 会在 gRPC 目录源拥有时重新创建服务帐户(如果它们不存在)。(BZ#2074612) -
在以前的版本中,当用户针对基于文件的目录镜像运行
opm index prune
时发生错误信息中,并没有明确指明此命令不支持该目录格式。在这个版本中,相关的错误信息更加明确,用户可以知道命令opm index prune
只支持基于 SQLite 的镜像。(BZ#2039135) - 在以前的版本中,Operator API 有一个有问题的线程安全。因此,Operator 资源不能正确删除。在这个版本中,Operator 资源可以被正确删除。(BZ#2015023)
- 在以前的版本中,pod 失败是通常扩展证书的有效性周期,从而导致它们错误地轮转。在这个版本中,证书有效期被正确决定,证书会正确轮转。(BZ#2020484)
-
在 OpenShift Container Platform 4.11 中,所有命名空间的默认集群范围的 Pod 安全策略被设置为
baseline
,默认的警告级别设置为restricted
。在此次更新之前,Operator Lifecycle Manager 在operator-marketplace
命名空间中显示 Pod 安全准入警告。在这个版本中,将警告级别降到baseline
可解决这个问题。(BZ#2088541)
Operator SDK
- 在此次更新之前,Operator SDK 使用上游镜像而不是下游支持的镜像来构建基于 Helm 的 Operator。在这个版本中,Operator SDK 使用受支持的下游镜像来构建基于 Helm 的 Operator。(BZ#2039135)
-
在 OpenShift Container Platform 4.11 中,Operator SDK 允许构建
arm64
Operator 镜像。因此,Operator SDK 现在支持构建以arm64
为目标的 Operator 镜像。(BZ#2035899) - 在以前的版本中,运行与 Operator SDK 构建的混合 Helm Operator 的 {product-tile} 会使用上游镜像,而不是支持下游镜像。在这个版本中,构建混合 Helm Operator 使用下游镜像。(BZ#2066615)
OpenShift API 服务器
- 因为多个身份验证 Operator 控制器同时同步,所以 Authentication Operator 需要很长时间才能响应其配置的更改。此功能在常规同步周期中添加了 jitter,以便 Authentication Operator 控制器不会争用资源。现在,Authentication Operator 需要较少的时间来响应配置更改。(BZ#1958198)
- 使用 OpenShift Container Platform 4.11 时,来自外部身份提供程序的身份验证会尝试登录到审计日志。因此,您可以在审计日志中查看成功、失败和登录尝试。(BZ#2086465)
Red Hat Enterprise Linux CoreOS (RHCOS)
-
在此次更新之前,如果机器是通过 PXE 引导并且
BOOTIF
参数在内核命令行上,则计算机只会在单一接口上启用 DHCP。在这个版本中,机器在所有接口上启用 DHCP 进行引导,即使提供了BOOTIF
参数。(BZ#2032717) - 在以前的版本中,从 VMware OVA 镜像置备的节点不会在初始置备后删除 Ignition 配置。因此,当 secret 存储在 Ignition 配置中时,这会产生安全问题。在这个版本中,Ignition 配置会在新节点上初始置备后从 VMware hypervisor 中删除,当从现有节点上的以前的 OpenShift Container Platform 版本升级时,Ignition 配置会从 VMware hypervisor 中删除。(BZ#2082274)
-
在以前的版本中,当首次调用命令时,为
toolbox
命令提供的任何参数都会被忽略。在这个版本中更新了 toolbox 脚本,以启动podman container create
命令,后跟podman start
和podman exec
命令。它还修改脚本,以处理作为数组的多个参数和空格。因此,传递给toolbox
命令的参数会如预期执行。(BZ#2039589)
Performance Addon Operator
-
在以前的版本中,CNF cyclictest 运行程序应提供
--mainaffinity
参数,它会告知二进制应在哪个线程上运行,但 cyclictest 运行程序缺少--mainaffinity
参数。在这个版本中,在 cyclictest 运行程序中添加了--mainaffinity
参数,以便它被正确传递给cyclitest
命令。(BZ#2051540) -
在以前的版本中,
oslat
容器规格缺少cpu-quota.crio.io: "disable"
注解,这会导致延迟很高。因此,在创建 pod 的定义中缺少cpu-quay.crio.io:"disable"
注解。在这个版本中,cpu-quota.crio.io:"disable"
注解会在创建 pod 时附加,因此会在oslat
pod 的specification
字段中出现。(BZ#2061676)
路由
- 在以前的版本中,Ingress Operator 不会验证 OpenShift Ingress 命名空间中的 Kubernetes 服务对象是否由 Ingress Controller 创建,或者由 Ingress Controller 创建,而是试图与它进行协调。因此,无论所有权如何,Ingress Operator 会修改或删除具有相同名称和命名空间的 Kubernetes 服务,而不会导致意外行为。在这个版本中,Ingress Operator 可以在尝试修改或删除服务前检查现有 Kubernetes 服务的所有权。如果所有权不匹配,Ingress Operator 会显示一个错误,且不会执行任何操作。因此,Ingress Operator 无法修改或删除它要修改或删除的 OpenShift Ingress 命名空间的名称。(BZ#2054200)
- 在以前的版本中,OpenShift Container Platform 4.8 添加了一个 API 来自定义平台路由。此 API 包括集群入口配置中的 status 和 spec 字段,用于分别报告自定义路由的当前主机名以及这些路由的用户所需的主机名。API 也定义了这些值的限制。这些限制是会限制并排除一些有效的潜在主机名。因此,API 的限制验证会阻止用户指定应该允许的自定义主机名,并阻止用户使用应该允许的域安装集群。在这个版本中,主机名的限制会被放宽,以允许所有对路由有效的主机名,而 OpenShift Container Platform 允许用户使用带有十进制数字的 TLDs 的集群域。(BZ#2039256)
-
在以前的版本中,Ingress Operator 不会检查配置了集群
spec.domain
参数的 Ingress Controller 与spec.baseDomain
参数匹配。这会导致 Operator 创建 DNS 记录并将DNSManaged
条件设置为false
。在这个版本中,Ingress Operator 会检查spec.domain
参数是否与集群spec.baseDomain
匹配。因此,对于自定义 Ingress Controller,Ingress Operator 不会创建 DNS 记录,并将DNSManaged
条件设置为 false。(BZ#2041616) -
在以前的版本中,在 OpenShift Container Platform 4.10 中,HAProxy must-gather 功能最多可能需要一小时才能运行。当处于终止状态的路由器延迟
oc cp
命令时会出现这种情况。延迟持续到 pod 终止为止。在新发行版本中,oc op
命令的 10 分钟限制会阻止更长的延迟。(BZ#2104701) - 在以前的版本中,当 Ingress Controller 被删除时,Ingress Operator 不会清除路由状态,显示该路由在删除后仍然处于 Operator 中。在这个版本中,当 Ingress Controller 被删除时清除路由状态,这会导致删除 Ingress Controller 后清除路由。(BZ#1944851)
-
在以前的版本中,因为 API 中存在一个不正确的信息,
oc explain router.status.ingress.conditions
命令的输出会将路由状态显示为Currently only Ready
而不是Admitted
。在这个版本中修正了 API 中的信息。现在,命令会输出正确的信息。(BZ#2041133) -
在以前的版本中,Ingress Operator 会检测到用户修改 Operator 在
LoadBalancer-type
服务上管理的注解。因此,Operator 会将 Ingress Cluster Operator 的Upgradeable
状态条件设置为False
以阻止升级,Ingress Operator 会错误地将Upgradeable
状态条件设置为False
,如果服务没有注解,则会阻止升级。现在,检查服务注解的逻辑可以正确地处理空注解,Ingress Operator 不再错误地阻止升级。(BZ#2097555) -
在以前的版本中,Ingress Operator 删除了 Operator 从以前的 OpenShift Container Platform 版本添加到
LoadBalancer-type
服务中的终结器。在这个版本中,Ingress Operator 不再删除终结器。(BZ#2069457) -
Ingress Operator 对 ingress Canary 路由执行健康检查。在此次更新之前,在连接中启用
keepalive
守护进程,这会导致 Ingress Operator 在健康检查完成后不会关闭到负载均衡器(LB)的 TCP 连接。为下一个健康检查创建新的连接,而不使用现有连接。因此,在负载均衡器上构建的连接,并在负载均衡器上创建太多连接。在这个版本中,在连接到 Canary 路由时,keepalive
守护进程会被禁用,并在每次运行 Canary 探测时都进行新的连接。(BZ#2037447) -
在以前的版本中,Ingress Controller 在路由器部署中没有将
allowPrivilegeEscalation
值设置为 false,这会导致路由器 Pod 被选择到不正确的安全上下文约束(SCC)中,并创建与自定义 SCC 冲突。在这个版本中,将allowPrivilegeEscalation
值设置为true
,确保路由器 Pod 被选为正确的 SCC,并避免与自定义 SCC 冲突。(BZ#2007246) -
在以前的版本中,当 Canary 路由没有被接受到 Ingress Controller 时,Ingress Operator 状态条件没有显示为
degraded
。因此,当其状态条件显示为not admitted
时,canary 路由可能会显示为valid
。在这个版本中,Ingress Operator 状态可以更准确地反映 canary 控制器的状态。(BZ#2021446) -
在以前的版本中,
openshift-router
进程会简单忽略SIGTERM
关闭信号。这会导致容器忽略 Kubernetes 关闭请求,从而导致一小时的关机时间。在这个版本中,路由器会响应SIGTERM
信号。(BZ#2076297) -
在以前的版本中,当删除接受路由的 Ingress Controller 被删除或添加分片配置时,会给出一个失败的
admitted
状态。在这个版本中,Ingress Controller 会清除unadmitted
路由的状态,避免了失败状态的情况。(BZ#1944851) -
在以前的版本中,使用版本 4.7 或更早版本安装的 OpenShift Container Platform 集群会维护一个
service.beta.kubernetes.io/aws-load-balancer-internal
注解值0.0.0.0/0
。使用 4.8 或更高版本安装的集群具有注解值true
。对于检查注解值true
的 AWS 云供应商实现,如果其值为0.0.0.0/0
,则会返回错误的结果。因此,将集群升级到 4.10 将无法完成。在这个版本中,注解值被规范化为true
,以便集群升级可以完成。(BZ#2055470)
可伸缩性和性能
- 在此次更新之前,SRO 默认安装了 Node Feature Discovery(NFD),无论是否安装了 NFD。如果安装了 NFD,这会导致 SRO 部署失败。SRO 不再默认部署 NFD。
Storage
- 在以前的版本中,当用户创建小于 20 GiB 的持久性卷声明(PVC)时,OpenShift Container Platform 附带的 Alibaba Container Storage Interface(CS)驱动程序会返回错误。这是因为 Alibaba Cloud 只支持大于 20 GiB 的卷。在这个版本中,Alibaba CSI 驱动程序会自动将所有卷大小增加到至少 20 GiB,较小的 PVC 现在会被动态置备。这会提高成本。管理员可以对受限环境中的每个命名空间的 PVC 数量使用配额来限制成本。(BZ#2057495)
-
在以前的版本中,Local Storage Operator(LSO)会添加对它创建的持久性卷(PV)的所有者引用,这样删除节点也会为 PV 发出删除请求。这可能会导致 PV 在仍附加到 pod 时处于
Terminating
状态。LSO 不再创建这个 OwnerReference,这意味着集群管理员必须在从集群中删除节点后删除任何未使用的 PV。(BZ#2061447)如需更多信息,请参阅使用本地卷的持久性存储。 - 在这个版本中,确保 GCP CSI Driver 被 GCP CSI Driver 正确置备只读卷。(BZ#1968253)
- OpenShift Container Platform 允许安装由上游社区或 VMware 提供的 vSphere CSI 驱动程序。虽然红帽不支持这个驱动程序,但集群管理员仍然可以安装和使用,因为它的功能比红帽提供的 vSphere CSI 驱动程序更多。OpenShift Container Platform 可以使用上游和 VMware vSphere CSI 驱动程序升级到 4.11,但会警告存在第三方 CSI 驱动程序。如需更多信息,请参阅 (BZ#2089419) 和 (BZ#2052071)。
- 在这个版本中,Amazon Web Services(AWS)的默认凭证请求被修改,允许使用客户管理的密钥从 Key Managment Service(KMS)挂载加密卷。如果管理员打算在 AWS 上使用客户管理的密钥以手动模式创建凭证请求的管理员,则需要手动应用这些更改。其他管理员不应受到此更改的影响。(BZ#2049872)
- 在以前的版本中,删除在 IBM Cloud 上部署的 OpenShift Container Platform 集群后,后端存储卷不会被删除。这将使集群资源不能被完全删除。在这个版本中,增加了对安装程序和 Container Storage Interface(CSI)驱动程序的支持,从而导致在集群被删除后删除后端卷。(BZ#2047732)
Web 控制台 (开发者视角)
- 在此次更新之前,当输入无效的 devfile 存储库(早于 devfile v2.2)时,Git Import 表单会显示错误消息。在这个版本中,错误消息会指出 devfile 早于 v2.2。(BZ#2046435)
- 在此次更新之前,如果集群中没有 ConsoleLink CR (openshift-blog),则博客链接未定义。点博客链接没有重定向到 OpenShift 博客。在这个版本中,即使集群中的 ConsoleLink CR(openshift-blog)没有包括 ConsoleLink CR (openshift-blog)也会添加回退到 https://developers.redhat.com/products/openshift/whats-new 的链接。(BZ#2050637)
- 在此次更新之前,kafka CR 的 API 版本已更新。此版本不支持旧版本,因此在 Create Event Source - KafkaSource 事件中显示一个空的 Bootstrap 服务器,即使这个服务器已创建。在这个版本中,Kafka CR 的更新 API 支持旧版本,并在 Create Event Source - KafkaSource 表单中显示 Bootstrap 服务器列表。(BZ#2058623)
- 在此次更新之前,当您使用 Import from Git 表单导入私有 Git 存储库时,不会识别正确的导入类型和构建器镜像,因为 secret 不会被解码。在这个版本中,Import from Git 表单会解码 secret 来获取私有存储库详情。(BZ#2053501)
- 在此次更新之前,从开发人员的角度来看,Observe 仪表板为最近查看的工作负载打开,而不是您在 Topology 视图中选择的仪表板。出现这个问题的原因是,会话首选使用 redux 存储,而不是 URL 中的查询参数。在这个版本中,Observe 仪表板根据 URL 中的查询参数呈现组件。(BZ#2052953)
-
在此次更新之前,即使集群中不存在,用于以硬编码值
gp2
作为默认存储类的 Pipeline。在这个版本中,您可以使用默认的指定的存储类名称,而不是硬编码的值。(BZ#2084635) -
在此次更新之前,在运行高容量管道日志时,auto-scroll 功能无法正常工作,日志会显示旧的信息。运行大量管道日志会为
scrollIntoView
方法生成大量调用。在这个版本中,高容量管道日志不会为scrollIntoView
方法生成任何调用,并提供一个平稳的自动进度功能。(BZ#2014161) - 在此次更新之前,当使用 Create RoleBinding 表单创建 RoleBinding 时,主题名称是必需的。缺少主体名称无法加载项目访问选项卡。在这个版本中,没有 Subject Name 属性的 RoleBinding 不会在 Project Access 选项卡中列出。(BZ#2051558)
-
在此次更新之前,事件源的 sink 和触发器会显示所有资源,即使这些资源是独立或者支持
k-native 服务
、Broker
或KameletBinding
的一部分。在 sink 下拉列表中显示的地址资源。在这个版本中,添加了一个过滤器来仅显示独立资源作为接收器。(BZ#2054285) - 在此次更新之前,拓扑视图的边栏中的空标签页在渲染前不会被过滤。这在拓扑视图中显示 Workloads 无效标签页。在这个版本中,在渲染前会正确过滤空标签页。(BZ#2049483)
-
在此次更新之前,当使用 Start Last Run 按钮启动管道时,创建的
PipelineRun
的started-by
注解没有更新为正确的用户名,因此部分触发的用户名没有显示正确的用户名。在这个版本中,start-by
注解值更新为正确的用户名,由部分触发的显示了启动管道的正确用户的用户名。(BZ#2046618) -
在此次更新之前,
ProjectHelmChartRepository
CR 不会在集群中显示。因此,集群中还没有初始化此 CR 的 API 模式。在这个版本中,ProjectHelmChartRepository
显示在集群中。(BZ#2054197) - 在此次更新之前,当您在拓扑中使用键盘进行导航时,所选项目不会被突出显示。借助此次更新,使用键盘突出显示和更新样式进行导航。(BZ#2039277)
- 在此次更新之前,web 终端在默认视图之外打开的布局,且无法调整大小。在这个版本中,web 终端会在默认视图中打开,并正确调整大小。(BZ#2022253)
- 在此次更新之前,一些侧边栏项不包含命名空间上下文。因此,当从另一个浏览器打开链接或从不同的活跃命名空间中打开链接时,Web 控制台不会切换到正确的命名空间。在这个版本中,在打开 URL 时会选择正确的命名空间。(BZ#2039647)
- 在以前的版本中,当使用控制台实例化模板时,其参数将存储为 secret 资源。移除模板后,secret 会保留下来。因此,在集群中创建了一个不必要的 secret 构建。在这个版本中,所有权引用添加到映射到模板实例的 secret 中。现在,当模板实例被删除时,secret 也会被删除。(BZ#2015042)
-
在这个版本中,
jsonData
属性已弃用,并替换为ping
源中的数据
。(BZ#2084438) -
在以前的版本中,对于带有多于 100 个节点的集群,OpenShift Container Platform Web 控制台中的拓扑视图会失败。在这个版本中,拓扑视图会显示超过 100 个节点的集群有一个
LimitExceeded
状态。提供了一个选项,用于改为使用 Search 页面来查看资源。或者,您可以点 Show topology anyway 来继续载入拓扑视图。(BZ#2060329) -
在以前的版本中,如果服务公开多个服务端口,路由目标端口为
8080
,尝试更改目标端口会导致另一个服务端口被更新,而不是端口8080
服务端口。在这个版本中,当设置了新的目标端口时,与活跃目标端口对应的服务端口会被替换。(BZ#2077943) -
在以前的版本中,用于管理实例 API 的
git
检测,以获取存储库信息无法用于自托管 GitHub 和 Bitbucket 的存储库。在这个版本中,检测自托管的 GitHub 和 Bitbucket 实例存储库可以正常工作。(BZ#2038244) -
在以前的版本中,在 EventSource 创建表单中,
apiVersion
不会以正确格式传递给 Resource 下拉菜单。这会导致在 EventSource 创建下选择InContext
,这会从 Resource 下拉菜单中选择它。在这个版本中,Resource 下拉菜单中包括了来自InContext
的资源
。(BZ#2070020) -
在以前的版本中,Pipeline metrics 页面会显示指标查询的所有 API 调用,并失败且显示
404
错误。在这个版本中,prometheus-tenancy
API 用于获取管道的指标数据。现在,管道指标页面显示对具有至少查看命名空间访问权限的非 admin 用户的所有数据和图形。(BZ#2041769) - 在以前的版本中,您可以使用 Crtl+space 键盘快捷键访问快速搜索并添加模态,但您不能使用相同的键盘快捷方式关闭它们。在这个版本中,您可以使用 Ctrl+space 键盘快捷键关闭快速搜索并添加模态。(BZ#2093586)
-
在以前的版本中,如果用户被删除,则不会删除为用户设置创建的资源。因此,
openshift-console-user-settings
命名空间中创建的资源永远不会被删除。在这个版本中,ownerReference
会在创建时添加到您的元数据中。这允许在用户不再存在时自动删除资源。(BZ#2019564)