博客
关于我
Kubernetes的污点和容忍(上篇)
阅读量:466 次
发布时间:2019-03-06

本文共 1184 字,大约阅读时间需要 3 分钟。

Kubernetes中的污点和容忍机制是容器集群调度的重要机制。最近在项目中发现一个问题,新版本的K8S集群会通过污点的方式反映unschedule等信息。这些污点的特点是key存在但value为空。这意味着我们原有的处理逻辑只关注value不为空的情况,导致问题未能完全解决。

翻译K8S官方文档可以帮助更好地理解这个问题。根据文档,污点和容忍的配合使用是确保Pod不被调度到不合适节点的关键机制。污点可以标记节点,容忍则允许Pod匹配特定的污点。

以下是污点和容忍的详细解释:

  • 污点的作用

    污点是节点层面的标记,用于排斥特定的Pod。通过kubectl taint命令可以轻松添加污点。例如:

    kubectl taint nodes node1 key=value --effect NoSchedule

    这会在节点node1上添加一个污点,键为key,值为value,效果为NoSchedule,表示除非Pod有相应的容忍,否则无法调度到node1

  • 容忍的配置

    Pod可以通过容忍标签来匹配污点。容忍的配置方式有两种:

    • Exists操作器:匹配所有键值对。即使value为空,也能容忍所有污点。
      apiVersion: apps.k8s.io/v1kind: PodSpecspec:  tolerations:    - key: "key"      operator: Exists
    • Equal操作器:严格匹配键值对,value必须存在且相等。
      apiVersion: apps.k8s.io/v1kind: PodSpecspec:  tolerations:    - key: "key"      operator: Equal      value: "value"
  • 特殊场景

    • 空键:当键为空时,Exists操作器会匹配所有污点,相当于不对任何污点施加限制。
    • 空效果:当效果为空时,匹配所有键值对的effect,可以用于过滤特定的污点。
  • 污点的效果

    • NoSchedule:Pod无法调度到该节点,除非有相应的容忍。
    • PreferNoSchedule:尽量避免调度,但不是必须的。
    • NoExecute:如果Pod已在节点运行,仍然可以继续,但不会被调度到该节点。tolerationSeconds可指定保留时间(默认3600秒)。
  • 实际应用示例

    假设节点node1上有以下污点:

    key: "key1"key: "key2"key: "key3"

    如果Pod配置了以下容忍:

    tolerations:- key: "key1"- key: "key2"
    • 容忍所有三项污点的Pod仍然可以调度到node1
    • 只有容忍所有三项污点的Pod才能避免被排斥。
  • 通过正确配置容忍,可以灵活控制Pod的调度行为。理解这些机制对于优化K8S集群的性能至关重要。

    转载地址:http://bonbz.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现ApproximationMonteCarlo蒙特卡洛方法计算pi值算法 (附完整源码)
    查看>>
    Objective-C实现area under curve曲线下面积算法(附完整源码)
    查看>>
    Objective-C实现arithmetic算术算法(附完整源码)
    查看>>
    Objective-C实现armstrong numbers阿姆斯壮数算法(附完整源码)
    查看>>
    Objective-C实现articulation-points(关键点)(割点)算法(附完整源码)
    查看>>
    Objective-C实现atoi函数功能(附完整源码)
    查看>>
    Objective-C实现average absolute deviation平均绝对偏差算法(附完整源码)
    查看>>
    Objective-C实现average mean平均数算法(附完整源码)
    查看>>
    Objective-C实现average median平均中位数算法(附完整源码)
    查看>>
    Objective-C实现average mode平均模式算法(附完整源码)
    查看>>
    Objective-C实现avl 树算法(附完整源码)
    查看>>
    Objective-C实现AvlTree树算法(附完整源码)
    查看>>
    Objective-C实现backtracking Jump Game回溯跳跃游戏算法(附完整源码)
    查看>>
    Objective-C实现BACKTRACKING 方法查找集合的幂集算法(附完整源码)
    查看>>
    Objective-C实现bailey borwein plouffe算法(附完整源码)
    查看>>
    Objective-C实现base64加密和base64解密算法(附完整源码)
    查看>>
    Objective-C实现base64加解密(附完整源码)
    查看>>
    Objective-C实现base64编码 (附完整源码)
    查看>>
    Objective-C实现base85 编码算法(附完整源码)
    查看>>
    Objective-C实现basic graphs基本图算法(附完整源码)
    查看>>