k8s:将pod部署到指定的node运行(pod&node选择部署策略)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s:将pod部署到指定的node运行(pod&node选择部署策略)相关的知识,希望对你有一定的参考价值。
参考技术A查看所有节点labels:
添加labels:
修改yaml配置文件:
添加nodeSelector配置,样式为[label.key]: [label.value]
修改后重启服务
参考文章: https://blog.csdn.net/lzy_zhi_yuan/article/details/106913428
nodeSelector配置相对简单,k8s提供了另外一个pod调度配置: nodeAffinity(节点亲和) ,相对于nodeSelector的简单匹配他拥有更多更加个性化的配置。
这段配置表示:该pod可以被调度到标签key为 "deploy.type" ,值为 "yztssjdxt-test" 或 "yztssjdxt" 的节点。
通过使用的语句不同,调度分成软策略(soft)和硬策略(hard) ,在软策略下,如果没有满足调度条件的节点,pod会忽略这条规则,继续完成调度。而硬策略下,pod必须部署到满足条件的节点上,如果没有满足条件的节点,就不停重试。
DuringScheduling和IgnoredDuringExecution组合生成目前主要的nodeaffinity策略
软硬策略可以组合使用 ,如下面这段配置中pod必须被调度到标签为 "deploy.type=yztssjdxt-test" 的节点。另外,在满足该条件的节点中,优先使用具有 "server=oms" 标签的节点。
nodeAffinity中nodeSelector字段下,节点满足任何一个条件即可;但更下一级matchExpressions,节点必须同时满足所有条件才能运行pod 。
如下面这段配置需要deploy.type=yztssjdxt-test、server=oms同时满足
而这段配置只需要deploy.type=yztssjdxt-test、deploy.type1=yztssjdxt满足一个即可
operator字段 :pod与node的匹配逻辑,可选的操作符有:(我只测过in、notin)
如下方这段配置,pod将不会调度到deploy.type=yztssjdxt-test的node上
以上是关于k8s:将pod部署到指定的node运行(pod&node选择部署策略)的主要内容,如果未能解决你的问题,请参考以下文章