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
相关推荐
AlexMercer1012几秒前
【C++】二、数据类型 (同C)
c语言·开发语言·数据结构·c++·笔记·算法
^^为欢几何^^2 小时前
lodash中_.difference如何过滤数组
javascript·数据结构·算法
ahauedu3 小时前
案例分析-Stream List 中取出值最大的前 5 个和最小的 5 个值
数据结构·list
X同学的开始5 小时前
数据结构之二叉树遍历
数据结构
AIAdvocate8 小时前
Pandas_数据结构详解
数据结构·python·pandas
jiao000018 小时前
数据结构——队列
c语言·数据结构·算法
kaneki_lh8 小时前
数据结构 - 栈
数据结构
铁匠匠匠8 小时前
从零开始学数据结构系列之第六章《排序简介》
c语言·数据结构·经验分享·笔记·学习·开源·课程设计
C-SDN花园GGbond8 小时前
【探索数据结构与算法】插入排序:原理、实现与分析(图文详解)
c语言·开发语言·数据结构·排序算法
CV工程师小林10 小时前
【算法】BFS 系列之边权为 1 的最短路问题
数据结构·c++·算法·leetcode·宽度优先