营销网站建设教程,现在做一个什么的网站比较好,汽车之家这样的网站怎么做,深圳seo优化外包nodeName#xff1a;硬匹配#xff0c;不走调度策略
nodeSelector#xff1a;根据节点的标签选择#xff0c;会走调度的算法
只要是走调度算法#xff0c;在不满足预算策略的情况下#xff0c;所有pod都是pending
node节点的亲和性#xff1a;
硬策略#xff1a;必…nodeName硬匹配不走调度策略
nodeSelector根据节点的标签选择会走调度的算法
只要是走调度算法在不满足预算策略的情况下所有pod都是pending
node节点的亲和性
硬策略必须满足的条件。匹配原则也是根据节点的标签
软策略尽量满足你的要求而不是一定满足
拓扑域k8s集群节点当中的一个组织结构可以根据节点的物理关系或者逻辑关系进行
可以用来表示节点之间的空间关系网络关系或者其他类型的关系
标签。主机标签
pod
node01 node02 node03
app1 app2 app3 pod的亲和性和反亲和性 调度策略 匹配标签 操作符 拓扑域 node的亲和性 主机标签 In Notin exists DoesNotExist Gt Lt 不支持 pod的亲和性 pod的标签 In Notin exists DoesNotExit 支持 pod的反亲和性 pod的标签 In Notin exists DoesNotExit 支持
注意点
1、pod的亲和性策略在配置时必须要加上拓扑域的关键字topologykey指向的是节点标签
2、pod亲和性的策略也分为硬策略和软策略。
3、pod亲和性的notIn可以替代反亲和性
4、pod亲和性只是为了把相关联的pod部署在同一节点。lnmp
污点和容忍可以配合node的亲和性一起使用
污点是node的调度机制 。不是pod
被设为污点的节点不会部署pod
污点和亲和性相反亲和性是尽量或者一定选择污点则是一定不被选择
污点的节点一定不被选择么
taint三种
1、NoscheduleK8S不会将pod调度到这个节点上
2、PreferNoschedule如果污点类型是这个那么只是尽量避免把pod布置在该节点上
3、NoExecute如果污点类型是他那么k8s将会把该节点上的pod全部驱逐出去而且也不会调度
基于控制器创建的pod虽然被驱逐但是会在其他节点重新部署
自主pod会被直接杀死
注意点节点服务器需要维护的服务器关机节点上的pod将会失效。在工作中我们主要部署Pod的方式控制器部署deployment最多的一旦节点设置为驱逐控制器创建的pod会在其他节点重新部署
所有的pod都会驱逐跟命名空间无关所有的一切都会被驱逐
不论你的创建方式是什么都会被驱逐
系统集群组件不会被驱逐
容忍
即使节点上设置了污点有了容忍机制依然可以在设置为污点的节点上部署pod
特殊情况 NoExecute依然可以部署pod但是有生命周期时间一到pod会被销毁重新拉起
生命周期结束之后会驱逐一部分pod到其他节点有的节点还是会保留在这个污点节点上 tolerations:- key: keyoperator: Exists
指定key的值指标节点的标签值但是不指定污点的类型
那么所有节点上只要包含了这个指定的标签名可以容忍所有的污点tolerations:- operator: Exists - effect: NoSchedule
没有key不匹配节点标签他会容忍所有污点但是类型是所指定的类型
node的亲和性
pod的亲和性和反亲和性
污点和容忍
如何选择node节点来部署pod
选择一个我期望的节点来部署pod
多个master节点
kubectl taint node master节点名称 node-role.kubernetes.io/masterPreferNoSchedule
尽量不往master节点上部署pod但是不是一定的防止资源浪费。自定义一个标签。
业务维护
node02需要维护两个小时
但是这个节点还有业务pod在运行
就需要把这个节点的污点设置为NoExwcute
部署pod一般都是使用deployment部署的Pod会在其他节点重新生成重新部署
自主式的Pod会被删除杀死
一旦节点恢复一定要把污点去除
cordon和drain
cordon可以直接把节点标记为不可用状态
drain排水把该节点下的pod全部转移到node节点上运行。
1、一旦执行了drain,node被执行的节点会变成不可调度状态
2、会驱逐该节点上的所有pod
kubectl drain node02 --ignore-daemonsets --delete-local-data --force
drain:标记node节点为不可调度。开始驱逐pod
--ignore-daemonsets忽视daemonsets部署的poddaemonsets部署的pod还在节点不做处理
--delete-local-data:有本地挂载卷的pod会被强制杀死
--force强制释放不是控制器管理的pod
node亲和性
pod的亲和性反亲和性
污点
NoExecute
cordon 可以直接用命令行来设置
drain
--ignore-daemonsetsdaemonsets部署的一般都是重要的后台运行的系统pod所以不动
重要的就是node亲和性pod亲和性反亲和性污点NoExcute
都有软策略和硬策略针对亲和和反亲和性来的
如何部署pod是比较重要的集群资源的调度机制合理的配置pod的调度机制可以使资源最大化利用