K8S-污点(taints)与容忍(toleration)

2023-05-16

简介:

污点(taints):  打上了污点的node就不会承载新pod的调度

容忍(toleration): 设置了有容忍的pod,仍能调度到有污点的node上

一、污点介绍:

1、污点的4种类型:

1、NoSchedule :表示K8S不会把pod调度到有该污点的节点上,但不影响该节点已存在的pod

2、PreferNoschedule: 表示K8S尽量不调度pod到有该污点的节点上

3、NoExecute : 表示K8S不会把pod调度到有这个污点的节点上,同时还会把有这个污点的节点上已经存在的pod全部驱逐

4、cordon: 表示不会调度新的pod,并且不会强制驱逐已有的pod

2、添加污点:

1、kubectl taint node 172.31.7.101 key=value:NoSchedule
2、kubectl taint node 172.31.7.101 key=value:NoExecute

3、取消污点:

1、kubectl taint node 172.31.7.101 key:NoSchedule-
2、kubectl taint node 172.31.7.101 key:NoExecute-

master节点默认是不调度pod的,它们默认就拥有cordon污点

 取消172.31.7.101的污点,查看污点都已经取消了

重新把master节点再打上cordon污点

其它几个类型的污点也是一样的设置方法

 二、容忍介绍:

容忍类型:

1、toleration

        定义pod的容忍度(可以接受哪些类型的污点),而后可以调度到这种污点类型的node

2、operator

        如果operator是Exists,那么容忍度不需要value而是直接匹配污点类型

        如果operator是Equal,那么需要指定value并且value的值需要等于node污点的key

三、测试容忍案例

1、node节点打NoSchedule污点

root@master1:/pod# kubectl taint nodes 172.31.7.111 key1=value1:NoSchedule

2、查看污点信息

3、创建具有容忍的pod

root@master1:/pod# cat taint-tolerations.yaml
kind: Deployment
#apiVersion: extensions/v1beta1
apiVersion: apps/v1
metadata:
  labels:
    app: magedu-tomcat-app1-deployment-label
  name: magedu-tomcat-app1-deployment
  namespace: magedu
spec:
  replicas: 3
  selector:
    matchLabels:
      app: magedu-tomcat-app1-selector
  template:
    metadata:
      labels:
        app: magedu-tomcat-app1-selector
    spec:
      containers:
      - name: magedu-tomcat-app1-container
        #image: harbor.magedu.net/magedu/tomcat-app1:v7
        image: tomcat:7.0.93-alpine
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8080
          protocol: TCP
          name: http
      tolerations:           #污点容忍
      - key: "key1"          #污点的key是key1
        operator: "Equal"       #操作符是Equal,所以需要指定value,并且值等于node污点的那个value
        value: "value1"         #因为刚刚手动打的node污点value是value1
        effect: "NoSchedule"

---
kind: Service
apiVersion: v1
metadata:
  labels:
    app: magedu-tomcat-app1-service-label
  name: magedu-tomcat-app1-service
  namespace: magedu
spec:
  type: NodePort
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 8080
    #nodePort: 40003
  selector:
    app: magedu-tomcat-app1-selector

4、创建pod

root@master1:/pod# kubectl apply -f taint-tolerations.yaml

5、查看调度结果

可以看见虽然172.31.7.111打了污点,但是三个副本已经调度到了172.31.7.111和172.31.7.112节点了

可以尝试把yaml文件中容忍的配置注释掉,再重新创建下看看调度结果

 

重新创建pod

root@master1:/pod# kubectl apply  -f taint-tolerations.yaml

很显然是无法调用到7.111节点上的

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

K8S-污点(taints)与容忍(toleration) 的相关文章

  • centos 安装k8s

    第一步 每台机子都做 关闭防火墙 systemctl stop firewalld systemctl disable firewalld 第二步 每台机子都做 永久关闭selinux sed i s enforcing disabled
  • 十六、K8s安全管理与资源限制

    实验环境 按照图示部署好了K8s集群 一个Master 两个worker nodes 访问控制概述 apiserver作为k8s集群系统的网关 是访问及管理资源对象的唯一入口 余下所有需要访问集群资源的组件 包括kube controlle
  • kubeadm一键搭建kubernetes环境

    kubeadm一键搭建kubernetes环境 安装docker 按官网教程执行https docs docker com v17 09 engine installation linux docker ce centos install
  • K8s中的Deployment

    Deployment是kubernetes在1 2版本中引入的新概念 用于更好的解决Pod的编排问题 为此 Deployment在内部使用了ReplicaSet来实现目的 我们可以把Deployment理解为ReplicaSet的一次升 级
  • Minikube安装以及一些踩坑的解决

    安装k8s和docker 我的测试系统是centos7 8的国内服务器 参考文档 https developer aliyun com article 221687 首先先安装k8s 1 19 2版本 1 19 x 版本的安装 腾讯云 do
  • kubeadm常用

    kubeadm常用 配置kubeadm自动补全 初始化一个master节点 导出kubeadm默认配置文件 将node节点加入集群 生成node配置 升级k8s版本 kubeadm升级node 维护或下线node节点 管理kubeadm j
  • underlay和overlay? & 传统网络和数据中心网络 ?

    underlay和overlay 百度 Underlay 和 Overlay 是网络架构中两个常用的概念 用于描述不同层次或视角下的网络结构和通信方式 1 Underlay 底层网络 Underlay 是指基础网络层 即物理网络或基础网络架
  • k8s系统获取真实客户端ip

    k8s部署 系统获取真实客户端ip 我们生产中使用的是kong网关环境的架构也不同 第一种kong网管后走nginx 第二种kong网管后不走nginx kong网管后走ingress nginx 修改kong的配置 配置要信任的原始IP地
  • 二进制部署K8s

    一 环境需求 节点IP 节点名称 所需组件 192 168 248 11 k8s master docker etcd apiserver controller manager scheduler kube proxy flannel 19
  • k8s v1.16设置Job ttlSecondsAfterFinished不生效

    目录 Completed的job默认不会清理 配置自动清理job ttl机制自动清理完成的job ttl controller 开启 TTLAfterFinished kube apiserver开启TTLAfterFinished kub
  • K8s-yaml的使用及命令

    YAML配置文件管理对象 对象管理 创建deployment资源 kubectl create f nginx deployment yaml 查看deployment kubectl get deploy 查看ReplicaSet kub
  • minikube单机安装nfs服务

    1 安装 nfs server sudo apt get update sudo apt get install y nfs kernel server 2 创建目录 配置 IP 共享目录绑定 vim etc exports 新增 data
  • k8s部署之ETCD集群

    k8s部署之ETCD集群 1 etcd下载 etcd下载地址 https github com coreos etcd releases 从github etcd的发布页面选取相应的版本用 wget url 来下载 如 wget https
  • 如何解决K8S节点显示NotReady

    文章目录 kubernetes节点断电重启 kubernetes节点断电重启 背景 运行的好好的k8s集群 某天断电 发现一个节点炸了 显示NotReady kubectl get nodes 那么如何查找问题呢 我们用它 journalc
  • kubeadm配置虚拟机k8s集群

    环境 centos7 vm pro windows terminal termius 虚拟机 硬件配置 2核2G 实验用 具体可根据电脑调整 配置3台 master01 node01 node02 通过克隆虚拟机直接复制 配置通一项以后建议
  • k8备份与恢复-Velero

    简介 Velero 是一款可以安全的备份 恢复和迁移 Kubernetes 集群资源和持久卷等资源的备份恢复软件 Velero 实现的 kubernetes 资源备份能力 可以轻松实现 Kubernetes 集群的数据备份和恢复 复制 ku
  • k8s学习(五)ReplicaSet的使用

    ReplicaSet ReplicaSet 的目的是维护一组在任何时候都处于运行状态的 Pod 副本的稳定集合 可确保指定数量的pod在任何设定的时间运行 因此 它通常用来保证给定数量的 完全相同的 Pod 的可用性 示例 1 nginx
  • 国内k8s集群部署的几种方式

    前言 总所周知 由于某种原因 通过官方的方式在国内是无法顺利部署k8s集群的 这里记录下在国内部署的几种方式 部署方式 目前我所了解有以下几种方式 使用kubeadmin通过离线镜像的方式 网上教程和镜像包挺多的 通过厂商集成的方式如 ra
  • kubeadm集群化部署多master节点(生产环境适用)

    一 背景介绍 k8s通过master集中式管理worknode的容器编排系统 而在生产环境为了维护高可用性 master的地位起到举无轻重的作用 一旦master节点失守 则会导致整个集群服务不可用 因此配置多master集群在生产环境非常
  • flannel和calico区别

    k8s网络模式 Flannel数据包在主机间转发是由backend实现的 目前已经支持UDP VxLAN host gw等多种模式 VxLAN 使用内核中的VxLAN模块进行封装报文 也是flannel推荐的方式 host gw虽然VXLA

随机推荐

  • vue中实现axios封装

    vue中实现axios封装 为什么要进行axios封装vue项目安装axios封装前的get和post请求封装后的get和post请求 为什么要进行axios封装 实际开发过程中可能有几种环境 xff0c 开发环境 xff0c 测试环境 x
  • 项目实训—场景划分(一)

    1 什么是场景 xff08 Scene xff09 场景作为电影讲故事的关键单元 xff0c 包含了演员的复杂活动及其在物理位置上的互动 识别场景的组成和语义是视觉理解复杂长视频 xff08 如电影 电视剧 娱乐节目和综艺节目 xff09
  • 手把手教你FreeRTOS源码解析(一)——内存管理

    FreeRTOS中一共有5种内存分配的方法 xff0c 分别在文件heap 1 c heap 2 c heap 3 c heap 4 c heap 5 c种 虽然标准C库中的 malloc 和 free 也可以实现动态内存管理 xff0c
  • 手把手教你FreeRTOS源码详解(二)——任务管理

    FreeRTOS源码解析集合 xff08 全网最详细 xff09 手把手教你FreeRTOS源码解析 xff08 一 xff09 内存管理 手把手教你FreeRTOS源码详解 xff08 二 xff09 任务管理 手把手教你FreeRTOS
  • 手把手教你FreeRTOS源码详解(三)——队列

    FreeRTOS源码解析集合 xff08 全网最详细 xff09 手把手教你FreeRTOS源码解析 xff08 一 xff09 内存管理 手把手教你FreeRTOS源码详解 xff08 二 xff09 任务管理 手把手教你FreeRTOS
  • 手把手教你FreeRTOS源码详解(四)——信号量、互斥量、递归互斥量

    FreeRTOS源码解析集合 xff08 全网最详细 xff09 手把手教你FreeRTOS源码解析 xff08 一 xff09 内存管理 手把手教你FreeRTOS源码详解 xff08 二 xff09 任务管理 手把手教你FreeRTOS
  • python 随机数 random 库的使用总结

    目录 1 random 库中的常用随机数生成函数 2 一些用法举例 3 随机数种子 seed a 的理解与使用 random 库的主要目的就是生成随机数 1 random 库中的常用随机数生成函数 from random import 1
  • JDBC 配置

    JDBC Java DataBase Connectivity 规范 JDBC是一套协议 xff08 规范 xff09 是java开发人员和数据库厂商达成的协议 是由sun定义一组接口 由数据库厂商来实现 并规定了java开发人员访问数据库
  • Gazebo下载所有模块到本地

    从https bitbucket org osrf gazebo models上下载model库 xff1b 将下载的文件解压 xff0c 将解压后的文件夹重命名为models将models复制到 gazebo文件夹中 xff08 如果 g
  • linux操作系统和系统资源理论基础

    目录 一 xff1a 操作系统 二 xff1a 程序如何被CPU读取 三 xff1a CPU缓存 四 xff1a CPU缓存策略 五 xff1a 如何实现系统多任务 六 xff1a 进程切换过程初探 七 xff1a 进程的调度规则 八 xf
  • containerd的安装和使用

    containerd介绍 containerd是从docker项目中剥离出来的一个容器运行时 几乎囊括了容器管理的所有功能 xff0c 并且containerd内置了CRI插件K8S的kubelet组件可以直接调用containerd xf
  • 部署harbor并实现https(SAN签发证书)

    目录 一 安装docker docker compose 二 安装harbor 三 签发证书 四 修改配置文件 五 运行harbor 六 客户端测试 xff1a 使用系统 xff1a ubuntu 20 04 3 harbor依赖于dock
  • 二进制部署kubernetes高可用集群

    目录 一 集群外围节点准备 二 部署kubeasz 3 3 1集群 三 初始化集群 四 测试集群网络可用性 五 集群扩容 需要master node etcd节点各三台 xff1b harbor服务器 deploy部署节点 负载均衡主机各一
  • coredns部署

    目录 一 获取coredns yaml文件 二 修改coredns yaml文件 三 基于yaml文件启动coredns服务 coredns域名解析流程 xff1a 举例 xff1a 当pod1应用想通过dns域名的方式访问pod2则首先根
  • dashboard的安装使用

    目录 一 下载dashboard的yaml文件 二 修改dsashboard的yaml文件镜像 三 修改dashboard的yaml文件内容 四 创建dashboard 通常而言kubernetes中完成的所有操作都是通过命令行工具kube
  • K8S内部pod之间相互调用案例和详解

    目录 一 部署nginx容器 二 部署tomcat服务 三 使用nginx代理tomcat服务 四 测试 服务发现简介 xff1a 1 service是用于K8S的服务发现的重要组件 xff0c pod作为运行业务的承载方式 xff0c 要
  • 记一次rsyslog配置问题,导致系统无法打印日志

    工作中发现有些机器发生异常 xff0c 想看下messages日志 xff0c 却没有数据 xff0c 看了下rsyslog中日志都定义了打印出的路径 xff0c 但是就是没有日志 查看结果 xff1a 所有的日志文件都没有打印数据 查看了
  • python 字符串操作总结

    目录 1 求字符串长度及字符串转换 2 删除空格 分割字符串 3 连接字符串 4 大小写转换 5 字符串替换 6 统计子字符串的出现次数 7 查找子字符串第一次出现的位置 8 判断字符串的某些属性是否为True 9 字符串转化为数字 10
  • K8S pod 亲和与反亲和 (podAffinity与podAntiAffinity)

    目录 1 简介 xff1a 2 配置须知 xff1a 示例 xff1a 一 创建前端nginx容器 二 创建后端容器 xff0c 与nginx容器做软亲和 三 创建后端容器 xff0c 与nginx容器做硬亲和 1 简介 xff1a 前面介
  • K8S-污点(taints)与容忍(toleration)

    简介 xff1a 污点 xff08 taints xff09 打上了污点的node就不会承载新pod的调度 容忍 xff08 toleration xff09 设置了有容忍的pod xff0c 仍能调度到有污点的node上 一 污点介绍 x