kubernetes 在节点压力下,DaemonSet滚动更新(surge > 1)期间重复创建和驱逐Pod

txu3uszq  于 10个月前  发布在  Kubernetes
关注(0)|答案(5)|浏览(94)

发生了什么?

当Kubernetes中DaemonSet的更新策略设置为RollingUpdate,并且maxSurge大于1时,我注意到一个问题,即如果节点的状态处于压力之下,系统会反复创建和驱逐Pods。这种行为产生了很多不必要的动荡,并可能导致系统资源出现问题。

你期望会发生什么?

像选项maxSurge为0时的行为

我们如何尽可能精确地重现它?

制造磁盘压力,然后部署这个

  1. apiVersion: apps/v1
  2. kind: DaemonSet
  3. metadata:
  4. name: nginx-daemonset
  5. spec:
  6. selector:
  7. matchLabels:
  8. name: nginx
  9. template:
  10. metadata:
  11. labels:
  12. name: nginx
  13. spec:
  14. containers:
  15. - name: nginx
  16. image: nginx:latest
  17. ports:
  18. - containerPort: 80
  19. updateStrategy:
  20. rollingUpdate:
  21. maxSurge: 1
  22. maxUnavailable: 0

我们需要了解其他信息吗?

实际上,我已经找到了问题所在。
maxSurge == 1时,这些代码运行得很好。因为我们遇到了这个问题,然后直接返回。
但是当maxSurge > 1时,它通过了那个检查点,然后遇到了这个问题。糟糕的是,它导致节点被添加到了nodesNeedingDaemonPods中。
也许当我们是inBackoff时,我们应该直接中断?

Kubernetes版本

主版本

云提供商

操作系统版本

  • 无响应*

安装工具

容器运行时(CRI)和版本(如适用)

相关插件(CNI、CSI等)和版本(如适用)

hts6caw3

hts6caw31#

这个问题目前正在等待分类。
如果SIG或子项目确定这是一个相关的问题,他们将通过应用triage/accepted标签并提供进一步的指导来接受它。
组织成员可以通过在评论中写入/triage accepted来添加triage/accepted标签。
有关使用PR评论与我互动的说明,请查看here。如果您对我的行为有任何问题或建议,请针对kubernetes/test-infra仓库提出一个问题。

ukdjmx9f

ukdjmx9f2#

/sig scheduling

mbjcgjjk

mbjcgjjk3#

  1. /remove-sig scheduling
  2. /sig node
rur96b6h

rur96b6h4#

/remove-sig node
/sig apps

fcipmucu

fcipmucu5#

Kubernetes项目目前缺乏足够的贡献者来充分应对所有问题。
此机器人根据以下规则对未分类的问题进行分级处理:

  • lifecycle/stale应用后的90天内无活动,将应用lifecycle/stale
  • lifecycle/stale应用后的30天内无活动,将应用lifecycle/rotten
  • lifecycle/rotten应用后的30天内无活动,将关闭该问题

您可以:

  • 使用/remove-lifecycle stale标记此问题为新鲜
  • 使用/close关闭此问题
  • 提供帮助,使用Issue Triage

请将反馈发送至sig-contributor-experience@kubernetes/community
/lifecycle stale

展开查看全部

相关问题