如何使同组 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 表示同一主机。
如何使同组 pod 被分配到不同节点上相关推荐
- k8s核心技术-Pod(调度策略)_创建Pod流程_比如一个nginx的Pod创建后如何被分配到某个节点上---K8S_Google工作笔记0024
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 之前咱们说,咱们创建pod可以通过yaml,也可以通过 kubectl run 这个命令来创建 可 ...
- Pod在多可用区worker节点上的高可用部署
一. 需求分析 当前kubernetes集群中的worker节点可以支持添加多可用区中的ECS,这种部署方式的目的是可以让一个应用的多个pod(至少两个)能够分布在不同的可用区,起码不能分布 ...
- Pod在多可用区worker节点上的高可用部署 1
一. 需求分析 当前kubernetes集群中的worker节点可以支持添加多可用区中的ECS,这种部署方式的目的是可以让一个应用的多个pod(至少两个)能够分布在不同的可用区,起码不能分布 ...
- 如何轻松地将可访问LAN的Pod部署到Kubernetes集群上
撰者 | Jack Wallen 译者 | Katie,责编 | Jerry 来源 | CSDN云计算 封图 | CSDN 下载自视觉中国 想要在Kubernetes集群上部署可访问LAN的Pod来达 ...
- Kubernetes 中 设置pod不部署在同一台节点上
在k8s中,节点的调度主要由亲和性和污点来进行控制的. 而在亲和性部分由分为了节点亲和性和节点反亲和性. 节点亲和性是指在pod部署时,尽量(软策略)或者必须满足(硬策略)部署在某些节点上. ...
- struct对象可能分配在托管堆上吗
struct对象可能被分配在托管堆上吗? --会的. 比如当对struct装箱的时候,就会被分配在托管堆上. 比如,让一个struct实现一个接口. public interface IReport ...
- k8s pod之间不能通信_Kubernetes的工作由两个pod组成(必须在不同的节点上运行并相互通信)...
我正在尝试创建一个包含两个pod的Kubernetes作业,这两个pod必须在我们的Hybrid集群中的不同节点上进行调度 . 我们的要求是其中一个pod在Windows Server节点上运行而另一 ...
- linux用独显运行steam,Steam使数以千计的Windows游戏可以在Linux上轻松玩
Steam使数以千计的Windows游戏可以在Linux上轻松玩 Mark Do 2018年9月5日 暂无评论 阅读 5,183 次 众所周知,Linux游戏库只是Windows游戏库中的一小部分.这 ...
- k8s之Pod驱逐迁移和Node节点维护
本篇是基于k8s-v1.18.0版本,参考https://cloud.tencent.com/developer/article/1552452. 一.环境说明 主机名 ip 系统版本 docker版 ...
最新文章
- php thrift 报错,thrift安装遇到的问题以及解决方法(必看篇)
- 广域网设备:远程路由器/交换机/服务器—Vecloud
- 使用Jest操作ElasticSearch 报错:No time zone indicator问题的解决方案
- 微信门店小程序怎样创建 门店小程序创建方法简介
- angular五大服务顺序_建议收藏 | 一篇文章告诉你工种的进场顺序
- cannot bind to cxOutlet since it is not a known property of ng template
- Swift--字符串和字符(一)
- python 入门学习
- 同事说rar压缩有风险,让我用zip压缩文件
- CDH6.2 Linux离线安装
- Android开发笔记(二十二)瀑布流网格WaterfallGridView
- openbsd下实现双网卡负载均衡
- 2016年 企业IT管理员需要做好这些准备
- 计算几何——多边形面积
- 微信发送文件卡死或黑屏
- 【BDTC 2016】交通与旅游大数据论坛:透过大数据看交通
- 电脑 | 更新后显示器无法实现夜间模式
- 港科夜闻|香港科大(广州)校长倪明选教授出席江门双碳实验室第一届理事会一次会议...
- 百度地图API--信息窗口
- 【设计模式】:23种设计模式
热门文章
- 广度优先搜索算法带图详解
- 2. ansible常用模块
- Java——(1)定义一个学生类Student,包含属性:姓名(String name)、年龄(int age) (2)定义Map集合,用Student对象作为key
- apple pencil 长时间没充电,连不上iPad
- jQuery JSON jPlayer实现QQ空间音乐查询
- linux删除 0 字节文件,如何恢复 Linux 上删除的文件
- java命令行打包war_命令行打包 war文件
- 微信小程序电商项目总结(1)
- foj2198 Problem 2198 快来快来数一数 dp 矩阵快速幂
- 太棒了 | 辞职之后,去了一趟新疆!