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

2024-02-18 07:44

本文主要是介绍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

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

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



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

相关文章

搭建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

90、k8s之secret+configMap

一、secret配置管理 配置管理: 加密配置:保存密码,token,其他敏感信息的k8s资源 应用配置:我们需要定制化的给应用进行配置,我们需要把定制好的配置文件同步到pod当中容器 1.1、加密配置: secret: [root@master01 ~]# kubectl get secrets ##查看加密配置[root@master01 ~]# kubectl get se

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

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

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

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

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大,但不同的语言在不同领域都有着自己的优势,为了强强联合,LabVIEW提供了强大的外部程序接口能力,包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等。通过DLL可以使用户很方便地调用C、C++、C#、VB等编程语言写的程序以及windows自带的大

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

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

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错过这个机会。赶紧去看看吧! 什么是华为云Flexus X实例 华为云Flexus X实例云服务是新一代开箱即用、体

【JavaScript】LeetCode:21-25

文章目录 21 最大子数组和22 合并区间23 轮转数组24 除自身以外数组的乘积25 缺失的第一个正数 21 最大子数组和 贪心 / 动态规划贪心:连续和(count)< 0时,放弃当前起点的连续和,将下一个数作为新起点,这里提供使用贪心算法解决本题的代码。动态规划:dp[i]:以nums[i]为结尾的最长连续子序列(子数组)和。 dp[i] = max(dp[i - 1]

Golang进程权限调度包runtime

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

云原生之高性能web服务器学习(持续更新中)

高性能web服务器 1 Web服务器的基础介绍1.1 Web服务介绍1.1.1 Apache介绍1.1.2 Nginx-高性能的 Web 服务端 2 Nginx架构与安装2.1 Nginx概述2.1.1 Nginx 功能介绍2.1.2 基础特性2.1.3 Web 服务相关的功能 2.2 Nginx 架构和进程2.2.1 架构2.2.2 Ngnix进程结构 2.3 Nginx 模块介绍2.4