文件系统组 ID 被设置为
nobody
用户, ID
65534
。kubelet 在 pod 启动时递归设置组 ID。如需有关为 pod 配置卷权限和所有权更改策略的更多信息,请参阅
Kubernetes 文档
。
所有有状态的集合监控部署都以
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 name
或
Kubelet 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
)
在以前的版本中,日志库的改变导致 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
)
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),使用在
1
到
65535
范围内设置的容器端口来定义 webhook。这导致无法因为验证失败而创建
ValidatingWebhookConfiguration
或
MutatingWebhookConfiguration
对象,从而无法创建成功安装的 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=xyz
和
rd.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
设置为附加内核参数。
如需更多信息,请参阅
有关低延迟和实时应用程序的超线程
。