k8s的node亲和性和pod亲和性和反亲和性 污点 cordon drain_pod亲和性与node亲和性的区别-程序员宅基地

技术标签: 运维  linux  服务器  

node亲和性和pod亲和性和反亲和性 污点 cordon drain

集群调度:

schedule的调度算法

预算策略

过滤出合适的节点

优先策略

选择部署的节点

nodeName:硬匹配,不走调度策略,node01

nodeSelector:根据节点的标签选择,会走调度的算法

只要是走调度算法,在不满足预算策略的情况下,所有pod都是pending状态。

node节点的亲和性:

硬策略和软策略

硬策略:必须满足条件,匹配原则也是根据节点的标签

软策略:尽量满足你的要求而不是一定满足

pod的亲和性和反亲和性

调度策略:   匹配标签 操作符 拓扑域 调度目标
node的亲和性 主机标签 In(在) Notin(不在) exists(:存在选择标签对象) DoesNotExist(不存在,选择不具有指定标签的对象) Gt(大于选择的标签值) Lt(小于选择标签值) 不支持 指定主机
pod的亲和性  pod的标签 In(在) Notin(不在) exists(:存在选择标签对象) DoesNotExist(不存在,选择不具有指定标签的对象) Gt(大于选择的标签值) Lt(小于选择标签值) 支持 pod和指定标签的pod部署同一拓扑域
pod的反亲和性  pod的标签 In(在) Notin(不在) exists(:存在选择标签对象) DoesNotExist(不存在,选择不具有指定标签的对象) Gt(大于选择的标签值) Lt(小于选择标签值) 支持 pod和指定标签的pod部署不同拓扑域

拓扑域:k8s集群节点当中的一个组织机构,可以根据节点的物理关系或者逻辑关系进行划分。可以用来表示节点之间空间关系,网络关系或者其他关系

标签,主机标签

注意点

1、pod的亲和亲和性策略,在配置时,必须要加上拓扑域,必须要加上拓扑域的关键字topologyKet,指向节点的标签

2、pod的亲和性的策略也分为硬策略和软策略

3、pid亲和性notin可以替代反亲和性

4、pod亲和性只要是为了把相关联的pod部署在同一节点,lnmp

你在进行部署的时候怎么考虑node节点

硬策略 软策略还有污点和容器可以配合node的亲和性一块使用

污点:是node调度机制,不是pod

被设为污点的节点不会部署pod

污点的亲和性相反,亲和性是尽量选择和一定选择

污点的节点一定不被选择

污点的名称taint

taint有三种:

1、NoSchedule:k8s是不会把pod调度这个节点上

2、PreferNoSchedule:如果污点类型是他,尽量避免把pod部署在该节点上,不是一定。(master节点的污点就是这个)

3、NoExecute:如果污点类型是它,k8s将会把该节点上pod全部驱除,而且也不会调度到这个节点,不是基于控制器创建pod的会被直接杀死,基于控制器创建pod的会在其他节点重新部署

基于控制器创建的pod,虽然被驱逐,会在其他节点重新部署

kubectl describe nodes node01 | grep -i taints #查看污点

kubectl taint node node01 key=1:NoSchedule #创建污点

kubectl taint node node01 key:NoSchedule- #删除NoSchedule污点

注意点:

节点服务器需要维护的,维护的情况下服务器关机,几点上的pod将会失效。在工作中主要主要部署pod的方式控制器部署,deployment控制器是最多的,一旦节点设置为驱逐,控制器创建的pod会在其他节点重新部署

1、所有的pod都会被驱逐,跟命名空间无关,所有的一切都会被驱逐

2、不会创建方式是什么,都会被驱逐

3、系统集群组件不会被驱逐

容忍机制:

即使节点上设置了污点有了容忍机制,依然可以在设置为污点的节点上部署pod.

特殊情况:NoExecute依然可以部署pod,但是有生命周期,时间一到pod会被销毁重新拉起 并不

生命周期结束之后,会驱逐一部分pod到其他节点,有的节点还是会保留在污点上,有的节点还是会保留在污点节点上

该节点维护完毕测试下节点的工作是否正常

tolerations:

-key: key operator: Exists

指定key的值,指标节点的标签值,但是不指定污点的类型,要么所有节点上只要包含了这个指定的标签名,可以容忍所有的污点

tolerations

-operator: Exists

-effect: Noschedule

没有key,不匹配节点标签,会容忍所有污点,类型是我指定的类型

node的亲和性

pod亲和性和反亲和性

污点和容忍

如何选择node节点部署pod

选择一个我期望的节点来部署pod

第一个例子

有多个master节点 一般会把kubectl taint node master名称 node-role.kubernetes.io/master=:PreferNoschedule

尽量不忘master节点上部署pod,但是不是一定的,防止资源浪费,自定义一个标签

业务维护:

node02需要维护2个小时

但是这个节点还有业务pod在运行

就需要把这个节点的污点设置为:NoExecute

我们部署pod一般都使用deployment部署,会在其他的重新部署,并不是被杀死

自主式的pod会被杀死

一点节点恢复,一定要污点去除

cordon和drain

cordon可以直接把节点标记为不可用状态

kubectl cordon node01 标记节点不可用

kubectl uncordon node01 删除标记不可用

drain:排水,把该节点下的po全部转移到其他node节点上运行

1、一旦执行drain,被执行的节点会变成不可调用状态

2、驱逐该节点上的所有pod

kubectl drain node02 --ignore-daemonsets --delete-local-data --force

drarin:排水,标记node节点为不可调度,然后驱逐pod

--ignore-daemonsets:忽视daemonsets部署的pod,daemonsets部署的pod还在节点

--delete-local-data:有本地挂载卷的会被强制杀死

--force:强制释放不是控制器管的pod

--ignore-daemonsets

还是如何来管理和部署pod

node亲和性和pod亲和性和反亲和性

污点 cordon drain

如何部署pod是比价重要的子群资源调度机制,合理的配置pod的调度机制可以是资源最大化利用

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_52416577/article/details/135478532

智能推荐

web自动化测试之登录_web自动化测试登录-程序员宅基地

文章浏览阅读2.4k次。1. 登录代码一共有4条用例,其中前3条是执行成功的,最后一条执行失败import unittestfrom selenium import webdriverimport timeclass TestLogin(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.driver.maximize_window() self.driver._web自动化测试登录

如何使用光盘启动计算机,电脑如何设置光驱启动 电脑设置光驱启动方法【图文】...-程序员宅基地

文章浏览阅读2.5k次。在我们所使用的电子网络工具中,其中电脑是最受人们的喜爱的,而用过电脑的人都会了解一下电脑光驱的功能,并且会需要知道光驱启动的设置是如何做到的,小编今天的文章就跟电脑光驱相关联,既然很多用户都想知道电脑光驱如何设置启动,小编今天的文章就来教会大家,电脑如何设计光驱启动的方法,其实这些方法都非常的简单,如何简单呢?就看小编的文章来告诉大家吧。电脑要设置光驱启动,那么首先人们就要想到在blos中设置,小..._电脑如何设置光驱启动

OSPF多区域配置与心得理解_多区域ospf配置-程序员宅基地

文章浏览阅读1.8w次,点赞11次,收藏81次。ospf 多区域文章目录ospf 多区域实验背景实验需求1.配置ip地址2.配置OSPF3查看R1,R4的邻居表4.强制发布一跳默认路由查看R1有没有收到默认路由5.在R3上使用静默接口测试PC ping外网6.6.6.66.查看路由实验背景实验需求1.配置IP地址2.完整配置ospf多区域3.查看邻居关系4.强制发布默认路由5.在R3的G0/0/1口配置静默接口6.验证路由表..._多区域ospf配置

WordPress有没有好的主题推荐?27个Ultra WordPress企业主题分享:不再有选择 困难症了_德语wordpress主题-程序员宅基地

文章浏览阅读1.4k次。如果你想为自己公司选一款简单好用的WordPress主题,那么可以看一下Ultra这款国外著名的多功能WordPress主题!_德语wordpress主题

解决Java整合minio错误:S3 API Request made to Console port. S3 Requests should be sent to API port-程序员宅基地

文章浏览阅读3k次,点赞8次,收藏4次。解决Java整合minio错误:S3 API Request made to Console port. S3 Requests should be sent to API port_s3 api request made to console port. s3 requests should be sent to api port.

VIP年卡低至7折,限时加赠618次下载,我不允许任何人不心动!_csdn优惠活动-程序员宅基地

文章浏览阅读8.7k次,点赞4次,收藏6次。618狂欢,年中特惠福利拉满!即刻起购买VIP年卡,买1年我们送1年!_csdn优惠活动

随便推点

windows远程提示credssp加密数据库修正问题解决_credssp加密数据库修正 远程桌面-程序员宅基地

文章浏览阅读8.4k次,点赞5次,收藏7次。背景:今天登录公司远程服务器的时候报如下错误(如下图所示),百度查了一下各种方法最终解决了,记录一下过程,防止以后遇到同样的问题需要再找,也可以为其它遇到同样问题的人提供帮助。步骤一. 修改注册表我先按照我们运维给我的一个链接进行修改,里面介绍说微软官方 2018 年 5 月更新了凭据安全支持提供程序协议(CredSSP)相关补丁和身份验证请求方式。当出现以下任一配置策略时会出现该连接错误:配置策略一:客户端的策略为未修补,服务器端策略为强制更新的客户端。配置策略二:客户端策略为强制更新的客户端_credssp加密数据库修正 远程桌面

SpringBoot + MyBatis + Sharding-JDBC4.X 实现数据库读写分离_springboot mybatis shardingjdbc读写分离-程序员宅基地

文章浏览阅读560次。1、说明,本文主要实现1主2从的读写分离主库: 添加、更新以及删除数据操作所使用的数据库。从库: 查询数据操作所使用的数据库。2、引用依赖包 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.42<_springboot mybatis shardingjdbc读写分离

RK3288_Android7.1平台基于DRM框架的LCD开发_android drm modetest-程序员宅基地

文章浏览阅读7.7k次,点赞4次,收藏50次。概述rk3288在kernel4.4开始使用的显示框架是基于DRM的。DRM全称是Direct Rendering Manager,管理进行显示输出的, buffer分配, 帧缓冲.libdrm库提供了一系列友好的控制封装, 使用户可以方便的进行显示的控制, 但并不是 只能通过libdrm库来控制drm, 用户可以直接操作drm的ioctl或者是使用framebuffer的 接口实现显示操作..._android drm modetest

计算机毕业设计选题分享-ssm 图书借阅管理系统06780(赠送源码数据库)程序含:JAVA、PHP,node.js,C++、python,大屏数据可视化等-程序员宅基地

文章浏览阅读937次,点赞25次,收藏21次。免费领取项目源码,请关注赞收藏并私信博主,谢谢-本系统的前端界面涉及的技术主要有SSM,HTML,jQuery等等,通过这些技术可以实现前端页面的美观和动态效果使之符合广大群众的审美观,后台主要使用的技术主要有Java编程语言,MySQL数据库,SSM框架和Ajax异步交互,根据Ajax异步模式的图书借阅管理系统解决了传统管理方式所带来的人力、物力和时间上的虚耗和交流深度的限定,这让交流的过程更快捷、准确、便利。

计算机键盘快速指南,MagicBook热键/功能键切换指南,快捷键介绍-程序员宅基地

文章浏览阅读3.8k次。本帖最后由 玩机技巧官方 于 2018-6-28 09:46 编辑对于笔记本电脑,轻薄便携、持久续航、专业性能,是大家比较注重的特性。但是你知道笔记本上与你最亲密的部件是什么吗?答案是键盘!很多人需要借助电脑工作,思路涌动,指尖在键盘翻飞。01.jpg (9.67 KB, 下载次数: 16)2018-6-28 09:34 上传那么你知道你一天敲击键盘的次数是多少吗?有数据显示,按连续工作5个小时计..._magicbookv14热键怎么开启

pom转Javabean_pom.xml解析为java bean-程序员宅基地

文章浏览阅读201次。让我这个菜鸟淡淡的忧伤一会1:项目中需要把pom文件转换成Java Bean,用于查看各个依赖的版本号。这里记录一下简单的demo。首先引入 <dependency> <groupId>com.thoughtworks.xstream</groupId> <artifactId>xstream</artifactId> <version&..._pom.xml解析为java bean

推荐文章

热门文章

相关标签