Kubernetes节点taint和pod的tolerations

节点taint(污点)

我们创建pod只是调度了了两个worker节点,而master节点状态也是Ready,但并没有pod调度上去,是因为出现了taint(污点)问题了。
如果我们给某个节点设置了taint,只有那些设置了tolerations(容忍污点)的pod才能运行在此节点。

  • 查看节点是否设置了taint
kubectl describe nodes sun003 | grep Taints
kubectl describe nodes sun004 | grep Taints
kubectl describe nodes sun005 | grep Taints

在这里插入图片描述

  • 给节点设置taint,设置了taint的节点不影响当前正在运行的pod。新建的pod将不会在被调度到该节点。
# 语法,TAINT_EFFECT的值一般是NoSchedule
kubectl taint nodes NAME KEY_1=VAL_1:TAINT_EFFECT_1 ... KEY_N=VAL_N:TAINT_EFFECT_N [options]
# 举例
kubectl taint node sun004 key1=value1:NoSchedule

在这里插入图片描述

  • 创建deployment,查看现有pod
kubectl create deployment nginx --image=nginx --replicas=2
kubectl get pods -o wide

在这里插入图片描述

  • 删除taint
# 语法
kubectl taint node NAME key-
# 举例
kubectl taint node sun004 key1-

kubectl describe nodes sun004 | grep Taints
kubectl delete deployments.apps nginx

在这里插入图片描述

pod的toleration(容忍污点)

如果pod需要在含有taint的节点上运行,则定义pod时需要指定toleration属性。pod里定义toleration格式如下:

spec:
  tolerations:
  - key: "key值"
    operator: "Equal"
    value: "value值"
    effect: "值"

operator值有两个:

  1. Equal:value值和effect值与节点的taint的值必须一致
  2. Exists:可以不指定value的值。在设置节点taint时value值非空只能使用Equal
  • 无value的例子,两者都可用
spec:
  tolerations:
  - key: "key值"
    operator: "Equal"
    value: ""
    effect: "值"

# 或者
spec:
  tolerations:
  - key: "key值"
    operator: "Exist"
    effect: "值"
  • value非空的例子,只能用Equal
spec:
  tolerations:
  - key: "key值"
    operator: "Equal"
    value: "value值"
    effect: "值"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值