kubernetes中Pod调度-Taints污点和污点容忍

2024-04-25 08:28

本文主要是介绍kubernetes中Pod调度-Taints污点和污点容忍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、污点的概念

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

污点的类型 解释说明
PreferNoshedule

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

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

NoSheule表示,该节点不接收新的调度,以前有的资源,也依然存在
NoExecute表示,不接收信息的调度,驱逐以前的资源调度

根据节点设置污点

二、污点的管理

1、查看污点

查看过滤数据的前后两行

[root@master deployment-demo]# kubectl describe nodes | grep -i taint -A 2 -B 2
                    volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp:  Fri, 29 Mar 2024 16:03:58 +0800
Taints:             node-role.kubernetes.io/master:NoSchedule
Unschedulable:      false
Lease:
--
                    volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp:  Fri, 29 Mar 2024 16:09:38 +0800
Taints:             <none>
Unschedulable:      false
Lease:
--
                    volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp:  Fri, 29 Mar 2024 16:39:55 +0800
Taints:             <none>
Unschedulable:      false
Lease:
 

2、创建污点

2.1 创建资源

[root@master deployment-demo]# cat taint.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: taint-demo
spec:
  replicas: 5
  selector:
    matchLabels:
      k8s: dolphin
  template:
    metadata:
      name: pod01
      labels:
        k8s: dolphin
    spec:
      containers:
      - name: c1
        image: nginx
        ports:
        - containerPort: 80

[root@master deployment-demo]# kubectl apply -f taint.yaml 
deployment.apps/taint-demo created
 

我们可以看到资源是随机分布的

2.2 创建污点 

创建污点有两种方式:

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

创建污点

[root@master deployment-demo]# kubectl taint node node1 dolphin:NoExecute

查看状态,全都被驱离到node2节点上了

2.3 删除污点

[root@master deployment-demo]# kubectl taint node node1 dolphin:NoExecute-
node/node1 untainted

我们看到删除pod,node1节点又能重新分配pod资源了

2.4 修改污点

[root@master deployment-demo]#  kubectl taint node node1 dolphin:NoExecute
[root@master deployment-demo]#  kubectl taint node node1 dolphin2=123:NoExecute --overwrite
node/node1 modified

3、 污点容忍tolerations

3.1 污点容忍的概念

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

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

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

3.2 污点容忍案例

上边案例中我们已经创建了2个污点,且创建资源时,node1节点不允许分配资源

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

[root@master deployment-demo]# cat taint.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: taint-demo
spec:
  replicas: 5
  selector:
    matchLabels:
      k8s: dolphin
  template:
    metadata:
      name: pod01
      labels:
        k8s: dolphin
    spec:
      # 设置污点容忍
      tolerations:
      - key: node-role.kubernetes.io/master # master节点的污点
        effect: NoSchedule #指定污点类型
        operator: Exists #只要匹配到key就满足这个条件
      - key: dolphin
        effect: NoExecute
        operator: Equal
      - key: dolphin2
        value: "123"
        effect: NoExecute
        operator: Equal #key和value都要满足匹配条件

      containers:
      - name: c1
        image: nginx
        ports:
        - containerPort: 80

[root@master deployment-demo]# kubectl apply -f taint.yaml 
deployment.apps/taint-demo created

通过以上污点容忍配置,我们可以看到三个节点都能分配pod资源了

3.2.2 无视所有污点配置

[root@master deployment-demo]# cat taint.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: taint-demo
spec:
  replicas: 5
  selector:
    matchLabels:
      k8s: dolphin
  template:
    metadata:
      name: pod01
      labels:
        k8s: dolphin
    spec:
      # 设置污点容忍
      tolerations:

        # 不写污点key的相关属性表示匹配所有key
      - operator: Exists

      containers:
      - name: c1
        image: nginx
        ports:
        - containerPort: 80

这篇关于kubernetes中Pod调度-Taints污点和污点容忍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/934169

相关文章

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略 1. 特权模式限制2. 宿主机资源隔离3. 用户和组管理4. 权限提升控制5. SELinux配置 💖The Begin💖点点关注,收藏不迷路💖 Kubernetes的PodSecurityPolicy(PSP)是一个关键的安全特性,它在Pod创建之前实施安全策略,确保P

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

什么是Kubernetes PodSecurityPolicy?

@TOC 💖The Begin💖点点关注,收藏不迷路💖 1、什么是PodSecurityPolicy? PodSecurityPolicy(PSP)是Kubernetes中的一个安全特性,用于在Pod创建前进行安全策略检查,限制Pod的资源使用、运行权限等,提升集群安全性。 2、为什么需要它? 默认情况下,Kubernetes允许用户自由创建Pod,可能带来安全风险。

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww

kubernetes集群部署Zabbix监控平台

一、zabbix介绍 1.zabbix简介 Zabbix是一个基于Web界面的分布式系统监控的企业级开源软件。可以监视各种系统与设备的参数,保障服务器及设备的安全运营。 2.zabbix特点 (1)安装与配置简单。 (2)可视化web管理界面。 (3)免费开源。 (4)支持中文。 (5)自动发现。 (6)分布式监控。 (7)实时绘图。 3.zabbix的主要功能

【Kubernetes】常见面试题汇总(三)

目录 9.简述 Kubernetes 的缺点或当前的不足之处? 10.简述 Kubernetes 相关基础概念? 9.简述 Kubernetes 的缺点或当前的不足之处? Kubernetes 当前存在的缺点(不足)如下: ① 安装过程和配置相对困难复杂; ② 管理服务相对繁琐; ③ 运行和编译需要很多时间; ④ 它比其他替代品更昂贵; ⑤ 对于简单的应用程序来说,可能不

Golang进程权限调度包runtime

关于 runtime 包几个方法: Gosched:让当前线程让出 cpu 以让其它线程运行,它不会挂起当前线程,因此当前线程未来会继续执行GOMAXPROCS:设置最大的可同时使用的 CPU 核数Goexit:退出当前 goroutine(但是defer语句会照常执行)NumGoroutine:返回正在执行和排队的任务总数GOOS:目标操作系统NumCPU:返回当前系统的 CPU 核数量 p