1.5. 程序错误修复
apiserver-auth
-
在以前的版本中,在某些情况下 Ingress Operator 无法将 CA 证书推送到它的
router-certs
secret 中,因此 Cluster Authentication Operator 无法在其健康检查中构建对证书的信任链,从而导致它进入Degraded
状态并阻止升级。现在,在默认路由器 CA 检查过程中,CA 始终包含在default-ingress-cert
配置映射中,因此 Cluster Authentication Operator 不再会阻止升级。(BZ#1866818) -
在以前的版本中,Cluster Authentication Operator 无法解析从 OIDC 服务器返回的 HTML 页面,该页面忽略了
Accept: application/json
请求它们不支持的登录流时,因为 Operator 希望获得 JSON 响应。因此,Operator 无法遵循 IDP 配置。当因为不支持请求流从 OIDC 服务器返回 HTML 页面时,Cluster Authentication Operator 不再会失败。(BZ#1877803) - 在以前的版本中,Cluster Authentication Operator 没有正确验证配置映射和 secret,这可能会导致 OAuth 服务器的新部署以使用无效或缺失的文件推出,从而导致 Pod 崩溃。配置映射和 secret 现在由 Cluster Authentication Operator 正确验证,因此当 ConfigMap 或 secret 包含无效数据时,不会推出新的部署。(BZ#1777137)
裸机硬件置备
-
在以前的版本中,
ironic-image
容器配置缺少了设置来启用idrac-redfish-virtual-media
引导驱动。因此,用户无法选择 Metal3 的idrac-virtual-media
引导 URL。现在包括了缺少的ironic-image
容器配置,因此用户可以选择 Metal3 的idrac-virtual-media
URL。(BZ#1858019) - 在以前的版本中,某些 Dell 固件版本不在支持使用 Redfish 配置持久引导的支持。Dell iDRAC 固件被更新到 4.20.20.20 版本可解决这个问题。(BZ#1828885)
- 在这个发行版本中,解决了在同时检查许多节点时导致检查超时的问题。(BZ#1830256)
-
在以前的版本中,
ironic-image
容器配置缺少了设置来启用idrac-redfish-virtual-media
引导驱动。因此,用户无法选择 Metal3 的idrac-virtual-media
引导 URL。现在包括了缺少的ironic-image
容器配置,因此用户可以选择 Metal3 的idrac-virtual-media
URL。(BZ#1853302) -
在以前的版本中,
openshift-machine-api
命名空间中的metal3
pod 中的 HTTPd 容器是用来为裸机 ironic 镜像提供服务,允许目录列表。在这个版本中,不再允许在此容器中使用目录列表。(BZ#1859334)"
Build
-
buildah
库中的错误可能会忽略特定的 HTTP 错误。由于目标 registry 的临时问题,构建可能会无法推送镜像。在这个版本中更新了buildah
,以在推送镜像 Blob 时可以正确处理这些错误。现在,如果上游 registry 暂时不可用,buildah
将无法推送镜像。(BZ#1816578) - 在以前的版本中,OpenShift Container Platform 构建中使用的容器镜像签名策略不包含任何本地镜像的配置。当只允许来自特定 registry 的镜像时,构建中的 postCommit 脚本会失败,因为不允许使用本地镜像。容器镜像签名策略已更新,始终允许直接引用本地存储层的镜像。现在,如果构建包含 postCommit hook,则可以成功完成。(BZ#1838372)
-
在以前的版本中,如果 Docker 策略构建中使用的
Dockerfile
使用ARG
指令,在Dockerfile
的第一个FROM
指令发生前定义构建参数,则在处理Dockerfile
时会丢弃该指令,以纳入Build
或BuildConfig
资源中指定的任何覆盖。在使用预处理的 Dockerfile 构建镜像时,对这些参数的引用不会正确解决。预处理逻辑已被修改,以保留生成更新的Dockerfile
内容时遇到的第一个FROM
指令前遇到的ARG
指令,因此不再出现这个问题。(BZ#1842982) - 在以前的版本中,Buildah 会清除镜像上的镜像架构和 OS 字段。这会导致通用容器工具失败,因为生成的镜像无法识别其架构和操作系统。此程序错误修复可防止 Buildah 覆盖镜像和架构,除非有显式覆盖。这样可确保镜像始终具有架构和操作系统字段,且不会出现镜像不匹配警告。(BZ#1858779)
-
在以前的版本中,
Dockerfile
构建失败,因为它们在某些情况下无法正确扩展构建参数。此更新修复了Dockerfile
构建参数处理,因此Dockerfile
构建现在可以成功。(BZ#1839683) - 在以前的版本中,Buildah 调用会从其 blob 缓存中读取镜像,这会导致 Source-to-Image(S2I)构建失败。这个问题已在 Buildah v1.14.11 中解决,它已被加入到 OpenShift Container Platform 4.6。(BZ#1844469)
-
在以前的版本中,Buildah 无法引用
COPY -from
Dockerfile
指令中的镜像。因此,包含COPY -from=<image>
的多阶段Dockerfile
构建会失败。buildah 已更新为支持COPY -from
指令的版本。包含这些指令的构建现在可以成功。(BZ#1844596)
Cloud Compute
- 在以前的版本中,如果机器集上的 replicas 字段被设置为 nil 值,则自动扩展无法决定机器集中的当前副本数,因此无法执行扩展操作。在这个版本中,自动扩展会使用机器集中观察到的最后副本数,如果设置了 nil 值,则自动扩展由状态中的 replicas 字段报告。(BZ#1852061)
- 在以前的版本中,如果同一类型的节点存在 128 MB 以上的内存,则自动扩展不会平衡跨不同故障域的工作负载。在这个版本中,最大内存数量增加到 256MB。(BZ#1824215)
- 在以前的版本中,机器集 replicas 字段没有默认值。因此,如果没有此字段,机器集控制器会静默地失败。replicas 字段现在有一个默认值。如果没有设置 replicas 字段,会使用一个默认的副本。(BZ#1844596)
- 在以前的版本中,机器监控检查控制器不会在尝试删除它前检查机器是否已被删除。因此,控制器可能会发送多个删除请求,从而导致错误的日志记录和事件报告。机器健康控制器现在会在尝试删除它前,检查机器是否已被删除。因此,重复的日志和事件会减少。(BZ#1844986)
- 在以前的版本中,当集群 Operator 处于稳定状态时,Machine API Operator 会更新集群 Operator 机器 API。因此,资源在状态间快速循环。现在,只有在推出更改后,资源的状态才会改变。状态保持稳定。(BZ#1855839)
-
在以前的版本中,将
balanceSimilarNodeGroups
、ignoreDaemonSetsUtilization
或skipNodesWithLocalStorage
的ClusterAutoscaler
资源值设置为false
时,在部署自动扩展器时不会注册。现在,在部署集群自动扩展器时这些值会被正确读取。(BZ#1854907) - 很少可以部署重复的机器 API 控制器实例。因此,集群可能会泄漏无法访问的机器。现在,领导选举机制添加到所有机器 API 组件中,以确保不会创建重复的实例。机器 API 控制器仅运行指定数量的实例。(BZ#1861896)
- 在 Red Hat Virtualization(RHV)集群上,手动机器扩展可能会失败。从 Web 控制台或 CLI 扩展机器现在可以正常工作。(BZ#1817853)
-
在以前的版本中,must-gather 不会收集
BareMetalHost
记录。因此,调试信息可能不完整。现在,must-gather 可以收集BareMetalHost
记录。(BZ#1841886) -
在以前的版本中,在 Azure 上运行的集群上,计算机器会在安装时转换为
Failed
阶段。因此,创建后无法识别虚拟机。尝试联络带有错误的机器日志,在正确启动后 VM 可能会失败。作为修复,处于Creating
状态的机器被识别为已创建。日志包含较少的错误,机器不太可能失败。(BZ#1836141) -
在以前的版本中,机器健康检查可以接受
spec.maxUnhealthy
为负值。因此,在负数值时,每次协调都会产生大量事件。spec.maxUnhealthy
的负值。现在会将其视为0
,这可减少伪装的日志消息。(BZ#1862556)
Cloud Credential Operator
- 在以前的版本中,当从 OpenShift Container Platform 版本 4.5 升级到版本 4.6 时,一些字段会更新到 4.6 的默认值。因为未保留 4.5 字段值,所以会影响从 4.6 降级到 4.5 的功能。此程序错误修复明确保留了 4.5 值,这样就可以在降级尝试中再次指定默认值,而不是在 4.5 中未指定字段。现在,从 4.6 降级到 4.5 可能会成功。(BZ#1868376)
-
在以前的版本中,Cloud Credential Operator 领导选举机制使用来自
controller-runtime
的默认值,因此每 2 秒写入一次etcd
。此发行版本实施了自定义的领导选举机制,该选举机制现在每 90 秒写一次,并在正常关闭时立即释放锁定。(BZ#1858403)
Cluster Version Operator
- Cluster Version Operator 使用 HTTP 而不是 HTTPS 提供指标,并会受到 man-in-the-middle 攻击(未加密数据)。现在,Cluster Version Operator 使用 HTTPS 提供指标服务,数据已被加密。(BZ#1809195)
- 当集群管理员配置了集群版本覆盖时,升级过程会卡住。现在,当设置覆盖时会阻止升级。在管理员删除覆盖前,不会开始升级。(BZ#1822844)
-
Cluster Version Operator 用来从代理配置的
trustedCA
属性引用的配置映射中加载可信 CA。引用的配置映射是用户维护的,设置损坏证书的用户将中断 Operator 对代理服务器的访问。现在,Operator 从openshift-config-managed/trusted-ca-bundle
中加载trustedCA
配置,Network Operator 会在代理配置引用的trustedCA
配置映射有效时填充它。(BZ#1797123) - HTTPS 签名获取序列化存储,从而导致 Cluster Version Operator 完成任务前潜在的超时时间。现在,外部 HTTPS 签名检索是并行的,会尝试所有存储。(BZ#1840343)
-
在以前的版本中,在使用
--to-image
选项(如oc adm upgrade --to-image
)进行 z-stream 集群升级过程中,Cluster Version Operator 使用升级至的集群版本,而不是使用当前集群版本进行验证。这会导致 z-stream 升级失败。现在,即使 Cluster Version Operator 具有Upgradeable=false
,也允许使用--to-image
进行 z-stream 集群升级。(BZ#1822513) -
在以前的版本中,Cluster Version Operator(CVO)没有同步 pod spec 中的
shareProcessNamespace
参数,这会导致 Registry Operator 不会更新shareProcessNamespace
设置。CVO 现在同步shareProcessNamespace
、DNSPolicy
和TerminationGracePeriodSeconds
参数,从而修复了 Registry Operator 更新问题。(BZ#1866554)
控制台 Kubevirt 插件
- 在以前的版本中,具有相同 NIC 配置集的 NIC 无法成功导入,或者选择了错误的网络。现在,web 控制台会强制用户为此类 NIC 选择相同的网络(而不是 pod 网络)。(BZ#1852473)
-
非管理员用户登录时,虚拟机不会被显示,因为 VM 列表等待
virtualmachineimports
数据被处理。现在,,M 列表可以被正确修改。(BZ#1843780) -
Create VM 向导 Edit Disk modal 没有考虑克隆的 PVC 命名空间。无法从不同命名空间中编辑
datavolume
磁盘。现在,磁盘模态可以正确地注册datavolume
磁盘命名空间。(BZ#1859518) -
当引用 URL 源时,虚拟机和模板的名称不能相同,因为
datavolume
名称是硬编码的。现在,一个自动生成的唯一字符串会添加到datavolume
名称中,新的虚拟机和模板可以有相同的名称。(BZ#1860936) -
因为数据是一个空的数组,所以网络使用数据数据会被显示为
Not Available
。现在,会执行一个检查,空数组被解释为没有数据。(BZ#1850438) - 在这个版本中, Import VM 功能已从 web 控制台的 Developer 视角中删除。(BZ#1876377)
控制台 Metal3 插件
-
用户界面无法检测到旧的节点维护 CRD,因为 EI 正在搜索最新版本。因此,如果存在节点维护操作,则节点维护操作会丢失旧的
NodeMaintenance
CR。现在,web 控制台同时监控NodeMaintenance
CR。(BZ#1837156) - 用户界面无法正确评估安全关闭,从而导致在关闭控制台时出现不正确的警告。现在,接口会等待节点 Pod 加载,并在关闭时显示正确的警告。(BZ#1872893)
容器
-
在以前的版本中,处理从构建上下文中复制内容的
COPY
或ADD
指令的逻辑在.dockerignore
文件存在时无法有效地过滤。如果评估源位置中的每个项目是否需要复制到目的地,那么会明显减慢COPY
和ADD
。此程序错误修复重写了相关逻辑,在存在.dockerignore
文件时将不会明显降低构建期间处理COPY
和ADD
指令的速度。(BZ#1828119, BZ#1813258) -
在以前的版本中,镜像构建和推送可能会失败,错误信息为
error reading blob from source
,这是因为构建器逻辑会计算新层的内容两次。缓存层内容的逻辑依赖于这些计算结果的一致性。如果两个计算之间新层的内容发生变化,缓存将无法在需要时提供层内容。现在,新层的内容不再计算两次,从而使镜像构建不会失败。(BZ#1720730)
Web 控制台 (开发者视角)
- 在以前的版本中,当尝试通过 Topology 视图删除 Knative 应用程序时会失败并报告 Knative 路由不存在的错误。这个问题现已解决,错误将不再显示。(BZ#1866214)
- 在以前的版本中,web 控制台的 Developer 视角不允许导入不安全 registry 中的镜像。此程序错误修复添加了一个复选框,用户可以使用 Deploy image 表单中的不安全 registry。(BZ#1826740)
- 当用户选择 From Catalog 选项来创建应用程序时,Developer Catalog 会显示一个空白页面,而不是模板列表来创建应用程序。这是因为安装了 1.18.0 Jaeger Operator 造成的。这个问题现已解决,模板会如预期显示。(BZ#1845279)
- 当通过 web 控制台的 Developer 视角中的 Pipeline Builder 删除 Pipeline 中的并行任务时,接口会错误地重新安排连接到并行任务的任务,从而导致出现孤立的任务。在这个版本中,连接至已删除的并行任务的任务会与原始 Pipeline 重新关联。(BZ#1856155)
- 当用户在 web 控制台同时打开侧面面板取消管道创建时,web 控制台会抛出一个 JavaScript 异常。这个问题已通过改进内部状态处理得到解决。(BZ#1856267)
- 具有所需权限的用户无法从另一个项目中检索和部署镜像。现在创建了所需的角色绑定来解决这个问题。(BZ#1843222)
-
当您尝试使用 Import from Git 功能从 Git 存储库部署应用程序时,Web 控制台的 Developer 视角会对集群可以访问的私有存储库报告一个假的错误
Git repository is not reachable
。这可以通过在错误消息中为集群添加有关使私有存储库可用的信息来解决。(BZ#1877739) -
当通过 web 控制台的 Developer 视角创建 Go 应用程序时,到应用程序的路由不会被创建。这是因为
build-tools
中的一个错误导致,并错误配置了端口。这个问题已通过选择用户提供的端口或默认的端口 8080 作为目标端口来解决。(BZ#1874817) - 当您使用 Import from Git 功能创建应用程序时,无法随后从 web 控制台更改应用程序的 Git 存储库。这是因为在以后的 Git 存储库 URL 编辑中更改了应用程序名称。这个问题已通过在编辑应用程序 Git 存储库 URL 时,使应用程序名称为只读进行了解决。(BZ#1873095)
- 在以前的版本中,没有管理或项目列表权限的用户无法查看任何项目的指标。此程序错误修复删除了访问集群指标时用户权限的检查。(BZ#1842875)
-
在用户名中具有
@
字符的用户,如user@example.com
,无法从 web 控制台的 Developer 视角启动 Pipeline。这是因为 Kubernetes 标签中的一个限制所致。这个问题已通过将Started by
元数据从 Kubernetes 标签移到 Kubernetes 注解中来解决。(BZ#1868653) - 在以前的版本中,当用户选择一个指标数据时, QueryEditor 会显示查询。但是,如果用户删除或修改了查询并再次选择了相同的指标,QueryEditor 就不会更新。在这个版本中,如果某个查询被用户清除,并且他们试图再次选择同一个查询,查询输入文本区域就会显示查询。(BZ#1843387)
-
Che Workspace Operator 删除了对
Workspace
资源的支持,并使用DevWorkspace
CRD 替换。因此,最新的 Che Workspace Operator 不会启用命令行终端。在这个版本中,OpenShift 命令行终端被移为使用DevWorkspace
资源。现在,当安装 Che Workspace Operator 时,OpenShift Console 中将启用命令行终端。(BZ#1844938) - 在以前的版本中,如果在多个修订版本中分布了流量,Knative 服务的路由 decorator 会将用户重定向到特定修订路由。路由 decorator 已更新,始终指向 Knative 基础服务路由。(BZ#1860768)
- 在以前的版本中,当用户为外部私有容器 registry 添加 secret 并从 registry 导入容器镜像时,pod 没有启动。因此,部署会卡住,直到手动更新服务帐户或部署为止。此程序错误修复允许新部署使用内部容器 registry 来启动其 pod。在这个版本中,用户可从外部私有容器 registry 导入容器镜像,而无需对服务帐户或部署进行额外的更改。(BZ#1926340)
-
控制台使用之前版本的
KafkaSource
对象,该对象使用规格中的resources
和serviceAccountName
字段。KafkaSource
对象的 v1beta1 版本删除了这些字段,因此用户无法使用 v1beta1 版本创建KafkaSource
对象。这个问题现已解决,用户可以使用 v1beta1 版本创建KafkaSource
对象。(BZ#1892695) -
在以前的版本中,下载 chart 以实例化 helm 发行版本的相对 Chart URL 无法访问。这是因为,在 Helm Chart 仓库中引用的
index.yaml
来自远程仓库。其中一些索引文件包含相对 Chart URL。这个问题已通过将相关 Chart URL 转换为绝对 URL 来解决,Chart URL 现在可以被访问。(BZ#1916406) - 在以前的版本中,用户无法在 Topology 视图中查看任何 Knative 服务和源。这是因为触发器同时具有 Knative 服务和 In-Memory Channel 作为订阅者,因为有一个 Null Pointer Exception(NPE)。这个问题已通过修复 Null Pointer Exception 来解决,从而 Knative 数据模型返回正确的数据,Topology 视图中会正确显示 Knative 资源。(BZ#1907827)
- 在以前的版本中,API 服务器可能无法创建资源并返回 409 状态代码,因为在更新资源配额资源时出现冲突。这个问题已被解决,{product title} web 控制台会在收到 409 状态代码时尝试重试请求。最多三次尝试通常足以完成请求。如果 409 持续发生,控制台中会显示一个错误。(BZ#1928230)
-
在以前的版本中,开发人员目录中不会显示 helm chart,因为 Chart 存储库
httpClient()
不考虑任何代理环境变量。这个问题已被解决,helm chart 现在会在开发人员目录中显示。(BZ#1919138) - 虽然在 Eventing 用户界面中显示了技术预览徽标,但它将使用 GA 版本。现在,技术预览徽标已从 Eventing 用户界面中删除。(BZ#1899382)
- 在以前的版本中,当相关的 pod 数据不可用于部署配置时,应用程序会崩溃。这是因为,部署配置被加载后,控制台部署会马上获取两组数据用于 pod 状态的显示图。如果 API 返回超过 250 个 pod,则会跳过某些信息且不可用。这个问题已被解决,即使项目包含超过 250 个 pod,pod 数据也会可用,因此 DeploymentConfig 详情页面不会再崩溃。(BZ#1921603)
- 在以前的版本中,与触发器、订阅、频道和 IMC 事件源对应的静态模型使用 beta API 版本。在 Serverless 0.10 发行版本中,事件源的最新支持版本更新至 v1 版本。在这个版本中,更新了用户界面模型,以指向最新支持的版本。(BZ#1896625)
- 在以前的版本中,当有条件任务失败时,完成的管道运行会显示每个失败条件任务。这个问题已通过禁用失败的条件任务并在它们中添加跳过的图标来解决。这可让您更好地了解管道运行的状态。(BZ#1916378)
-
在以前的版本中,因为用户权限不足,用户无法从其他项目拉取镜像。在这个版本中,删除了所有用户界面检查角色绑定,并显示
oc
命令警告来帮助用户使用命令行。在这个版本中,用户不再无法从不同命名空间创建镜像,现在可以从其他项目中部署镜像。(BZ#1933727) - 在创建示例应用程序时,Developer 视角会创建多个资源,这些资源相互依赖,且必须按特定顺序完成。在以前的版本中,准入插件有时无法检查其中一个资源,阻止 Developer 视角生成示例应用程序。这个问题已被解决。代码会按所需顺序创建资源,因此创建示例应用程序更为稳定。(BZ#1933666)
-
在以前的版本中,用户无法从 Developer 视角将 Knative 服务创建为私有服务。这个问题现已解决,更新了标签
'networking.knative.dev/visibility': 'cluster-local'
。(BZ#1978159) - 在以前的版本中,如果 OpenShift Container Platform Web 控制台中使用 Bitbucket 存储库为部署创建的拓扑 URL 无法正常工作,如果它们包含包含斜杠字符的分支名称。这是因为 Bitbucket API BCLOUD-9969 存在问题。当前发行版本缓解了这个问题:如果分支名称包含斜杠,则拓扑 URL 指向存储库的默认分支页面。(BZ#1972694)
-
在以前的版本中,在 Git 导入流中为私有存储库创建的管道无法运行。这个问题现已解决,方法是将 secret 名称添加到管道的
ServiceAccount
对象注解中,并在提供的 secret 中添加特定于管道的注解。(BZ#1970984)
DNS
- 在以前的版本中,会发生重复的无效内存地址或 nil pointer 解引用错误,在运行 CoreDNS 1.6.6 时会包括 Kube API 访问超时。现在,这个问题可以通过正确处理 Endpoint Tombstones 错误来解决。现在,CoreDNS 的行为是不会重复的 panics。(BZ#1868315)
-
在以前的版本中,DNS Operator 会重复尝试更新
DNS
和Service
对象,以响应 API 设定的默认值。在这个版本中,DNS Operator 认为 DNS Operator 未指定的值等于DNS
和Service
对象中的值。因此,DNS Operator 不再更新DNS
或Service
对象以响应 API 默认值。(BZ#1842741)
etcd
-
在以前的版本中,当 bootstrap 节点被删除后,
ETCDCTL_ENDPOINTS
中的 bootstrap 端点不会被移除,因此etcdctl
命令会显示意外错误。bootstrap 端点不再添加到ETCDCTL_ENDPOINTS
中,因此etcdctl
命令不会显示与 bootstrap 端点相关的错误。(BZ#1835238)
Image
- 在以前的版本中,使用清单列表中的摘要导入镜像会失败。在这个版本中,通过使用清单列表中所选清单摘要而不是清单列表,将转换从清单列表变为清单。因此,通过清单列表摘要导入可以按预期运行。(BZ#1751258)
镜像 Registry
- 在以前的版本中,有些内部软件包使用了内部错误结构,从而导致了空指针问题。现在,内部错误接口被返回,nil 错误会被正确转换。(BZ#1815562)
-
在为空时,Operator 没有生成
httpSecrets
,从而导致值没有正确设置。现在,Operator 会生成httpSecret
,并在创建配置文件时将其用于所有副本。(BZ#1824834) - 在以前的版本中,当镜像修剪器被禁用时,会出现无效的警报。这个警报现已被删除。(BZ#1845642)
- 对于一个变量,Registry Operator 类型断言(assertion)会进行两次,在第二次时没有检查结果。这会导致断言失败并产生 panic 条件。现在,使用已经过检查的断言,因此不会造成 panic。(BZ#1879426)
-
在以前的版本中,Operator bootstrap
storageManaged
被设置为true
,当用户手动更新配置文件时会导致冲突。现在,创建了一个额外的配置字段spec.storage.storageManagementState
。用户可以将其指定为Managed
或Unmanaged
,Operator 将遵循这个设置。(BZ#1833109) -
当在将内容写入存储时删除 OpenStack 上的 Image Registry,会导致 Image Registry 的存储没有被移除,并且会记录
409
HTTP 返回代码错误。在这个版本中,在删除存储前会删除存储内容。现在,当 Image Registry Operator 被删除时,其存储也会被删除。(BZ#1835770) - 在 OpenStack 上进行安装时,如果在 Image Registry Operator bootstrap 的过程中无法访问 Swift 存储,则会导致 bootstrap 过程不完整。这会导致创建 Image Registry 配置资源失败,并会阻断修复或更改其配置。在这个版本中对这个问题进行了修复,现在可以防止当访问 Swift 存储出现问题时 bootstrap 出现故障。如果出现错误,则会记录相关的错误,允许 bootstrap 过程完成并创建配置资源。现在,Image Registry Operator 更为灵活,如果无法访问 Swift 存储,它会使用 PVC 来引导内部 Image Registry。(BZ#1846263)
- Image Registry Operator 避免多次调用 Azure 端点,因为 Azure 会强制实施配额,而在其前的版本中 Operator 会不断查询存储帐户密钥。在这个版本中,密钥会在本地缓存中存在一定时间,以避免在每次需要时都从远程获取密钥。(BZ#1853734)
- 在以前的版本中,Operator 认为在报告 Operator 状态时正在运行的作业会成功完成,即使作业可能会失败。现在,在报告 Operator 状态时,正在运行的任务会被忽略。(BZ#1857684)
- 当在 s3 存储中运行时镜像 registry 清除过程会失败,因为它会列出目录两次。现在,目录只会被列出一次,镜像清除过程可以成功完成。(BZ#1861304)
- 在以前的版本中,如果删除了 Image Registry Operator,修剪器任务会失败,因为它无法访问不存在的 registry。现在,修剪器作业仅移除 etcd 对象,并在删除 registry 时不会尝试 ping 注册表。(BZ#1867792)
- 如果用户手动添加存储桶名称,Operator 不会创建存储桶。现在,Operator 会根据用户提供的名称成功创建一个存储桶。(BZ31875013)
-
在以前的版本中,当 Image Registry Operator 遇到
Too large resource version
错误消息时,它无法从集群中获取事件。在这个版本中,client-go
库已被更新,以修复反射器,以便 Operator 可以从Too large resource version
错误消息中恢复。(BZ#1880354) -
在以前的版本中,为 Image Registry Operator 配置文件中的
spec.requests.read/write.maxWaitInQueue
提供的值不会被验证。如果提供的值是一个不能被解析为持续时间的字符串,则不会应用更改,同时会在日志中重复记录一个有关不正确值的消息。此发行版本添加了相关验证,用户不能提供此字段的无效值。(BZ#1833245) - 在以前的版本中,修剪镜像时在镜像间跟踪依赖项会很慢。镜像修剪有时需要很长时间才能完成。底层镜像修剪的机制已被重新设计。现在,镜像修剪速度更快,并改进了并行性。(BZ#1860163)
安装程序
-
在以前的版本中,当机器试图获取
resourcePoolPath
时,它会找到多个资源池,无法解析正确的资源池。在这个版本中,添加到机器集合中的resourcePoolPath
信息有助于解析正确的属性。(BZ#1852545) - 在以前的版本中,在计算置备节点子网时,计算 DHCP 分配池的末尾值时有一个硬编码的值。这会导致,在机器 CIDR 小于 18 的 OpenStack 上的 OpenShift Container Platform 集群上部署时出现错误。在这个版本中,删除了对节点数目的硬编码,现在会动态计算 DHCP 分配池的末尾值。现在,只要集群对于所有必需的节点来说足够大,就可以在 OpenStack 上部署集群,并且带有具有任何长度的机器 CIDR。(BZ#1871048)
-
在以前的版本中,一些可用的网络在集群安装中不会被显示,因为一个
ovirt-engine-sdk-go
API 错误会影响到 oVirt 网络解析。这个问题现已解决。(BZ#1838559) -
在以前的版本中,在 vSphere web 控制台向导中,只会显示
Network
和DistributedVirtualPortgroup
网络类型,即使OpaqueNetwork
也是一个有效选项。现在,在向导中有一个OpaqueNetwork
选项,因此可以选择这种类型的网络。(BZ#1844103) - 在以前的版本中,Manila Operator 不支持自定义自签名证书,因此 Manila Operator 无法在使用自签名证书的一些环境中部署 Manila CSI 驱动程序。现在,Operator 会从系统配置映射获取用户提供的 CA 证书,将其挂载到驱动程序的容器中,并更新驱动程序的配置。因此,Manila Operator 可以在带有自签名证书的环境中部署和管理 Manila CSI 驱动程序。(BZ#1839226)
-
在以前的版本中,配置
platform.aws.userTags
参数将name
或kubernetes.io/cluster/
tag 添加到安装程序创建的资源中,造成机器 API 无法识别现有的 control plane 机器,并创建一组 control plane 主机,这会造成 etcd 集群成员资格的问题。现在,您无法在platform.aws.userTags
参数中设置可能会造成错误的 tag,集群不太可能具有额外的 control plane 主机和有问题的 etcd 集群。(BZ#1862209) - 在以前的版本中,在用户置备的基础架构的 Azure 集群中部署的负载均衡器上没有定义健康检查探测。因为负载均衡器没有被定义,所以它们不会发现 API 端点已不再可用,并继续将流量定向到它们,从而导致客户端失败。现在,健康检查探测会检查负载均衡器,它们可以正确地检测到 API 端点不可用,并停止路由到不可用的流量。(BZ#1836016)
-
在以前的版本中,安装程序不接受
*
作为proxy.noProxy
字段的有效值,因此您无法在安装过程中创建没有将代理设置为*
的集群。现在,安装程序接受*
作为参数的有效值,因此您可以在安装过程中将任何代理设置为*
。(BZ#1877486) -
以前,当您在 GCP 中安装集群时,总是使用
US
作为位置,因此可能无法在美国以外的一些区域安装集群。现在,安装程序为您指定的区域设置正确位置,因此可以在其他位置中成功安装。(BZ#1871030) - 在以前的版本中,当在带有安装程序置备的基础架构的 vSphere 上安装了集群时,可以将相同的 IP 地址分配给 ingress 和 API,这会导致 bootstrap 机器和一个 control plane 机器具有相同的 IP 地址。现在,安装程序会验证 IP 地址是不同的,control plane 和 bootstrap 机器都会有唯一的 IP 地址。(BZ#1853859)
-
在以前的版本中,当接口获取一个新的 DHCP4 或 DHCP6 租期时,
local-dns-prepender
不会更新resolv.conf
文件来包括集群所需的所有域名解析程序。现在,dhcp4-change
和dhcp6-change
的操作会让local-dns-prepender
启动更新。(BZ#1866534) -
在以前的版本中,您无法将集群部署到以下 GCP 区域:
asia-northeast3
、asia-southeast-2
、us-west3
和us-west4
。现在您可以使用这些区域。(BZ#1847549) -
在以前的版本中,OpenStack 安装程序在
InstanceID()
函数中使用不一致的输出格式。它从元数据或通过向服务器发送请求来获取实例 ID。在后者的情况下,结果总会带有 '/' 前缀,这是正确的格式。而如果实例 ID 来自元数据,则会因为这个错误,系统无法验证其节点的存在。现在,在元数据格式中也包含了 '/' 前缀,所以 ID 格式始终正确,系统可以成功验证节点是否存在。(BZ#1850149) - 在以前的版本中,当为集群启用 FIPS 时,裸机安装程序置备的基础架构平台的置备服务会失败。在这个版本中,当启用了 FIPS 并成功完成安装时,置备服务会如预期运行。(BZ#1804232)
- 在以前的版本中,DHCP 范围可以被配置为置备网络使用整个子网,包括集群置备 VIP。因此,安装会失败,因为无法分配 bootstrap VM IP 和集群置备 IP。在这个版本中,会对 VIP 进行正确验证,以确保其不与 DHCP 范围重叠。(BZ#1843587)
- 在以前的版本中,当证书最后带有两个行尾字符时,安装会失败。在这个版本中,证书认证机构(CA)证书信任捆绑包解析程序已被修复,它忽略了不可见的字符。因此,CA 证书信任捆绑包现在允许在证书之前、之间和之后使用行尾字符。(BZ#1813354)
-
在以前的版本中,当交互式安装程序提示为集群输入
ExternalNetwork
资源请求时,会列出所有可能的网络选择,包括无效的选项。在这个版本中,交互式安装程序会对可能的选项进行过滤并只列出外部网络。(BZ#1881532) -
在以前的版本中,裸机
kube-apiserver
健康检查探测使用硬编码的 IPv4 地址与负载均衡器通信。这个版本修复了使用localhost
的健康检查,它可以正确处理 IPv4 和 IPv6。另外,API 服务器会检查readyz
端点而不是healthz
。(BZ#1847082) -
由于没有列出所有依赖步骤的 Terraform 步骤,Red Hat OpenStack Platform(RHOSP)上的集群会遇到一个竞争条件,有时会导致 Terraform 作业因为
Resource not found
错误而失败。为了避免竞争条件的出现,步骤现在列为dependent_on
。(BZ#1734460) - 在以前的版本中,在更新机器前集群 API 不会验证 RHOSP flavor。因此,启动无效的 flavor 的机器会失败。现在,在更新机器前,实例类型会被验证,具有无效类别的机器会立即返回错误。(BZ#1820421)
-
在以前的版本中,在 RHOSP 上名称中带有句点(
.
)的集群会在安装的 bootstrap 阶段会失败。RHOSP 上的集群名称不再允许使用句点。如果集群名称包含句点,则会在安装过程的早期生成出错信息。(BZ#1857158) - 在以前的版本中,在 AWS 上部署的用户置备的基础架构中,不会为负载均衡器定义健康检查探测。负载均衡器不会检测 API 端点何时不可用,这会导致客户端失败。在这个版本中,添加了健康检查探测,负载均衡器不会将流量路由到已下线的节点。(BZ#1836018)
-
在以前的版本中,Terraform vSphere 供应商中的
DiskPostCloneOperation
功能检查了从 Red Hat CoreOS OVA 镜像克隆的虚拟机的thin_provisioned
和eagerly_scrub
属性。因为置备类型在克隆过程中发生了变化使其与源置备类型不匹配,检查会失败。现在,DiskPostCloneOperation
功能会忽略这些属性,Red Hat CoreOS OVA 克隆可以成功执行。(BZ#1862290) -
在运行
./openshift-install destroy cluster
时,安装程序会尝试在使用那些标签的资源被删除前删除安装程序标签。之后,安装程序将无法删除标签。在这个版本中,安装程序会在相应资源被删除后删除标签。(BZ#1846125)
kube-apiserver
-
在以前的版本中,当使用
LatencySensitive
功能门时,Cluster Version Operator(CVO)会将集群标记为不可升级。在这个版本中,CVO 不再将LatencySensitive
功能门视为集群升级的一个阻碍。要解决这个问题,强制升级到最新的 4.5.z 或 stable 版本,其中包括了对这个问题 的解决方案。(BZ#1861431)
kube-controller-manager
- 在以前的版本中,守护进程集控制器在重新创建守护进程时没有明确预期。因此,守护进程设置可能会卡住五分钟,直到预期过期为止。现在,守护进程集控制器可以正确地清除预期。(BZ#1843319)
-
当一个项目被删除时,UID 范围分配不会更新,因此在具有大量命名空间创建和移除操作的集群中可以使用 UID 范围。要解决这个问题,
kube-controller-manager
pod 会定期重启,这会触发修复过程并清除 UID 范围。(BZ#1808588) - 在以前的版本中,端点控制器在每个 informer 重新同步间隔上发送大量 API 请求,这会导致具有多个端点的大型集群中出现问题。存储的不一致和端点比较会导致端点控制器错误地假设集群需要很多额外的更新,比实际需要的更新更多。在这个版本中,更新了端点的存储和比较功能。使它们更为一致。因此,端点控制器现在只在需要时发送更新。(BZ#1854434)
-
在以前的版本中,
NotFound
错误被控制器逻辑错误处理。这会导致控制器(如部署、守护进程集和副本设置控制器)不知道缺少的 pod。在这个版本中,控制器可以正确地响应pod NotFound
事件,这代表 pod 之前被删除。(BZ#1843187)
kube-scheduler
- 在以前的版本中,当以空运行模式驱除 pod 时,某些 descheduler 策略把这个操作在日志中记录两次。现在,只为驱除创建一个日志条目。(BZ#1841187)
日志记录
- 在以前的版本中,Elasticsearch 索引指标默认在 Prometheus 中收集。因此,由于索引级别指标的大小,Prometheus 会快速地消耗可用的存储。为了保持 Prometheus 可以正常运行,用户需要手工进行一些操作(如减少 Prometheus 保留时间)。默认行为被修改为不收集 Elasticsearch 索引指标。(BZ#1858249)
- 因为 OpenShift Elasticsearch Operator 没有为 Kibana 部署更新 secret 哈希,所以如果 secret 被更新,则不会重启 Kibana Pod。现在,相关代码已被修改,可以正确地更新部署的 hash。这会如预期触发 pod 重新部署。(BZ#1834576)
- 由于增加了 Fluentd init 容器,因此在没有部署 OpenShift Elasticsearch Operator(EO)的情况下,Fluentd 无法部署到集群中。现在,相关代码已被修改,Fluentd 可以在没有 EO 的情况下运行。因此,在没有 Elasticsearch 的集群中,Fluentd 可以进行扩展。(BZ#1849188)
-
因为在 iframe 中打开 Kibana 的功能没有被拒绝,所以它使 Kibana 打开可能受到攻击,如 clickjacking 攻击。现在,代码已被修改,它会明确设置
x-frame-options:deny
,这可以阻断对 iframes 的使用。(BZ#1832783)
Machine Config Operator
在裸机环境中,
infra-dns
容器在每个主机上运行,以支持节点名称解析和其他内部 DNS 记录。NetworkManager
脚本还会更新主机上的/etc/resolv.conf
使其指向infra-dns
容器。另外,当创建 pod 时,会从它们的主机接收 DNS 配置文件(/etc/resolv.conf
文件)。如果在
NetworkManager
脚本更新主机上的/etc/resolv.conf
文件前创建了 HAProxy pod,则该 pod 可能会重复失败,因为无法解析api-int
内部 DNS 记录。在这个版本中更新了 Machine Config Operator(MCO),它会验证 HAProxy pod 的/etc/resolv.conf
文件是否与主机/etc/resolv.conf
文件一致。因此,HAProxy Pod 不再会遇到这些错误。(BZ#1849432)Keepalived 用于为 API 和默认路由器提供高可用性(HA)。每个节点中的 Keepalived 实例通过 curl 本地实体的健康端点(如本地
kube-apiserver
)来监控本地健康状况。在以前的版本中,只有在 TCP 连接失败时curl
命令才会失败,在 HTTP 出现非 200 错误时不会失败。这会导致 Keepalived 有时在本地实体不健康时,也不会切换到另一个健康节点,这会导致 API 请求中出现错误。在这个版本中更新了 Machine Config Operator(MCO),在服务器收到了非 200 返回码时,
curl
命令现在也会失败。因此,在本地实体出现故障时,API 和 Ingress 路由器现在可以正确地切换到一个健康的节点。(BZ#1844387)- 在裸机环境中,一些 DNS 记录是为 IPv4 硬编码的。这会导致在 IPv6 环境中无法正确提供一些记录,这可能需要在外部 DNS 服务器中创建这些记录。在这个版本中,更新了 Machine Config Operator(MCO),现在 DNS 记录可根据使用的网络协议版本正确填充。现在,在 IPv4 和 IPv6 中都可以正确提供内部记录。(BZ#1820785)
-
在以前的版本中,机器配置中指定的内核参数需要被分为独立的字符串组成数组。在合并到
rpm-ostree
命令之前,这些参数不会被验证。通过使用空格进行间隔把多个内核参数组合起来时(在内核命令行的一个行中允许这样做),会创建一个无效的rpm-ostree
命令。在这个版本中,机器配置控制器以类似内核的方式解析每个kernelArgument
项。因此,用户可以通过使用空格进行间隔来提供多个参数。(BZ#1812649) -
在以前的版本中,对于裸机环境,control plane 对于用户负载总是可以调度的。此程序错误修复更新了 Machine Config Operator(MCO),现在 control plane 节点会在使用 worker 的典型部署中正确配置为
NoSchedule
。(BZ#1828250) - 在以前的版本中,对于 Machine Config Operator(MCO),不必要的 API VIP 移动可能会导致客户端连接错误。在这个版本中,更新了 API VIP 健康检查,以限制其移动次数。因此,现在 API VIP 移动造成的错误会变少。(BZ#1823950)
Web 控制台(管理员视角)
- operand 的标签页缺少了 operand 列表视图。在这个版本中,这个问题已解决。(BZ#1842965)
- 当禁用 IPv6 时,下载 pod socket 无法绑定,下载 pod 会崩溃。如果没有启用 IPv6,现在会使用 IPv4 作为 socket。下载 Pod 现在可以正常工作,无论是否启用了 IPv4 和 IPv6。(BZ#1846922)
- Operator 状态显示值没有考虑手动批准策略。因此,显示 upgrade available 状态,这不会提示升级需要进一步的操作。为等待手动升级的 Operator 添加了一个新的状态消息。现在,可以明确告知 Operator 升级何时需要进一步操作。(BZ#1826481)
- 失败的操作对象的捕获逻辑试图访问生成的错误对象中的深度属性,而这个属性并非始终被定义。对于特定的失败请求类型,这会导致运行时错误。在这个版本中,这个问题已解决。(BZ#1846863)
-
victory 无法正确处理全零数据集。所有零数据集的 Y 轴点号会重复为零。当所有数据集都是零时,区域图表逻辑被更新为强制 Y 域为
[0,1]
。现在,全为零的数据集合的 Y 轴点符号是0
和1
。(BZ#1856352) - OperatorHub 上的 Operator 详情栏中未显示当前安装的版本。因此,用户无法判断当前安装的版本是否是最新的。在当前安装的 Operator 版本不是最新的版本时,现在 OperatorHub 上的 Operator 详情栏中会显示安装的版本。(BZ#1856353)
- create role binding 链接的命名空间和使用的集群链接不一致,因此 create role binding 页面不正确。此程序错误修复更新了相关链接,以使用命名空间(在可用的情况下)以及其它情况下的集群。现在使用正确的页面。(BZ#1871996)
- 在以前的版本中,web 控制台不支持 singlestat 面板的 Grafana 值映射,因此 singlestat 面板无法显示 Grafana 值映射。现在增加了支持,singlestat 面板可以显示 Grafana 值映射。(BZ#1866928)
-
针对 BZ#1812813 对
oc debug
进行了更新,使用空节点选择器创建新调试项目,解决了oc debug
仅适用于 worker 节点的问题。Web 控制台避免了这个问题,方法是在终端打开前要求用户在访问 NodeTerminal 页面时选择命名空间,从而造成与 oc
的方法不一致的情况。现在,在访问 NodeTerminal 页面时,web 控制台使用空节点选择器创建一个新的 debug 项目。Web 控制台 Node Terminal 页面的行为现在与 oc debug
的行为一致。(BZ#1881953) - 在删除所有接收器时,Web 控制台会出现运行时错误,用户会看到一个空白屏幕。现在,在代码中增加了对 null 的检查,用户现在可以看到一个 No Receivers 空状态屏幕。(BZ#1849556)
-
在某些情况下,在生成旧操作对象时传递给资源要求 widget 的值可能不是 immutablejs 映射实例。当试图引用资源要求 widget 当前值的 immutablejs
Map.getIn
函数时,会抛出一个运行时错误。当引用 immutablejsMap.getIn
函数时,使用可选的链。不会抛出运行时错误,可以显示 widget 没有值。(BZ#1883679) -
当对
imagemanifestvuln
资源进行搜索时会出现一个空白页面。组件使用props.match.params.ns
,有时它并没有被定义。因此,会出现运行时错误。这个问题现已解决。(BZ#1859256) - 在以前的版本中,对象列表右侧的 action 菜单在打开后会立即关闭。当点由 Operator 提供的 API 的一个标签页时,可以在 Installed Operators 详情页面中看到。这个菜单现在可以正常工作。(BZ#1840706)
- API 中缺少了一个关键字字段,用户无法在 OperatorHub 中搜索关键字。在这个版本中,这个问题已解决。(BZ#1840786)
- 在以前的版本中,Web 控制台中的 OperatorHub 有时会显示 Operator 的不正确图标。这个版本已经解决了这个问题。(BZ#1844125)
- 在这个发行版本中,web 控制台 OperatorHub 安装页面中的集群监控文档链接已被修正。(BZ#1856803)
- 在以前的版本中,点 EtcdRestores 页面中的 Create EtcdRestores 会导致 web 控制台停止响应。在这个版本中,Create EtcdRestore 表单会正确加载工作流。(BZ#1845815)
- 在以前的版本中,operand 表单数组和对象字段没有逻辑来检索和显示表单上的字段描述。因此,数组或对象类型字段的描述不会被呈现。现在,这个程序错误修复添加了在 operand 创建表单上显示阵列和对象字段描述的逻辑。(BZ#1854198)
-
在以前的版本中,当一个新 pod 启动时,部署配置概述 页面有时会崩溃并带有
e is undefined
错误。这个版本已经解决了这个问题。(BZ#1853705) - 在以前的版本中,web 控制台中的集群升级界面在 OpenShift Dedicated 上可见,即使 OpenShift Dedicated 用户无法执行集群升级。现在,OpenShift Dedicated 隐藏了集群升级界面。(BZ#1874257)
- 在以前的版本中,当提交表单或在表单和 YAML 视图间切换时,操作对象模板中的空对象会被修剪。在这个版本中,当从表单数据修剪空白结构时,模板数据用作掩码,仅修剪模板中没有定义的值。模板中定义的空值保留。(BZ#1847921)
- 当将鼠标悬停在 集群日志记录圆饼图上时,工具提示详情有时会被截断。在这个版本中,启用了整个工具提示描述来显示这个图表。(BZ#1842408)
- 对于 Create Instance 页面中的 Registry 字段,schema 属性描述中的一些文本与在 Linkify 中创建 fuzzy hyperlinks 的格式匹配。这会产生意想不到的超链接。此程序错误修复会在 Linkify 中禁用 fuzzy link 功能。现在,只有使用正确协议方案的 URL 字符串才会显示超链接。(BZ#1841025)
-
即使
ListDropdown
组件没有处于加载状态,AWSSecret
字段也始终显示正在加载图标。此程序错误修复了组件逻辑,因此正在加载图标仅在下拉列表处于加载状态时才会显示。当下拉列表没有处于加载状态时,会显示占位符。(BZ#1845817) - 在以前的版本中,当日志包含长行时,Web 控制台中的 Resource Log 页面会变得缓慢或者无响应。在这个版本中解决了性能问题,方法是限制 Resource Log 页中显示的每个日志行的字符数,并提供查看完整日志内容的替代方法。(BZ#1874558)
- 在以前的版本中,因为查询不正确,对 Used 和 Total 的节点文件系统计算不正确。现在,查询已被更新并正确计算数据。(BZ31874028)
- web 控制台中的 Overview 页面错误地包括用于显示网络使用数据的容器级别用量指标。在这个版本中,带有节点级使用数据的不正确的 metric 已被替换,现在可以正确显示网络使用率数据。(BZ#1855556)
- 在以前的版本中,Operator 的 Created At 的时间戳并不需要特定格式,从而导致 web 控制台中显示的时间戳不一致。现在,如果 Created At 数间缀的值作为 operator 的有效日期输入,时间戳会与控制台中其他时间戳的显示一致。如果没有使用有效日期格式输入该值,则 Created At 时间戳会显示为无效的字符串。(BZ#1855378)
- Web 控制台为 OperatorHub 显示一个旧的徽标。在这个版本中,当前徽标替换了旧的徽标。(BZ#1810046)
- 在以前的版本中,Operator 资源字段名称在 web 控制台中显示不一致(camelCase 或 Start Case )。现在,操作对象表单生成逻辑默认使用 Start Case 来标记表单字段。使用 CSV 或 CRD 对象可以覆盖默认设置。(BZ#1854196)
-
在以前的版本中,如果 Resource Log 视图缺少了新行控制字符(
/n
),则资源日志视图不会显示单行日志,也不会显示 pod 日志的最后一行。现在,日志视图已被更新以显示整个 pod 日志内容的单个行日志和日志的最后一行,这些日志行没有使用 newline 字符终止。(BZ#1876853) -
在以前的版本中,OpenShift Container Platform Web 控制台 YAML 编辑器允许所有资源的
metadata.namespace
条目。当为没有命名空间值的资源添加namespace: <namespace>
时,会返回一个错误。现在,如果资源没有命名空间值时,在保存一个配置时metadata.namespace
条目会被移除。(BZ#1846894) -
在以前的版本中,名称值编辑器的删除图标(
-
)没有提供 tooltip,因此用户不知道此图标的作用。删除图标(-
)现在带有一个 tooltip,因此用户可以更方便地了解它的用途。(BZ#1853706) -
在以前的版本中,带有特殊字符(如
(
和)
)的资源名称可能会阻止在 OpenShift Container Platform 控制台中显示资源详情。现在,当资源名称带有特殊字符时,资源详情会被正确显示。(BZ#1845624)
监控
-
在以前的版本中,当配置没有被完全生成时,Prometheus 的配置重新加载有时会被触发,这会触发
PrometheusNotIngestingSamples
和PrometheusNotConnectedToAlertmanagers
警报,因为没有 scrape 或 alerting 目标。现在,配置重新加载过程会确保磁盘上的配置在重新加载 Prometheus 前有效,且不会触发警报。(BZ#1845561) -
在以前的版本中,
AlertmanagerConfigInconsistent
警报会在升级过程中触发,因为有些 Alertmanager pod 因有状态集的滚动更新而暂时没有运行。尽管警报会自行解决,但这可能会给集群管理员造成混乱。AlertmanagerConfigInconsistent
不再考虑运行 Alertmanager pod 的数量,因此当某些 Alertmanager Pod 处于非运行、瞬时状态时,它不会在升级过程中触发。(BZ#1846397) -
在以前的版本中,有些警报没有正确的严重性设置或者不正确,从而导致升级问题。很多警报的严重性级别已从 critical 改为 warning,
KubeStatefulSetUpdateNotRolledOut
和KubeDaemonSetRolloutStuck
警报已调整,KubeAPILatencyHigh
和KubeAPIErrorsHigh
警报已被删除。现在,这些警报是正确的,不会造成升级问题。(BZ#1824988) -
在以前的版本中,
KubeTooManyPods
警报使用kubelet_running_pod_count
,其中包含完成的 pod,因此KubeTooManyPods
警报不正确。现在,利用container_memory_rss
来查找KubeTooManyPods
警报节点上运行的实际 pod 数量。(BZ#1846805) -
在以前的版本中,
node_exporter
守护进程会默认把maxUnavailable
设置为1
,因此 rollout 被完全序列化且在大型集群中速度较慢。因为node_exporter
守护进程的设置不会影响工作负载的可用性,所以maxUnavailable
值现在会根据集群的大小进行扩展,从而可以更快地推出部署。(BZ#1867603)
网络
-
在这个版本中,Kuryr-Kubernetes 会尝试检测 Container Network Interface(CNI)级别上的 pod 子端口的桥接接口,而不是使用
kuryr.conf
中设置的值。这种方式支持,当 VM 调用在没有使用在kuryr.conf
中设置的值的接口的情况。(BZ#1829517) - 在以前的版本中,OpenShift SDN 公开了未通过 HTTP 加密的指标。现在,OpenShift SDN 通过 TLS 公开指标数据。(BZ#1809205)
- 在以前的版本中,当闲置服务 OpenShift SDN 时,并不总是以正确顺序删除服务及其端点。因此,有时服务的节点端口没有被删除。当服务再次扩展时,服务无法访问。现在,OpenShift SDN 可确保节点端口始终被正确删除。(BZ#1857743)
- 在以前的版本中,因为缺少了对旧 iptables 二进制文件的依赖,出口路由器 Pod 无法初始化。现在,出口路由器 Pod 可以成功初始化。(BZ#1822945)
- 在以前的版本中,当删除使用 OVN-Kubernetes 网络供应商的集群中的网络策略时,一个竞争条件会阻止在删除关联的命名空间时正确删除网络策略。现在,网络策略对象总是被正确地删除。(BZ#1859682)
-
在以前的版本中,当在多租户隔离模式下使用 OpenShift SDN Pod 网络供应商时,pod 无法访问由
externalIPs
设置配置的服务。现在,pod 可以通过配置了服务外部 IP 地址来访问服务。(BZ#1762580) - 在以前的版本中,OVN-Kubernetes 使用 HTTP 以未加密的形式公开指标。现在,OVN-Kubernetes 会通过 TLS 公开指标数据。(BZ#1822720)
- 在以前的版本中,在 Red Hat OpenStack Platform 上的 OpenShift Container Platform 中,当使用 OVN-Octavia 驱动时,无法将监听程序附加到同一端口的不同协议中。现在,有可能在同一端口上公开多个协议。(BZ#1846396)
节点
- 在以前的版本中,如果没有指定软驱除阈值和宽限期,Kubelet 将无法启动。在这个版本中,在 Kubelet 配置过程中会验证这些值是否存在。(BZ#1805019)
- 因为用户可以在 kubeconfig 对象的 CPU 和内存请求中输入无效字符(如负值、非数字字符等),所以 kubelet 不会启动。代码已被修改,以验证 kubelet 配置内存请求值是否有效。因此,无效的值会被拒绝。(BZ#1745919)
- 在以前的版本中,如果系统在 root 设备中使用设备映射器,则 cadvisor 返回的很多密钥主机级别 IO 指标被错误地设置为零。如果设备映射器用于 root,cadvisor 会被修复来报告这些指标。(BZ#1831908)
oauth-apiserver
-
在以前的版本中,当 Authentication Operator 从忽略
Accept: application/json
标头的 OpenID Connect Authentication(OIDC)服务器中接收 HTML 有效负载时,Operator 会记录有关有效负载的错误。现在,Operator 包括了它请求的页面的 URL,用来帮助对 OIDC 服务器响应进行故障排除。(BZ#1861789)
oc
-
在以前的版本中,
oc project
命令需要self-provisioner
角色的权限来切换项目。这意味着,如果用户没有该角色,则无法切换项目。删除了对self-provisioner
角色的要求,因此任何有权访问项目的用户现在都可以使用oc project
切换项目。(BZ#1849983) -
在以前的版本中,当对一个带有空的
lastTimestamp
的事件进行排序时,根据lastTimestamp
对事件进行排序可能会导致错误。现在,在存在空项时进行排序也可以正常运行,使用lastTimestamp
排序可以正常工作。(BZ#1880283) -
在以前的版本中,
oc create job
命令缺少处理--save-config
标志的逻辑,因此--save-config
选项无法正常工作。现在,增加了处理--save-logic
标志的逻辑,它现在可以正常工作。(BZ#1844998)
OLM
-
Operator Lifecycle Manager(OLM)在 subscription CRD 中公开
subscription.spec.config.nodeSelector
字段,但之前没有将nodeSelectors
标签应用到ClusterServiceVersion
对象(CSV)中定义的部署。这会导致用户无法在其 CSV 部署上设置nodeSelectors
。在这个版本中更新了 OLM,以传播subscription.spec.config.nodeSelector
字段中定义的nodeSelector
标签,以在 CSV 中部署。因此,字段现在可以正常工作。(BZ#1860035) -
在以前的版本中,当安装多次进入
安装
阶段的ClusterServiceVersion
对象(CSV)时,Operator Lifecycle Manager(OLM)不会重复使用现有的有效 CA 证书。OLM 将新的 webhook 哈希应用到部署,从而导致创建新的副本集。然后,运行的 Operator 会重新部署,可能在安装过程中多次运行。在这个版本中更新了 OLM,以检查 CA 是否已存在,并在有效时重复使用它。因此,如果 OLM 检测到现有的有效 CA,OLM 现在会重复使用该 CA。(BZ#1868712) -
Operator Lifecycle Manager(OLM)将
OwnerReferences
元数据附加到为提供 API 服务的 Operator 安装的资源。在以前的版本中,当 OLM 重新部署此类的 Operator 时(例如在证书轮转过程中),会将一个重复的OwnerReference
附加到相关服务中,从而导致OwnerReferences
数量增加未绑定。在这个版本中,在添加OwnerReferences
时,如果没有找到,OLM 会更新现有的OwnerReference
。因此,OLM 附加到服务中的OwnerReferences
数被绑定。(BZ#1842399) -
在以前的版本中,Operator Lifecycle Manager(OLM)在试图解包它们前不会拉取捆绑包镜像,从而导致
opm alpha bundle validate
命令失败,并显示image not found
或类似的错误。在这个版本中更新了 OLM 来拉取捆绑包镜像,然后再尝试在捆绑验证器中解包。因此,opm alpha bundle validate
命令在执行验证前可以成功拉取和解包镜像。(BZ#1857502) - 在以前的版本中,web 控制台会返回软件包中声明的第一个频道中的图标,从而在 OperatorHub 中显示 Operator 图标。这有时会导致显示的图标与在软件包中发布的最新图标不同。这可以通过从默认频道中选择图标来确定最新的图标被显示。(BZ#1843652)
-
在以前的版本中,当使用
podman
或docker
工具选项时,whiteout 文件会出现在未打包的内容中。在这个版本中,在使用podman
和docker
工具选项解包后,将不会再有 whiteout 文件。(BZ#1841178)
openshift-controller-manager
- 在以前的版本中,在 API 服务器有时无法使用的情况下,可能会导致 OpenShift Controller Manager Operator 在获取部署时出现问题。检索部署失败有时会导致 Operator 出现问题。在这个版本中,添加了相应的检查来处理和报告这个错误条件,并重试操作。Operator 现在可以正确地处理从 API 服务器获取部署的操作。(BZ#1852964)
RHCOS
- 在以前的版本中,在没有 DHCP 的网络上带有大量 NIC 的机器需要很长时间才能引导。这是因为 initramfs 使用旧的网络脚本试图逐个在机器的每个接口上启用 DHCP。现在,initramfs 使用 NetworkManager 而不是旧脚本。NetworkManager 不会在任何没有物理连接的接口上尝试 DHCP。NetworkManager 还尝试并行接口 DHCP,而不是逐个进行。这些更改减少了 DHCP 超时等待的时间。(BZ#1836248)
在以前的版本中,在安装过程中无法修改内核参数。现在,可以使用
coreos-installer
命令在安装的系统中修改内核参数。例如,您可以将安装的系统配置为使用不同的串口控制台参数:$ coreos-installer install ... \ --delete-karg console=ttyS0,115200n8 \ --append-karg console=ttyS1,115200n8
- 当 MCO 用于部署 worker 节点时,加载文件会失败,因为用户配置 Ignition 配置中的 iSCSI initiator 名称自动替换为动态生成的名称。现在,只有在 Ignition 配置中没有指定名称时,才会动态生成 iSCSI initiator 名称。(BZ#1868174)
- 置备过程中对 Azure VM 的手动更改会更改停滞号,从而导致 afterburn 读取状态报告失败,因为停滞号不匹配。Afterburn 现在获取一个全新的 incarnation 号码(在提交就绪状态前)。(BZ#1853068)
- 在控制台中无法看到某些接口,如绑定接口。NetworkManager 分配脚本代替之前使用的 Udev 规则。在这个版本中,启用了具有永久硬件地址或者由带永久硬件地址的设备支持的网络接口可以在控制台中显示。(BZ#1866048)
路由
- 在以前的版本中,HAProxy 路由器 503 页与一些 Web 应用程序防火墙使用的标准不相符。503 页已被更新来解决这个问题。(BZ#1852728)
当 Ingress Operator 在协调为
NodePortService
端点发布策略类型配置的IngressController
对象时,Operator 会从 API 获取 ingresscontroller 的NodePort
服务,以确定 Operator 需要创建或更新服务。如果服务不存在,Operator 会创建它,其spec.sessionAffinity
字段带有一个空值。如果服务存在,Operator 会将其与 Ingress Operator 的预期进行比较,以确定是否需要更新该服务。在此比较中,如果 API 为服务spec.sessionAffinity
字段设置了默认值None
,Operator 会检测到更新,并尝试将spec.sessionAffinity
字段设置为空。因此,Ingress Operator 会重复尝试更新
NodePort
服务。Ingress Operator 已进行了修改,在比较NodePort
服务时认为未指定值和默认值是相等的。Operator 不再更新 IngressControllerNodePort
服务以响应 API 的默认设置。(BZ#1842742)-
在以前的版本中,如果您使用不正确的路由更新集群,HAProxy 将初始化为失效状态。但是,更新不会触发任何警报,集群会错误地报告 Ingress Controller 可用。HAProxy 初始同步逻辑已修正,带有有故障路由的升级会失败。因此,无法成功升级带有不正确路由的集群,并发出
HAProxyReloadFail
或HAProxyDown
警报。(BZ#1861455) - 由于使用 HTTP/2 ALPN 时连接有重复使用的风险,所以在 CLI 中的 Ingress Controller 的输出中添加了警告消息,用于仅在使用自定义(非通配符)证书的路由上启用 HTTP/2 ALPN。因此,没有其自身自定义证书的路由在前端或后端上都不会是启用了 HTTP/2 ALPN 的路由。(BZ#1827364)
- 在以前的版本中,当重新载入 HAProxy 时,HAProxy Prometheus counter 指标会降低,这明确违反了计数器指标的定义。相关的路由器代码已修复,以记录最后一次指标提取的时间。这会在重新加载时防止提取超过保留的计数值。因此,计数指标不会在路由器重新加载时显示突然增长,然后会降低。(BZ#1752814)
Samples
-
在以前的版本中,Samples Operator 的警报规则会错误地解析
registry.redhat.io
主机名。该规则现在在警报信息中使用正确的主机名。(BZ#1863014) - 在以前的版本中,当升级 OpenShift Container Platform 时,如果 API 服务器间不可用,Samples Operator 可能会阻止升级。现在,Operator 会适当处理网络连接不稳定的问题,它不再会阻止升级。(BZ#1854857)
存储
-
Local Storage Operator 日志记录的错误消息内容不具体,因此对调试没有太大帮助。现在,当创建
LocalVolume
对象且指定设备未找到或无效时,会提供额外的详细信息。(BZ#1840127) -
当 v1alpha1 CRD 为
Upgradable=False
时,Storage Operator 将停止协调。因此,当集群中检测到这些 CRD 时,Cluster Storage Operator 无法执行 z-stream 升级。这个版本修改了协调循环的顺序。现在,z-stream 升级可以成功完成,v1alpha1 CRD 会被检测到且没有错误。(BZ#1873299) - NFS 驱动程序 Pod 重启后无法卸载 Manila 卷,因为重启过程为 pod 分配了新的 IP 地址。现在,pod 使用主机网络和主机 IP 地址来挂载和卸载卷,即使在重启驱动程序 Pod 后也是如此。(BZ#1867152)
- 在这个版本中,在更改一个较小卷的 fsGroup 时,减少了不重要的日志数据。(BZ#1877001)
- 在罕见的情况下,因为负载过重,在 vSphere 云供应商中会导致持久性卷置备失败。现在,这个问题已被修复,vSphere 卷的置备非常可靠。(BZ#1806034)
-
当集群手动安装了 v1alpha1
VolumeSnapshot
CRD 或独立 CSI 驱动程序时,从 OCP 4.3.z 升级到 4.4.0 时会失败。OpenShift Container Platform 4.4 引入了 v1beta1VolumeSnapshot
CRD,它们与 v1alpha1VolumeSnapshot
CRD 不兼容。现在,Cluster Storage Operator 会检查 v1alpha1VolumeSnapshot
CRD 是否存在。如果存在,会显示一条消息表示必须删除 v1alpha1VolumeSnapshot
CRD 才能进行升级。(BZ#1835869) -
当修改
VolumeSnapshotContent
对象删除策略时,VolumeSnapshot
资源实例无法被删除,因为没有更新与这些实例关联的结束程序。在这个版本中,在VolumeSnapshotContent 对象
删除策略被修改时会删除终结程序,并允许在相关资源对象被删除后删除VolumeSnapshot
资源实例。(BZ#1842964) -
在以前的版本中,默认的 OpenShift RBAC 规则不允许常规用户访问或创建
VolumeSnapshot
和VolumeSnapshotClass
资源实例。现在,默认的 OpenShift RBAC 规则允许基本用户读/写VolumeSnapshot
资源并读取VolumeSnapshotClass
资源。另外,storage-admins 可以在默认情况下读/写VolumeSnapshotContent
对象。(BZ#1842408) - 在以前的版本中,没有相关的验证来防止 Local Storage Operator 创建一个设备到多个 PV。在这个版本中,添加了对这种情况的验证。现在,在已由 Local Storage Operator 置备的块设备上尝试创建 PV 将失败。(BZ#1744385)
Insights Operator
- 在以前的版本中,Insights Operator 可以在单个报告中为无限数量的证书签名请求(CSR)收集数据。这会导致对有很多 CSR 的集群进行过度数据收集。Insights Operator 现在在单个报告中收集最多 5000 CSR 的数据。(BZ#1881044)