pod详解 list-watch机制 预选优选策略 如何指定节点调度pod

K8S是通过 list-watch 机制实现每个组件的协同工作

controller-manager、scheduler、kubelet 通过 list-watch 机制监听 apiserver 发出的事件,apiserver 也会监听 etcd 发出的事件

scheduler的调度策略:

预选策略(Predicates):通过调度算法过滤掉不满足条件的node节点;如果没有满足条件的node节点,Pod会处于Pending状态,直到有符合条件的node节点出现

PodFitsResources(根据Pod的requests资源量)、PodFitsHost(根据Pod的nodeName)、PodFitsHostPorts(根据Pod使用的端口)、PodSelectorMatches(根据Pod的节点标签选择器)、NoDiskConflict(根据Pod使用存储卷)

优选策略(Priorities):根据优先级选项为满足预选策略条件的node节点进行优先级排序,最终选择优先级最高的node节点来调度Pod

LeastRequestedPriority(倾向资源使用率更低的节点)、BalancedResourceAllocation(倾向CPU和内存使用率更接近的节点)、ImageLocalityPriority(倾向本地已有要使用的镜像的节点)

标签的管理操作:

复制代码
kubectl label <资源类型> <资源名称>  标签key=value                      #添加标签
kubectl label <资源类型> <资源名称>  标签key=value --overwrite          #修改标签
kubectl label <资源类型> <资源名称>  标签key-                           #删除标签

kubectl get <资源类型> [资源名称]  --show-labels
kubectl get <资源类型> -l 标签key[=value]

如何指定node节点调度Pod?

键值运算关系

●In:label 的值在某个列表中

●NotIn:label 的值不在某个列表中

●Gt:label 的值大于某个值

●Lt:label 的值小于某个值

●Exists:某个 label 存在

●DoesNotExist:某个 label 不存在

1)使用 nodeName 指定node节点名称

2)使用 nodeSelector 指定node节点的标签

3)使用 节点亲和性、Pod亲和性、Pod反亲和性'

节点亲和:

pod亲和:

pod反亲和:

4)使用 给node节点设置污点,Pod设置容忍

设置容忍:

复制代码
Pod设置容忍:tolerations(与containers字段同一层级)
spec:
  tolerations:
  - operator: Exists|Equal
    key: 污点key
    value:  污点value
    effect: NoSchedule|NoExecute|PreferNoSchedule

#其中的 key、vaule、effect 都要与 Node 上设置的 taint 保持一致
#operator 的值为 Exists 将会忽略 value 值,即存在即可
#tolerationSeconds 用于描述当 Pod 需要被驱逐时可以在 Node 上继续保留运行的时间

设置污点:

复制代码
Kubctl taint node 节点名称 污点key=[value]:类型
类型:NoSchedule(一定不被调度)    PreferNoSchedule(尽量不被调度)    NoExecute(不会被调度并驱逐Pod)

kubectl taint node 节点名称 污点key-

kubectl describle node 节点名称 | grep - A taints

设置节点不可调度:

复制代码
kubectl cordon 节点名称

kubectk uncordon 节点名称

kubectl taint node <节点名称>  key=:NoSchedule

设置节点不可调度并驱逐Pod

复制代码
kubectl drain <节点名称>  --ignore-daemonsets --delete-emptydir-data --force

kubectl taint node <节点名称>  key=:NoExecute
相关推荐
05664630 分钟前
Python康复训练——数据结构
数据结构·windows·python
冻柠檬飞冰走茶1 小时前
PTA基础编程题目集 7-27 冒泡法排序(C语言实现)
c语言·开发语言·数据结构·算法
noipp4 小时前
推荐题目:洛谷 P5843 [SCOI2012] Blinker 的噩梦
c语言·数据结构·c++·算法·游戏·洛谷·luogu
冻柠檬飞冰走茶4 小时前
PTA基础编程题目集 7-20 打印九九口诀表(C语言实现)
c语言·开发语言·数据结构·算法
红叶舞5 小时前
基于线段树的数据结构
数据结构·python·算法
断点之下5 小时前
从“理扑克牌”到“分组优化”——直接插入排序与希尔排序详解
数据结构·算法·排序算法
起个破名想半天了5 小时前
算法与数据结构之DFS深度优先遍历
数据结构·算法·深度优先
鱼子星_6 小时前
【C++】深入剖析list:list及其双向迭代器实现
开发语言·数据结构·c++·笔记·stl·list
江屿风7 小时前
【C++笔记】【二叉搜索树】流食般投喂
开发语言·数据结构·c++·笔记
爱吃提升16 小时前
MATLAB矩阵运算完全指南:从生成到索引操作
数据结构·matlab·矩阵