一、背景

最近由于业务量激增,导致负责主要业务的 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 表示同一主机。

如何使同组 pod 被分配到不同节点上相关推荐

  1. k8s核心技术-Pod(调度策略)_创建Pod流程_比如一个nginx的Pod创建后如何被分配到某个节点上---K8S_Google工作笔记0024

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 之前咱们说,咱们创建pod可以通过yaml,也可以通过 kubectl run 这个命令来创建 可 ...

  2. Pod在多可用区worker节点上的高可用部署

    一.      需求分析 当前kubernetes集群中的worker节点可以支持添加多可用区中的ECS,这种部署方式的目的是可以让一个应用的多个pod(至少两个)能够分布在不同的可用区,起码不能分布 ...

  3. Pod在多可用区worker节点上的高可用部署 1

    一.      需求分析 当前kubernetes集群中的worker节点可以支持添加多可用区中的ECS,这种部署方式的目的是可以让一个应用的多个pod(至少两个)能够分布在不同的可用区,起码不能分布 ...

  4. 如何轻松地将可访问LAN的Pod部署到Kubernetes集群上

    撰者 | Jack Wallen 译者 | Katie,责编 | Jerry 来源 | CSDN云计算 封图 | CSDN 下载自视觉中国 想要在Kubernetes集群上部署可访问LAN的Pod来达 ...

  5. Kubernetes 中 设置pod不部署在同一台节点上

    在k8s中,节点的调度主要由亲和性和污点来进行控制的.   而在亲和性部分由分为了节点亲和性和节点反亲和性.   节点亲和性是指在pod部署时,尽量(软策略)或者必须满足(硬策略)部署在某些节点上. ...

  6. struct对象可能分配在托管堆上吗

    struct对象可能被分配在托管堆上吗? --会的. 比如当对struct装箱的时候,就会被分配在托管堆上. 比如,让一个struct实现一个接口. public interface IReport ...

  7. k8s pod之间不能通信_Kubernetes的工作由两个pod组成(必须在不同的节点上运行并相互通信)...

    我正在尝试创建一个包含两个pod的Kubernetes作业,这两个pod必须在我们的Hybrid集群中的不同节点上进行调度 . 我们的要求是其中一个pod在Windows Server节点上运行而另一 ...

  8. linux用独显运行steam,Steam使数以千计的Windows游戏可以在Linux上轻松玩

    Steam使数以千计的Windows游戏可以在Linux上轻松玩 Mark Do 2018年9月5日 暂无评论 阅读 5,183 次 众所周知,Linux游戏库只是Windows游戏库中的一小部分.这 ...

  9. k8s之Pod驱逐迁移和Node节点维护

    本篇是基于k8s-v1.18.0版本,参考https://cloud.tencent.com/developer/article/1552452. 一.环境说明 主机名 ip 系统版本 docker版 ...

最新文章

  1. php thrift 报错,thrift安装遇到的问题以及解决方法(必看篇)
  2. 广域网设备:远程路由器/交换机/服务器—Vecloud
  3. 使用Jest操作ElasticSearch 报错:No time zone indicator问题的解决方案
  4. 微信门店小程序怎样创建 门店小程序创建方法简介
  5. angular五大服务顺序_建议收藏 | 一篇文章告诉你工种的进场顺序
  6. cannot bind to cxOutlet since it is not a known property of ng template
  7. Swift--字符串和字符(一)
  8. python 入门学习
  9. 同事说rar压缩有风险,让我用zip压缩文件
  10. CDH6.2 Linux离线安装
  11. Android开发笔记(二十二)瀑布流网格WaterfallGridView
  12. openbsd下实现双网卡负载均衡
  13. 2016年 企业IT管理员需要做好这些准备
  14. 计算几何——多边形面积
  15. 微信发送文件卡死或黑屏
  16. 【BDTC 2016】交通与旅游大数据论坛:透过大数据看交通
  17. 电脑 | 更新后显示器无法实现夜间模式
  18. 港科夜闻|香港科大(广州)校长倪明选教授出席江门双碳实验室第一届理事会一次会议...
  19. 百度地图API--信息窗口
  20. 【设计模式】:23种设计模式

热门文章

  1. 广度优先搜索算法带图详解
  2. 2. ansible常用模块
  3. Java——(1)定义一个学生类Student,包含属性:姓名(String name)、年龄(int age) (2)定义Map集合,用Student对象作为key
  4. apple pencil 长时间没充电,连不上iPad
  5. jQuery JSON jPlayer实现QQ空间音乐查询
  6. linux删除 0 字节文件,如何恢复 Linux 上删除的文件
  7. java命令行打包war_命令行打包 war文件
  8. 微信小程序电商项目总结(1)
  9. foj2198 Problem 2198 快来快来数一数 dp 矩阵快速幂
  10. 太棒了 | 辞职之后,去了一趟新疆!