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选择部署策略)的主要内容,如果未能解决你的问题,请参考以下文章

k8s通过label来控制pod的位置

k8s学习-CKA真题-Pod指定节点部署

k8s学习-CKA真题-Pod指定节点部署

用 label 控制 Pod 的位置 - 每天5分钟玩转 Docker 容器技术(128)

Kubernetes Node Affinity

k8s日志收集 - 利用HOSTNAME环境变量对多个pod挂载不同目录方案