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

完整教程:标签Labels、Scheduler:调度器、k8s污点与容忍度

labels用于标识和选择 Kubernetes 对象(如 Pod、Deployment、Service、Namespace 等)的键值对

用途:

①分类和组织

②筛选和管理

③自动化操作

使用方法:

①创建资源时,添加标签

通过标签名,筛选pod

kubectl get pod -l app=pod-1

kubectl get pod -l app,env

apiVersion: v1

kind: Pod

metadata:

  name: my-pod

  labels:

     app: my-app

     environment: production

spec:

  containers:

   - name: my-container

       image: nginx

②在资源运行时,添加或修改标签

添加标签

kubectl label pod myapp-2-b6f89777f-r5n7x server=nginx

删除标签

kubectl label pod myapp-2-b6f89777f-r5n7x server-

重新添加标签

kubectl label pod myapp-2-b6f89777f-r5n7x server=apache

apiVersion: apps/v1

kind: Deployment

metadata:

   name: my-deployment

spec:

    replicas: 3

    selector:              #标签选择器

        matchLabels:  #通过键值对绑定标签

            app: my-app #需要管理Pod的标签

      template:             #创建Pod的模板,通过Deployment自动创建Pod

         metadata:

              labels:

                 app: my-app #Pod的标签,用于被筛选和管理

        spec:

            containers:

             - name: my-container

                image: nginx

查看一个pod的标签

kubectl describe pod myapp-2-b6f89777f-r5n7x / grep Labels

查看所有pod的标签

kubectl get pod --show-labels

Scheduler:调度器

在创建运行pod时,用于将Pod的创建请求绑定到Pode节点上;

可以满足调度的公平、高效、灵活;

调度过程:

1.过滤掉不满足条件的节点,预选(predicate)

2.按照节点的优先级排序,优选(priority)

3.选择优先级最高的node节点

调度方法:

1.自动调度:Scheduler经过一系列的算法计算得出最优节点;

2.定向调度:

    NodeName:指定Node名称进行调度;

    NodeSelector:通过Node标签进行选择调度

3.亲和性调度:

     NodeAffinity (节点亲和度)

     PodAffinity (Pod亲和度)

     PodAntiAffinity (Pod反亲和性)

4.污点与容忍度:

     Taints 给Node节点打上污点,需要容忍度才能调度

     Toleration 在Pod上设置容忍度,才能运行在有污点的Node上

固定调度案例:

apiVersion: apps/v1

kind: Deployment

metadata:

    name: myweb

spec:

    selector:

        matchLabels:

             app: myweb

      replicas: 6

      template:

          metadata:

               labels:

                  app: myweb

        spec:

             nodeName: node-1  #通过指定nodeName,实现固定调度

             containers:

              - name: myweb

                 image: docker.io/nginx

                 ports:

                  - containerPort: 80

污点与容忍度

如果Node节点上有污点,需要Pod有容忍度才能调度运行

污点的三种级别:

NoSchedule:没有容忍的Pod不能新建,已经运行的Pod不受影响;(第二级别)

PreferNoSchedule:没有容忍的Pod尽量不要创建,如果没有其他节点可以选择,也能创建;(最小级别)

NoExecute:驱逐所有Pod应用;(最高级别)

给node打污点:

创建污点

kubectl taint nodes node01 key=value:effect  (关键字:taint)

删除污点

kubectl taint nodes node01  key-

给pod添加容忍度:

在 Kubernetes 中,Pod 的容忍度(Tolerations)用于允许 Pod 调度到带有污点(Taints)的节点上。污点和容忍度是 Kubernetes 中用于控制 Pod 调度的一种机制,允许你将某些 Pod 排除在某些节点之外,或者将某些 Pod 明确允许调度到特定的节点上。

1. 污点(Taints)和容忍度(Tolerations)的基本概念
  • 污点(Taints):是一种节点属性,用于阻止某些 Pod 调度到该节点上。污点由键(key)、值(value)和效果(effect)组成。

    • effect 的值可以是:

      • NoSchedule:不允许新的 Pod 调度到该节点,但已调度的 Pod 不受影响。

      • PreferNoSchedule:尽量避免将新的 Pod 调度到该节点,但不是强制的。

      • NoExecute:不允许新的 Pod 调度到该节点,并且会驱逐已存在的 Pod。

  • 容忍度(Tolerations):是一种 Pod 属性,用于允许 Pod 调度到带有特定污点的节点上。容忍度也由键(key)、值(value)和效果(effect)组成。

2. 给 Pod 添加容忍度

在 Pod 的定义中,可以通过 tolerations 字段来添加容忍度。以下是一个示例:

示例 Pod 定义
apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: my-containerimage: my-imagetolerations:- key: "node-type"operator: "Equal"value: "gpu"effect: "NoSchedule"

在这个例子中:

  • keynode-type,表示容忍的污点键。

  • operatorEqual,表示键和值必须匹配。

  • valuegpu,表示容忍的污点值。

  • effectNoSchedule,表示容忍的污点效果。

3. 示例场景

假设你有一些节点带有以下污点:

kubectl taint nodes node1 node-type=gpu:NoSchedule

如果没有添加容忍度,Pod 将无法调度到带有该污点的节点上。通过在 Pod 定义中添加上述容忍度,Pod 就可以被调度到带有 node-type=gpu:NoSchedule 污点的节点上。

4. 其他容忍度配置
a. 匹配所有污点

如果你希望 Pod 容忍所有类型的污点,可以使用以下配置:

tolerations:
- operator: "Exists"effect: "NoSchedule"
b. 容忍特定效果

如果你只想容忍特定效果的污点,可以指定 effect

tolerations:
- key: "node-type"operator: "Equal"value: "gpu"effect: "NoSchedule"
- key: "node-type"operator: "Equal"value: "gpu"effect: "PreferNoSchedule"
5. 动态添加容忍度

如果你已经创建了 Pod,但需要动态添加容忍度,可以通过修改 Pod 的 YAML 文件并重新应用来实现:

kubectl get pod my-pod -o yaml > my-pod.yaml

编辑 my-pod.yaml 文件,添加 tolerations 部分,然后重新应用:

kubectl apply -f my-pod.yaml
6. 注意事项
  • 污点和容忍度的匹配:Pod 的容忍度必须与节点的污点完全匹配(键、值和效果),才能允许调度。

  • 动态更新:动态更新 Pod 的容忍度可能需要重新调度 Pod,这可能会导致 Pod 的重启。

  • 多节点调度:如果多个节点带有相同的污点,Pod 仍然会根据其他调度策略(如资源需求)选择最适合的节点。

通过合理配置污点和容忍度,你可以更好地控制 Pod 的调度行为,优化资源利用和隔离策略。

http://www.zskr.cn/news/73515.html

相关文章:

  • 2025年二次元测量仪工厂有哪些?主要有哪些优质产品?
  • 2025年气力输送靠谱厂家TOP5推荐,气力输送设备厂家品牌
  • 2025年度自动化配料计量设备公司TOP5权威推荐:精准选型
  • 模块会根据自学习到的权重对各输入进行加权组合,再经过卷积、BN和激活函数等进一步处理,形成新的融合特征图,是BiFPN内部的核心机制
  • 淡化老痘印用什么面膜?2025用户反馈优质面膜TOP10,顽固痘印全瓦解!
  • BiFPN和softmax在目标检测模型中的相对位置关系
  • 2025全包装修公司哪家好?最新权威推荐榜单,中高端装修必看
  • 2025年整装公司权威推荐榜单:黔派装饰以匠心重构贵州家装新标准
  • 2025年重庆五大梁山鸡餐厅排行榜,地道美食品牌推荐
  • 微信工具类
  • 探秘C#伪随机数生成器的安全漏洞与破解之道
  • 随笔
  • 2025年国内可靠的河道护坡石笼网源头厂家找哪家,抗冲击抗腐蚀石笼网/柔韧抗压石笼网/双隔板石笼网/六角石笼网河道护坡石笼网源头厂家口碑推荐
  • 2025年国内知名的微动开关工厂口碑推荐,家电微动开关/大型微动开关/鼠标微动开关/小型微动开关/防水微动开关定制厂家怎么选择
  • i dont study in mathematics but I wear glasses in 20s
  • 53(12.5)
  • 实用指南:新手产品经理精通 MES 系统业务的完整指南
  • 医学图像分割经典模型U-Net架构全解析
  • 51(12.3)
  • linux安装jdk和tomcat和并自启动 - 实践
  • 2025年重庆药膳鸡火锅TOP5排行榜:李子坝梁山鸡,附滋补
  • 2025年专业新闻发稿公司推荐:高性价比平台评估与深度解析
  • 一物一码公司推荐:再互动 —— 数据驱动全链路,2025 企业价值增长首选
  • 2025年五大高灵敏度振动传感器品牌排行榜,新测评精选传感器
  • 2025年12月广东佛山琉璃瓦/青瓦源头厂家深度解析:如何选择靠谱供应商避坑指南
  • 2025年目前最好的微动开关供货商有哪些,汽车微动开关/新能源微动开关/大电流微动开关/小型微动开关/家电微动开关供货商怎么选择
  • 2025 年口碑好的陕西扫地机厂家用户口碑最佳榜
  • 2025年江苏靠谱的H488*300型钢回收渠道推荐:看哪家
  • 2025年12月水处理设备厂家优选:​反渗透/超纯水/软化水/净化水设备厂家盘点
  • 云原生周刊:K8s 成为人工智能的新动力引擎