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
相关推荐
代码欢乐豆42 分钟前
编译原理机测客观题(7)优化和代码生成练习题
数据结构·算法·编译原理
祁同伟.1 小时前
【C++】二叉搜索树(图码详解)
开发语言·数据结构·c++·容器·stl
Joy T2 小时前
Solidity智能合约存储与数据结构精要
数据结构·区块链·密码学·智能合约·solidity·合约function
海绵宝宝的好伙伴2 小时前
【数据结构】哈希表的理论与实现
数据结构·哈希算法·散列表
Aqua Cheng.2 小时前
代码随想录第七天|哈希表part02--454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
java·数据结构·算法·散列表
zym大哥大2 小时前
哈希表封装myunordered_map以及set
数据结构·散列表
怀揣小梦想2 小时前
跟着Carl学算法--哈希表
数据结构·c++·笔记·算法·哈希算法·散列表
Kent_J_Truman2 小时前
【模拟散列表】
数据结构·算法·蓝桥杯·散列表·常识类
努力努力再努力wz2 小时前
【C++进阶系列】:万字详解unordered_set和unordered_map,带你手搓一个哈希表!(附模拟实现unordered_set和unordered_map的源码)
java·linux·开发语言·数据结构·数据库·c++·散列表
加油=^_^=2 小时前
【C++】哈希表
数据结构·c++·散列表