首页 > 解决方案 > “谓词 NodeAffinity 失败”

问题描述

我有一个 GKE 集群,已更新为“v1.19.11-gke.2101”。

在该集群中,我们正在运行大量具有如下节点选择器的 pod:

      nodeSelector:
        cloud.google.com/gke-nodepool: default-pool

由于我更新了集群,因此 Pod 不时进入:

Status:         Failed
Reason:         NodeAffinity"

使用这些状态事件:

  Warning  NodeNotReady  55m   node-controller                                            Node is not ready
  Warning  NodeAffinity  53m   kubelet, gke-ef-gke-cluster-front-default-pool-bbda0bbf-t4js  Predicate NodeAffinity failed

问题是,即使状态为“失败”,其他 pod 也已成功调度,因此没有“真正的问题”,只是我想摆脱的恼人的红旗。

我看到在 kubernets GitHub 存储库中关闭了几个问题,提到了这一点并声称已修复:

但问题仍然存在于 GKE 1.19.11 中。AFAIK gke 有自己的 Kubernetes 实现,所以.. 有没有人知道它是否真的在特定的 GKE 版本中得到解决?哪一个?即使没有..关于如何摆脱烦人的标志而不必手动/定期删除卡住的豆荚的任何想法?

在此先感谢,任何帮助都将受到欢迎。

标签: google-kubernetes-engine

解决方案


此问题会影响“1.19.11”版本下的 GKE 集群,因此如果您使用的是抢占式节点,将它们升级到“1.20.x”将是一种解决方法。请考虑到这个问题目前正在处理中,以便提供一个固定的解决方案。

请注意,虽然您可能会在数据处理过程中遇到延迟,但对工作负载应该没有影响。

  • 除了手动删除之外,没有其他方法可以删除失败的 pod,但由于问题尚未解决,它们可能会重新出现。

  • 暂时退出可抢占节点,因为此问题在常规节点上很少发生。

您可以在这个新问题跟踪器中跟踪更新


推荐阅读