成功最有效的方法就是向有经验的人学习!

Kubernetes设置污点以及容忍

K8S集群内有一台212专门用来做数据库服务器,磁盘是基于SSD。

1.设置212污点

kubectl taint node 172.17.10.212 disk=ssd:NoSchedule

2.数据库的deployment

    spec:
      tolerations:
      - key: "disk"
        operator: "Equal"
        value: "ssd"
        effect: "NoSchedule"
      nodeSelector:
        kubernetes.io/hostname: 172.17.10.212

这样子数据库就只会在212这台机器上跑,同时其他服务不会调度在这台。

kubectl taint node [node] key=value[effect]

其中[effect] 可取值: [ NoSchedule | PreferNoSchedule | NoExecute ]
NoSchedule :一定不能被调度。
PreferNoSchedule:尽量不要调度。
NoExecute:不仅不会调度,还会驱逐Node上已有的Pod。

查看节点的污点:

kubectl describe node/node_name |grep Taint

如何取消污点:
去除指定key及其effect

kubectl taint nodes node_name key:[effect]- #(这里的key不用指定value)

去除指定key所有的effect:

kubectl taint nodes node_name key-

deploy容忍污点:

tolerations:
  key: "disk"
  operator: "Equal" #Equal意味着这个值等于value,如果是Exists,则不需要填写value,只要有这个key就容忍
  value: "ssd"
  effect: "NoSchedule"

实例:
将pod调度到master(一般情况我们会给master打上污点,业务pod一般不会调度到master)

apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
  name: taint-replica
spec:
  replicas: 3
  selector:
    matchLabels:
      app: busybox
  template:
    metadata:
      labels:
        app: busybox
    spec:
      containers:
      - name: busybox
        image: busybox
        command: ["sh", "-c", "sleep 3600"]
        imagePullPolicy: IfNotPresent
      tolerations:      #设置pod的容忍度,可以忍受带prod=dev的污点节点,类型为NoSchedule
      - key: prod
        operator: Equal
        value: dev
        effect: NoSchedule
赞(1) 打赏
未经允许不得转载:竹影清风阁 » Kubernetes设置污点以及容忍
分享到

大佬们的评论 抢沙发

全新“一站式”建站,高质量、高售后的一条龙服务

微信 抖音 支付宝 百度 头条 快手全平台打通信息流

橙子建站.极速智能建站8折购买虚拟主机

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册