当前位置: 首页 > news >正文

kubernetes第七天

1.影响pod调度的因素

nodeName   节点名

resources     资源限制

hostNetwork   宿主机网络

污点

污点容忍

Pod亲和性

Pod反亲和性

节点亲和性

2.污点

通常是作用于worker节点上,其可以影响pod的调度

语法:key[=value]:effect

effect:[ɪˈfekt]

effect必须是NoSchedule、PreferNoSchedule或NoExecute。

NoSchedule: [noʊ,ˈskedʒuːl]

该节点不再接收新的Pod调度,但不会驱赶已经调度到该节点的Pod。

PreferNoSchedule: [prɪˈfɜːr,noʊ,ˈskedʒuː] 
该节点可以接受调度,但会尽可能将Pod调度到其他节点,换句话说,让该节点的调度优先级降低啦。

NoExecute:[ˈnoʊ,eksɪkjuːt] 
该节点不再接收新的Pod调度,与此同时,会立刻驱逐已经调度到该节点的Pod。

1.查看节点污点

kubectl describe nodes

2.创建10个pod,发现pod调度在232和233节点上

3.给k8s232打上污点

kubectl taint node k8s232 wudianmingzi=wudian:NoExecute


4.查看污点kubectl describe nodes|grep Taints,发现此时已经有污点

5.查看pod信息,发现此时所有pod都调度到k8s233上

6.移除污点:kubectl taint node k8s232 wudianmingzi-

7.移除污点,从新创建pod之后,pod能重新调度到pod上

命令总结:

查看污点:
kubectl describe nodes|grep Taints
制造污点帮助信息
kubectl taint --help
制造污点
kubectl taint node 节点名 key=value:NoExecute
value可省略
移除污点
kubectl taint node k8s232 key-NoExecute  移除现在节点所有的pod
NoSchedule 不移除,但是不会有新的pod
PreferNoSchedule  优先级降低

3.污点容忍

pod.spec.tolerations

spec:# 配置Pod的污点容忍tolerations:# 指定污点的key# 若不指定key,则operator的值必须为Exists,表示匹配所有的key- key: qq# 指定污点的valuevalue: ww# 指定污点的effect,有效值为: NoSchedule, PreferNoSchedule,NoExecute# 若不指定则匹配所有的影响度。effect: NoExecute# 表示key和value的关系,有效值为Exists, Equal。#    Exists:#      表示存在指定的key即可,若配置,则要求value字段为空。#    Equal:#      默认值,表示key=value。operator: Equal- key: weboperator: Exists- key: node-role.kubernetes.io/masteroperator: Exists# 如果不指定key,value,effect,仅配置"operator: Exists"表示无视任何污点!#- operator: Exists

例1:匹配所有key为web,value值为空,effect为NoExecute的污点

tolerations:
- key: "web"operator: "Exists"  # 当value为空时,使用Exists表示key存在即可effect: "NoExecute"

例2:匹配所有key为test,值为version1,effect为所有的污点

tolerations:
- key: "test"operator: "Equal"  # 当指定了具体的value时,使用Equal进行匹配value: "version1"effect: "*"  # "*"表示匹配所有可能的effect值

例3:忽视所有污点

tolerations:
- operator: "Exists"  # 使用Exists且不指定key和effect,表示容忍所有污点

补充:实现pod调度到特定两个pod上

给节点打标签:

kubectl label nodes k8s231 key=value

选择调度的节点(所有节点忽视所有污点,如上例三配置)

spec:nodeSelector:key=value...
注意:节点必须包含所有这里的标签,才会被选上

所有节点删除标签

kubectl label nodes --all  key-

但是这样子当两个节点,比如节点a,key=value1,key2=value2,此时无法满足,所有引入了亲和性。

4.节点亲和性

查看相关信息

三种类型:节点亲和性,pod亲和性,pod反亲和性

节点亲和性:

节点亲和性会匹配各个节点的标签,如果匹配成功则会调度到这个节点,如下代码,pod会调度到标签为eat=shaokao或者eat=longxia的节点上

affinity:# 定义节点的亲和性nodeAffinity:# 定义硬限制requiredDuringSchedulingIgnoredDuringExecution:# 定义节点的匹配条件nodeSelectorTerms:# 基于节点的标签进行匹配- matchExpressions:# 指定标签的key- key: eat# 指定标签的valuevalues:- shaokao- longxia# 指定key和value之间的对应关系operator: In# 指定key和value之间的对应关系,有效值如下:#   In:#     key的值必须在vlaues内。要求values不能为空。#   NotIn:#     和In相反。要求values不能为空。#   Exists:#     只要存在指定key即可,vlaues的值必须为空。#   DoesNotExist:#     只要不存在指定key即可,vlaues的值必须为空。#   Gt:#     表示大于的意思,values的值会被解释为整数。#   Lt:#     表示小于的意思,values的值会被解释为整数。

如图

5.pod亲和性与反亲和性

pod的亲和性,当拓扑域topologyKey匹配的节点标签的key匹配成功,则所有pod都往节点标签是这个key的节点调度,比方说在广州,深圳,佛山三地都有服务器,想让所有pod都调度到其中一地。如何实现:
1.给不同地址的节点打标签

kubectl label node k8s231 place=guangzhou

kubectl label node k8s232 place=shenzhun

kubectl label node k8s233 place=foshan

如图所示,通过设置节点亲和性,拓扑域topologyKey,设为标签的key(这里为place),即可完成上述需求。

此时所有pod都会调度到其中一地。

反亲和性:将podAddinity改为podAntiAffinity,其他不变,此时每个topologyKey标签只能调度一个pod。若没有足够的节点(每个节点的标签place的值应该与其他不同),则剩下的pod将会处于penging状态。

6.DaemonSet

DaemonSet概述:
    DaemonSet确保全部worker节点上运行一个Pod的副本。
    DaemonSet的一些典型用法:
        (1)在每个节点上运行集群守护进程(flannel等)
        (2)在每个节点上运行日志收集守护进程(flume,filebeat,fluentd等)
        (3)在每个节点上运行监控守护进程(zabbix agent,node_exportor等)
    温馨提示:
        (1)当有新节点加入集群时,也会为新节点新增一个Pod;
        (2)当有节点从集群移除时,这些Pod也会被回收;
        (3)删除DaemonSet将会删除它创建的所有Pod;
        (4)如果节点被打了污点的话,且DaemonSet中未定义污点容忍,则Pod并不会被调度到该节点上;("flannel案例")

http://www.lryc.cn/news/519171.html

相关文章:

  • RK3588上CPU和GPU算力以及opencv resize的性能对比测试
  • 基于Centos 7系统的安全加固方案
  • IT行业的发展趋势
  • 《探秘开源多模态神经网络模型:AI 新时代的万能钥匙》
  • ROS核心概念解析:从Node到Master,再到roslaunch的全面指南
  • 2025广州国际汽车内外饰技术展览会:引领汽车内外饰发展新潮流-Automotive Interiors
  • ElasticSearch内存占用率过高怎么办?
  • 基于Qt的OFD阅读器开发原理与实践
  • 用 HTML5 Canvas 和 JavaScript 实现流星雨特效
  • Apifox=Postman+Swagger+Jmeter+Mock
  • SpringBoot多数据源架构实现
  • HarmonyOS开发:传参方式
  • OpenCV计算机视觉 07 图像的模块匹配
  • 国产游戏崛起,燕云十六移动端1.9上线,ToDesk云电脑先开玩
  • 企业级PHP异步RabbitMQ协程版客户端 2.0 正式发布
  • [OPEN SQL] 限定选择行数
  • Vite源码学习分享(一)
  • 定位,用最通俗易懂的方法2:TDOA与对应的CRLB
  • Linux第一课:c语言 学习记录day06
  • ExplaineR:集成K-means聚类算法的SHAP可解释性分析 | 可视化混淆矩阵、决策曲线、模型评估与各类SHAP图
  • 2025年第三届“华数杯”国际大学生数学建模竞赛A题题目
  • 用c实现C++类(八股)
  • 【C++多线程编程:六种锁】
  • 【Javascript Day5】for循环及典型案例
  • #渗透测试#网络安全#一文了解什么是shell反弹!!!
  • 《解锁图像的语言密码:Image Caption 开源神经网络项目全解析》
  • 抢占欧洲电商高地,TikTok 运营专线成 “秘密武器”
  • 人工智能-数据分析及特征提取思路
  • 2024 China Collegiate Programming Contest (CCPC) Zhengzhou Onsite 基础题题解
  • halcon3d 如何计算平面法向量!确实很简单