做外贸有哪些好的网站有哪些,wordpress无法上传exe,总工会网站建设方案,招商网站建设地点集群调度#xff1a;
Scheduler的调度算法#xff1a;
预算策略
过滤出合适的节点
优先策略
选择部署的节点
NodeName#xff1a;硬策略#xff0c;不走调度策略#xff0c;node1
nodeSelector#xff1a;根据节点的标签选择#xff0c;会走一个调度算法
只要是…集群调度
Scheduler的调度算法
预算策略
过滤出合适的节点
优先策略
选择部署的节点
NodeName硬策略不走调度策略node1
nodeSelector根据节点的标签选择会走一个调度算法
只要是走调度算法在不满足预算策略的情况下所有的pod都是pending Node节点的亲和性
硬策略必须满足的条件。匹配原则根据节点的标签
软策略尽量满足而不是一定满足 以上说的都是node节点 接下来我们来说pod的
亲和性和反亲和性 调度策略 匹配标签 操作符 拓扑域 调度目标
Node的亲和性 主机标签 in¬in exists doesNotExist Gt Lt 不支持 指定主机
Pod 的亲和性 pod的标签 in notin exists doesnotexist 支持 pod和指定标签的pod部署在同一拓扑图
Pod的反亲和性 pod的标签 in notin exists doesnotexist 支持 拓扑域
k8s集群节点当中的一个组织结构可以根据节点的物理关系或者逻辑关系进行划分可以用来表示节点之间的空间关系网络关系或者其他类型的关系
标签主机标签
Pod 注意点
Pod的亲和性和策略在配置时必须加上拓扑域的关键字topologykey,指向节点标签
Pod亲和性的策略分为硬策略和软策略
Pod亲和性的notin可以替代反亲和性
Pod亲和性主要是为了把相关联的pod部署在同一节点
你在进行部署的时候怎么考虑node节点
污点和容忍可以配合node节点一块使用 演示 演示 解析 添加标签 另外一种方式:
硬策略 软策略写法 反亲和性
软策略 硬策略 污点
是node的调度机制不是pod
被设为污点的节点不会部署pod
污点和亲和性相反亲和性是尽量选择和一定选择
污点的节点一定不被选择吗
Taint三种
NoSchedule:k8s不会把pod调度到这个节点上preferNoSchedule如果污点类型是他只是尽量避免把pod部署在该节点上而不是一定NoExecute:如果污点类型是它的话k8s将会把该节点pod驱逐出去而且也不会调度到这个节点基于控制器创建的pod虽然被驱逐会在其他节点部署自主pod会被直接杀死
注意点:节点服务器需要维护时服务器关机节点上的pod将会失效在工作中我们主要部署pod的方式控制控制器部署deployment最多的一旦节点设置被驱逐控制器创建的pod会在其他节点继续部署
所有的pod都会被驱逐更命名空间无关所有的一切都会被驱逐不论你的创建方式是什么都会被驱逐系统集群组件不会被驱逐 查看污点命令
kubectl describe nodes node01 | grep -i taints 清缓存命令
echo 1 /proc/sys/vm/drop_caches 污点演示三种情况
第一种
设置污点 删除污点 第二种
尽量不调度 第三种
如果污点类型是它的话k8s将会把该节点pod驱逐出去而且也不会调度到这个节点 容忍
即使集群节点上设置了污点有了容忍机制依然可以在设置为污点的节点上部署pod
特殊情况NoExecute依然可以部署pod但是是有生命周期时间一到pod被销毁然后重新拉起。生命周期结束之后会驱逐一部分pod到其他节点上有点节点还是会保留在污点节点上。
该节点维护完毕测试一下节点的工作是否正常 删除所有污点 设置污点
kubectl taint node master01 key1:NoSchedule 配置容忍 设置为驱逐类型
kubectl describe nodes node01 | grep -i taints
kubectl taint node master01 key1:NoExecute
kubectl taint node node02 key1:NoSchedule- 设置容忍时间
apiVersion: apps/v1
kind: Deployment
metadata: labels: app: nginx2 name: nginx2
spec: replicas: 3 selector: matchLabels: app: nginx2 template: metadata: labels: app: nginx2 spec: containers: - image: nginx:1.22 name: nginx2 tolerations: - key: key operator: Equal value: 1 effect: NoExecute tolerationSeconds: 36 36秒之后被驱逐之后也会出现 演示污点容忍机制
kubectl describe nodes node01 | grep -i taints
kubectl taint node node02 key1:NoExecute- kubectl taint node node01 key1:NoSchedule 第二种情况 解析 指定key的值指标节点的标签但是不指定污点的类型那么所有节点上只要包含了这个指定的标签可以容忍所有的污点 没有key不匹配节点标签容忍所有污点但是类型是指定的类型 总结
Node的亲和性
Pod的亲和性和反亲和性
污点和容忍
总结起来就是如何选择节点部署pod选择一个期望的节点部署pod 举例
我有多个master节点
Kubectl taint node master节点名称
尽量不往master节点上部署pod但是不是一定的防止资源浪费自定义一个标签
业务维护
Node02需要维护两个小时但是这个节点上还有业务pod在运行
就需要把这个节点的污点设置为驱逐
我们部署pod一般都是使用deployment部署的pod会在其他节点重新部署并不是被杀死自主试的pod会被杀死
一旦节点恢复一定要把污点去除 Cordon和drain
Cordon可以直接把节点标记为不可用状态
Drain排水把该节点下的pod全部转移到其他的node节点上云霄
一旦执行了drain被执行的节点就会变成不可调度状态
会驱逐该节点上的所有pod 清空污点
kubectl taint node node02 key1:NoExecute-
kubectl describe nodes master01 | grep -i taints 演示Drain 解析
kubectl drain node02 --ignore-daemonsets --delete-emptydir-data --force Drain排水标记node节点为不可调度然后驱逐pod
--ignore-daemonsets:忽视daemonset部署的poddaemonset部署的pod还在节点
--delete-local-data:有本地挂载卷的pod会被强制杀死
--force强制释放不是控制器管理的pod 如何改回来 重点
node亲和性
Pod亲和性
污点NoExeccute驱逐
Cordon和drain
--ignore-daemonset daemonset部署的一般是重要后台运行的系统pod所以不动 总结
Node亲和性
Pod亲和性
Pod反亲和性
污点NoExecute
容忍
Cordon
Drain
如何部署pod时比较重要的集群调度机制合理的配置pod的调度机制可以是资源最大化应用