51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

k8s的Pod调度之污点容忍 tolerations

k8s的Pod调度之污点容忍

kubernetes中,节点的污点(taint)用于标记节点上的一些特殊条件或限制,例如节点的资源已经过载或者需要进行维护等。这些污点会阻止Pod被调度到这样的节点上。

但是,如果某些Pod有特殊的要求,需要被调度到被污点标记的节点上,就可以使用污点容忍(taint toleration)的功能。污点容忍允许Pod在被污点标记的节点上调度。

在创建Pod时,可以通过在Pod的spec中添加tolerations 字段来实现污点容忍。tolerations字段告诉Kubernetes该Pod能够容忍哪些污点。例如,下面是一个tolerations字段的示例:

tolerations:
- key: example.com/my-taint-key
  operator: Exists
  effect: NoSchedule

其中,key指定了污点的名称,operator指定了条件运算符,effect指定了污点的作用方式。

当Pod遇到被容忍的污点后,它就有机会调度到被污点标记的节点上运行。

案例:

cat 01-tolerations.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deploy-tolerations
spec:
  replicas: 10
  selector:
    matchExpressions:
    - key: apps
      values: 
      - "v1"
      - "v2"
      operator: NotIn
  template:
    metadata:
      labels:
        school: baimei
    spec:
      # 配置污点容忍
      tolerations:
      # - key: school
      #   value: baimei
      #   effect: NoExecute
      # - key: school
      #   value: baimei
      #   effect: PreferNoSchedule
      # - key: class
      #   effect: NoSchedule
      # - key: node-role.kubernetes.io/master
      #   effect: NoSchedule
      #
      # 若不指定key,则operator值必须为Exists,表示匹配所有的key,此时也不需要指定value。
      # 若不指定effect时,则会匹配所有的影响度,即NoExecute,PreferNoSchedule,NoSchedule。
      # 综上所述,如果按照下面的方式配置,则表示无视污点。不建议使用,仅测试时可以使用!
      - operator: Exists
      containers:
      - name: v1
        image: harbor.baimei.com/baimei-apps/apps:v1
赞(6)
未经允许不得转载:工具盒子 » k8s的Pod调度之污点容忍 tolerations