当前位置: 首页 > news >正文

8-k8s-污点与容忍

文章目录

    • 一、概念
    • 二、相关操作
    • 三、实操污点NoSchedule
    • 四、实操污点NoExecute
    • 五、实操容忍

一、概念

  1. 污点与容忍

    污点taints定义在节点之上的键值型属性数据。当节点被标记为有污点,那么意味着不允许pod调度到该节点。

    容忍tolerations是定义在 Pod对象上的键值型属性数据。被打上污点的节点,如果同时被pod标记为可以容忍污点的节点,则允许pod调度到该节点。。

    ps:在使用kubeadm部署的k8s集群的时候应该会发现,通常情况下,应用不会调度到master节点。因为默认给master节点加了污点。

    1)污点一般打在节点上,且一个节点可以配置使用多个污点

    2)容忍是标注在pod(资源控制器)上的。一个Pod(资源控制器)也可以有多个容忍度。启动pod一般不会调度在有污点的节点上,除非该pod标注了这些污点的容忍,才可以被调度。

  2. 污点配置类型

    1)Noschdule:如果Pod不能忍受这类污点,则该污点节点后续不会进行pod调度,已经创建的pod不会受到影响。
    2)NoExecute:如果Pod不能忍受这类污点,则该污点节点会马上驱除该节点上所有非kube-system空间的所有pod节点。

    3)PreferNoSchedule: NoSchedule的软约束,即该污点节点后续基本不会进行pod调度,但是无其他节点可供调度时,才允许调度到该节点。已经创建的pod不会受到影响。

二、相关操作

  1. 为节点打上污点:kubectl taint node kas-master key=value:Noschedule

  2. 移除污点:kubectl taint node k8s-master key=value:Noschedule-

  3. 查看污点指令:kubectl taint -h

  4. pod配置容忍

    # pod的 spec下面配置容忍
    tolerations:
    - key: "污点的 key"value: "污点的value"offect: "NoSchedule" #污点产生的影响operator: "Equal" #1.Equal:pod和节点的key+value都要相等。2.Exists:pod和节点的key相等即可。tolerationSeconds: 时间(s)  #tolerationSeconds不设置,则Pod会一直在满足容忍的节点上一直执行。
    

三、实操污点NoSchedule

  1. 给worker1节点打上污点:kubectl taint no worker1 key1=value1:NoSchedule

  2. 查看节点: kubectl describe no worker1
    在这里插入图片描述

  3. 编写yaml清单:vi deployment-nginx.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:name: deployment-nginx     #Deployment 的名称labels:app: nginx
    spec:replicas: 3       # 创建 Pod 的副本数selector:         #定义 Deployment 如何找到要管理的 Pod,与 template 的 label(标签)对应matchLabels:app: nginxtemplate:          #字段包含以下字段:metadata:labels:app: nginx    #使用 label(标签)标记 Podspec:             #表示 Pod 运行一个名字为 nginx 的容器containers:- name: nginximage: nginx:1.15       #表示 Pod 运行一个名字为 nginx 的容器ports:                  #容器用于发送和接收流量的端口- containerPort: 80
    
  4. 创建:kubectl apply -f deployment-nginx.yaml

  5. 查看,发现worker1上面没有调度pod:kubectl get pod -o wide
    在这里插入图片描述

  6. 移除污点:kubectl taint no worker1 key1=value1:NoSchedule-

四、实操污点NoExecute

  1. 删除所有pod:kubectl delete -f deployment-nginx.yaml

  2. 重新部署:kubectl apply -f deployment-nginx.yaml

  3. 查看:kubectl get pod -o wide
    在这里插入图片描述

  4. 设置NoExecute:kubectl taint no worker1 key1=value1:NoExecute

  5. 查看节点:kubectl get pod -o wide

    ps:可以看到,除了kube-system空间以外的其他空间,所有worker1上的pod都被驱除
    在这里插入图片描述

五、实操容忍

  1. 在deployment-nginx上设置污点容忍,然后再次查看:vi deployment-nginx.yaml

    tolerations:
    - key: "key1"operator: "Equal"value: "value1"effect: "NoExecute"
    

    完整配置

    apiVersion: apps/v1
    kind: Deployment
    metadata:name: deployment-nginxlabels:app: nginx
    spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:tolerations:- key: "key1"operator: "Equal"value: "value1"effect: "NoExecute"containers:- name: nginximage: nginx:1.15ports:- containerPort: 80
    
  2. 更新:kubectl apply -f deployment-nginx.yaml

  3. 查看pod:kubectl get pod -o wide
    在这里插入图片描述

  4. 测试完还原,删除污点:kubectl taint no worker1 key1=value1:NoExecute-

http://www.lryc.cn/news/196937.html

相关文章:

  • 钢铁异常分类140篇Trans 学习笔记 小陈读paper
  • YOLOv5-理论部分
  • 蓝桥等考C++组别一级004
  • 分布式服务的链路跟踪 Sleuth Micrometer zipkin OpenTelemetry
  • CUDA学习笔记4——自定义设备函数
  • 微前端四:qiankun在开发中遇到的问题
  • Android DisplayPolicy增加一些动作,打开后台接口
  • 基于Linux安装Hive
  • FPGA 图像缩放 1G/2.5G Ethernet PCS/PMA or SGMII实现 UDP 网络视频传输,提供工程和QT上位机源码加技术支持
  • 重复控制逆变器的仿真分析研究
  • WuThreat身份安全云-TVD每日漏洞情报-2023-10-18
  • 开启机器人学新时代,《机器人学建模、规划与控制》完美诠释未来
  • C#根据ip获取地理位置信息的方法,史上最全
  • Git问题汇总
  • 【linux 0.11 学习记录】一、环境配置,用Bochs输出hello world
  • 【LeetCode75】第七十三题 用最少数量的箭引爆气球
  • 航天科技×辰安科技 打造智慧化工园区安全保障平台
  • 6-2 分治法求解金块问题
  • A062-防火墙安全配置-配置Iptables防火墙策略
  • Java包装类
  • 常用字符字符串处理函数
  • 【汇编语言特别篇】DOSBox及常用汇编工具的详细安装教程
  • 【牛客网刷题(数据结构)】:环形链表的约瑟夫问题
  • 虾皮印尼买家号如何注册
  • SpringBoot WebService服务端客户端使用教程
  • 【Python 千题 —— 基础篇】字符串长度
  • AIGC - 入门向量空间模型
  • python中使用xml.dom.minidom模块读取解析xml文件
  • 计算机网络第一章补充整理(计算机网络体系结构)
  • 2023_Spark_实验十七:导入招聘大数据(项目)