如何使同组 pod 被分配到不同节点上

一、背景

最近由于业务量激增,导致负责主要业务的 pod 副本数量不足,所以临时又增加了几个副本。本以为这样就 OK 了,但是没想到新增加的 pod 副本都被分配到了同一个节点上,致使该节点资源紧张最终出现异常(该节点上的 pod 副本无法正常启动)。

就此问题,下面的内容里我将介绍下我们的解决方案。

二、解决方案

我们是通过借助 K8s 的「pod 非亲缘性」来解决这个问题,先看一段儿 Deployment 的 yaml 文件片段截图:
在这里插入图片描述
字段解释:

  • podAntiAffinity
    通过定义 podAntiAffinity 来制定 pod 的非亲缘性策略,与此相反的是 podAffinity(亲缘性)。
  • requiredDuringSchedulingIgnoredDuringExecution
    通过该字段来决定 pod 非亲缘性是强制性要求(绝不允许 1 个以上的 annoroad-alpha pod 运行在同一个节点),与此相反的是软性要求(非强制性要求,也就是说 >=2 个 annoroad-alpha pod 运行在一个节点上也没啥大问题),我们可以通过 preferredDuringSchedulingIgnoredDuringExecution 来实现软性要求。
  • labelSelector
    这里的 labelSelector 和 Deployment 创建的 pod 匹配,如下图:
    在这里插入图片描述
  • topologyKey
    通过该字段来决定 pod 不能被调度的范围。可以使用这个字段来决定 pod 不能被调度到同一个机柜、可用性区域、地域,或者任何你创建的自定义节点标签标示的范围。这里的 kubernetes.io/hostname 表示同一主机。
  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cab5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值