3.4. 已知限制
红帽构建的 Keycloak 升级过程中的停机时间
如果 可能出现滚动更新,可以通过启用检查补丁版本来解决此问题。
-
如果节点故障数大于或等于缓存配置的
num_owners,则多次节点故障可能会导致authenticationSessions、loginFailures和actionTokens缓存丢失条目,默认为 2。 使用带有
whenUnsatisfiable: ScheduleAnyways 的默认topologySpreadConstraints的部署,如果多个 pod 调度到失败的节点/区,则可能会在节点/区上出现数据。用户可以通过使用
whenUnsatisfiable: DoNotSchedule定义topologySpreadConstraints来缓解这种情况,以确保 pod 始终在区和节点间平均调度。但是,如果无法满足限制,这可能会导致一些红帽构建的 Keycloak 实例不会被部署。因为 Infinispan 在分发缓存条目时不知道网络拓扑,因此如果缓存数据的所有
num_owner副本都存储在失败的节点/区域中,则数据术语仍可发生在 node/availability-zone 失败时发生。您可以通过为节点和区定义requiredDuringSchedulingIgnoredDuringExecution将红帽构建的 Keycloak 实例总数限制为可用的节点或可用区的数量。但是,这代价是可扩展性,作为红帽构建的 Keycloak 实例的数量,这些实例可以被置备到 {kubernetes} 集群中的节点/可用区数量。有关如何配置自定义反关联性
拓扑SpreadConstraints策略,请参阅 Operator 高级配置详情。-
Operator 不会在 Pod 中配置站点的名称(请参阅 配置分布式缓存),因为它的值无法通过 Downward API 提供。machine name 选项使用调度 Pod 的节点的
spec.nodeName进行配置。