Kubernetes-Taint (污点)和 Toleration(容忍)

2024-01-25 02:20

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

目录

一、Taint(污点)

1.污点的组成

2.污点的设置、查看和去除

3.污点实验:

二、Toleration(容忍)

1.容忍设置的方案

2.容忍实验:


       Taint 和 toleration 相互配合,可以用来避免 pod 被分配到不合适的节点上。每个节点上都可以应用一个或多个 taint ,这表示对于那些不能容忍这些 taint 的 pod,是不会被该节点接受的。如果将 toleration 应用于 pod 上,则表示这些 pod 可以(但不要求)被调度到具有匹配 taint 的节点上。

一、Taint(污点)

       使用 `kubectl taint` 命令可以给某个 Node 节点设置污点,Node 被设置上污点之后就和 Pod 之间存在了一种相斥的关系,可以让 Node 拒绝 Pod 的调度执行,甚至将 Node 已经存在的 Pod 驱逐出去

1.污点的组成

         key=value:effect

         每个污点有一个 key 和 value 作为污点的标签,其中 value 可以为空,effect 描述污点的作用。当前 taint effect 支持如下三个选项:

NoSchedule:表示 k8s 将不会将 Pod 调度到具有该污点的 Node 上PreferNoSchedule:表示 k8s 将尽量避免将 Pod 调度到具有该污点的 Node 上NoExecute:表示 k8s 将不会将 Pod 调度到具有该污点的 Node 上,同时会将 Node 上已经存在的 Pod 驱逐出去。

2.污点的设置、查看和去除

kubectl taint nodes node1 key1=value1:NoSchedule# 设置污点kubectl describe node  node-name# 节点说明中,查找 Taints 字段kubectl taint nodes node1 key1:NoSchedule-# 去除污点

3.污点实验:

kubectl describe node k8s-master01#主节点自带污点,所以master节点不能被调度

kubectl taint node k8s-master01 node-role.kubernetes.io/master=:NoSchedule-#取消master节点的污点kubectl describe node k8s-master01#查看污点已被删除kubectl create deployment taint_deploy --image=nginx:latest#创建名为taint_deploy的deployment,使用nginx:latest作为pod内容器创建的镜像。kubectl scale deployment taint_deploy --replicas=20#设置刚刚创建的deployment的pod副本数为20kubectl get pod -o wide#观察刚刚创建的pod,因为取消了master节点的污点,所以pod可以被调度到master节点运行了#master节点没有污点的情况下,运行daemonset,master节点也会运行一个daemonset。

二、Toleration(容忍)

       设置了污点的 Node 将根据 taint 的 effect:NoSchedule、PreferNoSchedule、NoExecute 和 Pod 之间产生互斥的关系,Pod 将在一定程度上不会被调度到 Node 上。 但我们可以在 Pod 上设置容忍 ( Toleration ) ,意思是设置了容忍的 Pod 将可以容忍污点的存在,可以被调度到存在污点的 Node 上。

pod.spec.tolerations

1.容忍设置的方案

tolerations:	#容忍第一种方案:
- key: "key1"	#指定污点的key1operator: "Equal"	#运算符等于value: "value1"	#value是污点value1effect: "NoSchedule"	#策略是NoSchedule
#这种写法的含义是key,value,effect必须全部匹配,有一个不一样都匹配不到。第二种方案:
- key: "key1"operator: "Equal"value: "value1"effect: "NoExecute"tolerationSeconds: 3600	#容忍3600秒第三种方案:
- key: "key2"		#只要匹配到key和dffect,value是什么无所谓。operator: "Exists"effect: "NoSchedule"

例:

Ⅰ、当不指定 key 值时,表示容忍所有的污点 key:** 
tolerations:
- operator: "Exists"		#只写一个存在,只要有污点,就能容忍Ⅱ、当不指定 effect 值时,表示容忍所有的污点作用**
tolerations:
- key: "key"operator: "Exists"		#只要key匹配到了,其他的无所谓Ⅲ、有多个 Master 存在时,防止资源浪费,可以如下设置
kubectl taint nodes Node-Name node-role.kubernetes.io/master=:PreferNoSchedule

2.容忍实验:

kubectl taint node k8s-master01 node-role.kibernetes.io/master=:NoSchedule	#将主节点的污点恢复回来kubectl get daemonset -n kube-system#查看有哪些daemonset资源kubectl get daemonset -n kube-system calico-node -o yaml#查看calico的容忍#策略NoSchedule,运算符Exists(存在),key和value无所谓#value和策略无所谓#还能容忍NoExecute策略的,value和key无所谓

kubectl describe node k8s-master01#查询master节点的keyvim tolerations_daemonset.yamlapiVersion: apps/v1
kind: DaemonSet
metadata:name: tolerations-daemonsetlabels:app: daemonset
spec:selector:matchLabels:name: tolerations-daemonset-podtemplate:metadata:labels:name: tolerations-daemonset-podspec:tolerations:- key: "node-role.kubernetes.io/master"    #master节点的污点的key。operator: "Exists"    #匹配规则为exists,存在key就容忍。containers:- name: tolerations-daemonset-podimage: nginx:latestimagePullPolicy: IfNotPresentkubectl apply -f tolerations_daemonset.yamlkubectl get daemonset#查看创建的daemonsetkubectl get pod -o wide#查看daemonset的pod是否调度在master上。

这篇关于Kubernetes-Taint (污点)和 Toleration(容忍)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

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 作为一个分布式的虚拟

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 当前存在的缺点(不足)如下: ① 安装过程和配置相对困难复杂; ② 管理服务相对繁琐; ③ 运行和编译需要很多时间; ④ 它比其他替代品更昂贵; ⑤ 对于简单的应用程序来说,可能不

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

目录 1.简述 etcd 及其特点? 2.简述 etcd 适应的场景? 3.简述什么是Kubernetes? 4.简述 Kubernetes和 Docker的关系? 1.简述 etcd 及其特点? (1)etcd 是Core0s 团队发起的开源项目,是一个管理配置信息和服务发现(service discovery)的项目,它的目标是构建一个高可用的分布式键值(keyvalue)数据

什么是Kubernetes准入机制?

什么是Kubernetes准入机制? 1、工作原理2、常用组件 💖The Begin💖点点关注,收藏不迷路💖 Kubernetes的准入机制是API请求处理前的一道重要安全屏障。它通过一系列预定义的准入控制组件,对请求进行拦截和检查,确保只有合法且符合规范的请求才能继续执行。 1、工作原理 认证与授权:首先,请求者需要通过身份认证和权限授权。准入控制:随后

什么是Kubernetes RBAC?

什么是Kubernetes RBAC? 1、什么是RBAC?2、核心组件3、优势 💖The Begin💖点点关注,收藏不迷路💖 在Kubernetes集群中,RBAC(基于角色的访问控制)是保障系统安全的关键。它通过角色和绑定管理不同实体对资源的访问权限,具有显著优势: 1、什么是RBAC? RBAC是Kubernetes中用于控制访问权限的机制,通过定义