google-kubernetes-engine - “谓词 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 存储库中关闭了几个问题,提到了这一点并声称已修复:
- https://github.com/kubernetes/kubernetes/issues/100467
- https://github.com/kubernetes/kubernetes/pull/99336
但问题仍然存在于 GKE 1.19.11 中。AFAIK gke 有自己的 Kubernetes 实现,所以.. 有没有人知道它是否真的在特定的 GKE 版本中得到解决?哪一个?即使没有..关于如何摆脱烦人的标志而不必手动/定期删除卡住的豆荚的任何想法?
在此先感谢,任何帮助都将受到欢迎。
解决方案
此问题会影响“1.19.11”版本下的 GKE 集群,因此如果您使用的是抢占式节点,将它们升级到“1.20.x”将是一种解决方法。请考虑到这个问题目前正在处理中,以便提供一个固定的解决方案。
请注意,虽然您可能会在数据处理过程中遇到延迟,但对工作负载应该没有影响。
除了手动删除之外,没有其他方法可以删除失败的 pod,但由于问题尚未解决,它们可能会重新出现。
暂时退出可抢占节点,因为此问题在常规节点上很少发生。
您可以在这个新问题跟踪器中跟踪更新
推荐阅读
- google-api - /androidpublisher/v3/applications/ 上的 403 禁止错误
- asp.net - 填充数据表时,传递给控制器的值为 null
- javascript - 将自定义 utf-8 字体添加到 jsPDF 导致“Uncaught TypeError: *.addFileToVFS is not a function”
- android - CodeceptJS + Appium = 应用程序不存在或不可访问
- python-3.x - Python Docx 缺少第一张图片
- c# - Xamarin(表单)iOS Entity Framework 迁移问题 - 实体上没有键(它是)错误
- python - 使用 python 处理复杂的 XML 数据
- r - 转置用户输入数据,Shiny 很慢
- slack - 发送消息时是否可以更改松弛的机器人图像和名称
- javascript - 这个 React 风格表达式的功能是什么?