21-k8s中pod的调度-污点和污点容忍

一、污点的概念

        所谓的污点,就是给k8s集群中的节点设置的污点,通过设置污点,来规划资源创建时所在的节点;

污点的类型 解释说明
PreferNoshedule

节点设置这个五点类型后;

表示,该节点接受调度,但是会降低调度的概率;

NoShedule 表示,该节点不接受新的调度,以前有的资源,可以继续存在
NoExecute 表示,不接受新的调度,驱逐以前的资源调度;

        根据节点设置污点;

二、污点的管理

1,查看污点

[root@k8s231 dns]# kubectl describe nodes | grep -i taint
Taints:             node-role.kubernetes.io/master:NoSchedule
Taints:             <none>
Taints:             <none>

取前两行查看

[root@k8s231 dns]# kubectl describe nodes | grep -i taint -A 2
Taints:             node-role.kubernetes.io/master:NoSchedule
Unschedulable:      false
Lease:
--
Taints:             <none>
Unschedulable:      false
Lease:
--
Taints:             <none>
Unschedulable:      false
Lease:

2,创建污点

创建污点前,查看pod

创建污点

注意:创建五点有两种方式

        第一种:key=value:污点类型

        第二种:key:污点类型

[root@k8s231 dns]# kubectl taint node k8s233 k8s=xinjizhiwa:NoExecute

创建污点后,查看pod

查看原因

[root@k8s231 dns]# kubectl describe pods dm01-57ff86798f-4sl9r

3,删除污点

[root@k8s231 dns]# kubectl taint node k8s233 k8s=xinjizhiwa:NoExecute-

把五点删除后,pod又恢复了

4,修改污点

[root@k8s231 dns]# kubectl taint node k8s233 k8s=xinjizhiwa:NoExecute --overwrite

三、污点容忍tolerations

1,污点容忍的概念

        通过上文,我们谁知道,我们可以通过给k8s集群节点设置不同类型的“污点”,来控制资源创建的节点范围;

        那么,k8s也同时提供了,“污点容忍”,就是即便你的节点设置了“污点”,我的资源也可以创建在这个节点上的能力;

        可以理解为:在节点上设置了五点之后,你创建资源时,可以无视这个节点上的污点规则,也就可以在有污点的节点上创建资源;

        假设:一个节点上有两个污点,但是你创建pod的时候,还想要在这个节点上创建,那么你就需要再资源清单中,写入“容忍这两个污点”,才会创建成功;

2,污点容忍案例

· 给k8s233创建两个污点

[root@k8s231 dns]# kubectl taint node k8s233 k8s=xinjizhiwa:NoSchedule
node/k8s233 tainted
[root@k8s231 dns]# kubectl taint node k8s233 k8s=xinjizhiwa:NoExecute --overwrite
node/k8s233 modified

· 编辑一个正常的资源清单

[root@k8s231 dns]# cat deploy.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dm01
spec:
  replicas: 10
  selector:
    matchLabels:
      k8s: k8s
  template:
    metadata:
      labels:
        k8s: k8s
    spec:
      containers:
      - name: c
        image: nginx:1.20.1-alpine
        ports:
        - name: p
          containerPort: 80

[root@k8s231 dns]# kubectl apply -f deploy.yaml

此时查看pod都在k8s232中,因为另外两个节点上都有污点,不允许创建

· 修改资源清单,设置污点容忍

[root@k8s231 dns]# cat deploy.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dm01
spec:
  replicas: 10
  selector:
    matchLabels:
      k8s: k8s
  template:
    metadata:
      labels:
        k8s: k8s
    spec:
      #设置污点容忍
      tolerations:
      #指定污点的key
      - key: node-role.kubernetes.io/master
        #value:
        #指定污点的类型
        effect: NoSchedule
        #设置key和value的关系
        #--Exists:key匹配所有value
        #--Equsl:key和value必须全部匹配到
        operator: Exists
      - key: k8s
        value: xinjizhiwa
        effect: NoExecute
        operator: Equal
      - key: k8s
        value: xinjizhiwa
        effect: NoSchedule
        operator: Equal

      containers:
      - name: c
        image: nginx:1.20.1-alpine
        ports:
        - name: p
          containerPort: 80

重新创建资源

[root@k8s231 dns]# kubectl apply -f deploy.yaml

· 此时查看pod

        发现,即便k8s231和k8s233都有污点,但是也都可以创建pod了;

[root@k8s231 dns]# kubectl get pods -o wide

3,无视所有污点

[root@k8s231 dns]# cat deploy.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dm01
spec:
  replicas: 10
  selector:
    matchLabels:
      k8s: k8s
  template:
    metadata:
      labels:
        k8s: k8s
    spec:
      #设置污点容忍
      tolerations:
        #不写污点的key的相关属性表示匹配所有key
      - operator: Exists
 

      containers:
      - name: c
        image: nginx:1.20.1-alpine
        ports:
        - name: p
          containerPort: 80

至此,pod调度的污点和污点容忍,学习完毕;

相关推荐

  1. 持续集成部署-k8s-高级调度-污点容忍

    2024-02-19 17:18:03       27 阅读
  2. 十二、K8S污点容忍

    2024-02-19 17:18:03       32 阅读
  3. K8S(七)—污点容忍

    2024-02-19 17:18:03       40 阅读
  4. k8s污点去除

    2024-02-19 17:18:03       17 阅读
  5. k8s-master增加删除污点

    2024-02-19 17:18:03       40 阅读
  6. k8s 节点打污点

    2024-02-19 17:18:03       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-19 17:18:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-19 17:18:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-19 17:18:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-19 17:18:03       18 阅读

热门阅读

  1. 使用docker搭建php开发环境

    2024-02-19 17:18:03       37 阅读
  2. 怎么测试阿里云香港服务器是不是cn2?

    2024-02-19 17:18:03       33 阅读
  3. C/C++与汇编交互总结

    2024-02-19 17:18:03       29 阅读
  4. (力扣记录)199.二叉树的右视图

    2024-02-19 17:18:03       23 阅读
  5. Linux中精简卷对Oracle的影响

    2024-02-19 17:18:03       33 阅读
  6. Oracle触发器

    2024-02-19 17:18:03       27 阅读
  7. 索引失效的 12 种情况

    2024-02-19 17:18:03       29 阅读
  8. C++/Python/MATLAB检查内存使用情况

    2024-02-19 17:18:03       34 阅读
  9. Python爬虫开发:Scrapy框架与Requests库

    2024-02-19 17:18:03       29 阅读
  10. 力扣_字符串10—重复的DNA序列

    2024-02-19 17:18:03       25 阅读
  11. 《数学建模》专栏导读

    2024-02-19 17:18:03       36 阅读