学习笔记十八:污点、容忍度

这篇具有很好参考价值的文章主要介绍了学习笔记十八:污点、容忍度。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

污点、容忍度

  • 给了节点选则的主动权,我们给节点打一个污点,不容忍的pod就运行不上来,污点就是定义在节点上的键值属性数据,可以定决定拒绝那些pod;
  • taints是键值数据,用在节点上,定义污点;
  • tolerations是键值数据,用在pod上,定义容忍度,能容忍哪些污点
  • pod亲和性是pod属性;但是污点是节点的属性,污点定义在k8s集群的节点上的一个字段
kubectl explain node.spec.taints
KIND:     Node
VERSION:  v1
RESOURCE: taints <[]Object>
DESCRIPTION:
     If specified, the node's taints.
     The node this Taint is attached to has the "effect" on any pod that does
     not tolerate the Taint.
FIELDS:
   effect	<string> -required-
   key	<string> -required-
   timeAdded	<string>
   value	<string>

taints的effect用来定义对pod对象的排斥等级(效果):

NoSchedule:
仅影响pod调度过程,当pod能容忍这个节点污点,就可以调度到当前节点,后来这个节点的污点改了,加了一个新的污点,使得之前调度的pod不能容忍了,那这个pod会怎么处理,对现存的pod对象不产生影响

NoExecute:
既影响调度过程,又影响现存的pod对象,如果现存的pod不能容忍节点后来加的污点,这个pod就会被驱逐

PreferNoSchedule:
最好不,也可以,是NoSchedule的柔性版本

查看master这个节点是否有污点,显示如下:

kubectl describe nodes k8smaster1
Taints:             node-role.kubernetes.io/control-plane:NoSchedule

上面可以看到master这个节点的污点是Noschedule
所以我们创建的pod都不会调度到master上,因为我们创建的pod没有容忍度

kubectl describe pods kube-apiserver-k8smaster1 -n kube-system

显示如下:

Tolerations:       :NoExecute op=Exists

可以看到这个pod的容忍度是NoExecute,则可以调度到k8smaster1上

管理节点污点

kubectl taint –help

把k8snode2当成是生产环境专用的,其他node是测试的

给k8snode2打污点,pod如果不能容忍就不会调度过来

kubectl taint node k8snode2 node-type=production:NoSchedule
vim pod-taint.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: taint-pod
  namespace: default
  labels:
    tomcat:  tomcat-pod
spec:
  containers:
  - name:  taint-pod
    ports:
    - containerPort: 8080
    image: tomcat:8.5-jre8-alpine
imagePullPolicy: IfNotPresent 
kubectl apply -f pod-taint.yaml
kubectl get pods -o wide 

显示如下:

taint-pod   running    k8snode1

可以看到都被调度到k8snode1上了,因为k8snode2这个节点打了污点,而我们在创建pod的时候没有容忍度,所以k8snode2上不会有pod调度上去的

给k8snode1也打上污点

kubectl taint node k8snode1 node-type=dev:NoExecute
kubectl get pods -o wide 

显示如下:可以看到已经存在的pod节点都被撵走了

taint-pod   termaitering
vim pod-demo-1.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: myapp-deploy
  namespace: default
  labels:
    app: myapp
    release: canary
spec:
      containers:
      - name: myapp
        image: ikubernetes/myapp:v1
        imagePullPolicy: IfNotPresent
        ports:
        - name: http
          containerPort: 80
      tolerations:
      - key: "node-type"
        operator: "Equal"
        value: "production"
        effect: "NoExecute"
        tolerationSeconds: 3600
kubectl apply -f pod-demo-1.yaml
kubectl get pods
myapp-deploy   1/1     Pending   0          11s  k8snode2

还是显示pending,因为我们使用的是equal(等值匹配),所以key和value,effect必须和node节点定义的污点完全匹配才可以,把上面配置effect: "NoExecute"变成effect: “NoSchedule”;
tolerationSeconds: 3600这行去掉

修改后重新生成pod

kubectl delete -f pod-demo-1.yaml
kubectl apply -f pod-demo-1.yaml
kubectl get pods
myapp-deploy   1/1     running  0          11s  k8snode2

上面就可以调度到k8snode2上了,因为在pod中定义的容忍度能容忍node节点上的污点

删除污点:文章来源地址https://www.toymoban.com/news/detail-656351.html

kubectl taint nodes xianchaonode1 node-type:NoExecute-
kubectl taint nodes xianchaonode2 node-type-

到了这里,关于学习笔记十八:污点、容忍度的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • K8S之运用污点、容忍度设置Pod的调度约束

    taints 是键值数据, 用在节点上 ,定义污点; tolerations 是键值数据, 用在pod上 ,定义容忍度,能容忍哪些污点。 污点 是定义在k8s集群的节点上的键值属性数据,可以决定拒绝那些pod。 给了Node选则的主动权,给Node打个污点, 不容忍 的Pod就调度不上来。 现象:刚部署好的

    2024年02月19日
    浏览(37)
  • K8s Pod亲和性、污点、容忍度、生命周期与健康探测详解(下)

    🐇明明跟你说过:个人主页 🏅个人专栏:《Kubernetes航线图:从船长到K8s掌舵者》 🏅 🔖行路有良友,便是天堂🔖 目录 五、健康探测 1、健康探测的概念 2、Pod启动探测(Startup Probe) 3、Pod存活探测(Liveness Probe) 4、Pod就绪探测(Readiness Probe) 5、Pod健康探测在故障转移与

    2024年04月08日
    浏览(50)
  • K8s(二)Pod资源——node调度策略、node亲和性、污点与容忍度

    目录 node调度策略nodeName和nodeSelector 指定nodeName 指定nodeSelector node亲和性 node节点亲和性 硬亲和性 软亲和性 污点与容忍度 本文主要介绍了在pod中,与node相关的调度策略,亲和性,污点与容忍度等的内容 在创建pod等资源时,可以通过调整字段进行node调度,指定资源调度到满足

    2024年01月17日
    浏览(47)
  • k8s 污点和容忍

    在 Kubernetes 中,节点亲和性 NodeAffinity 是 Pod 上定义的一种属性,能够使 Pod 按我们的要求调度到某个节点上,而 Taints(污点) 则恰恰相反,它是 Node 上的一个属性,可以让 Pod 不能调度到带污点的节点上,甚至会对带污点节点上已有的 Pod 进行驱逐。当然,对应的 Kubernetes 可以

    2023年04月08日
    浏览(32)
  • k8s概念-污点与容忍

    k8s 集群中可能管理着非常庞大的服务器,这些服务器可能是各种各样不同类型的,比如机房、地理位置、配置等,有些是计算型节点,有些是存储型节点,此时我们希望能更好的将 pod 调度到与之需求更匹配的节点上。 此时就需要用到污点(Taint)和容忍(Toleration),这些配

    2024年02月14日
    浏览(41)
  • K8s的亲和、反亲和、污点、容忍

    亲和性的原理其实很简单,主要利用label标签结合nodeSelector选择器来实现 从pod出发,可以分成亲和性和反亲和性,分别对应podAffinity和podAntiAffinity。 从node出发,也可以分成亲和性和反亲和性,分别对应nodeAffinity和nodeAntiAffinity。 从操作指令来讲,可以有ln、Notln、Exists、DoesN

    2024年04月27日
    浏览(35)
  • 【云原生 · Kubernetes】Taint和Toleration(污点和容忍)

    个人名片: 因为云计算成为了监控工程师👨🏻‍💻 个人博客🏆:念舒_C.ying CSDN主页✏️:念舒_C.ying 节点亲和性是 pod 的一种属性(优先选择或硬性要求),它使 pod 被优先分配到一类特定的节点上。而 Taint 则相反,它使 节点 能够 排斥 一类特定的 pod。 Taint(污点)和

    2023年04月08日
    浏览(36)
  • 【云原生|Kubernetes】15-Kubernetes的污点和容忍详解

    ​ 污点(Taint)是指标记节点的一种机制,用于告诉 Kubernetes 集群这个节点上的 Pod 是有问题的,例如某些节点资源已经不足等。当节点被标记为污点时,Kubernetes 调度器将不会将新的 Pod 分配到这个节点上,除非这个 Pod 明确地声明了它可以容忍这个节点上的污点。污点通常

    2024年02月12日
    浏览(49)
  • k8s-污点 (Taint)和容忍 (Tolerations)

    节点亲和性,是Pod的一种属性(偏好或硬性要求),它使Pod被吸引到一类特定的节点 Taint 则相反,它使节点能够排斥一类特定的 Pod Taint 和 Toleration 相互配合,可以用来避免 Pod 被分配到不合适的节点上。每个节点上都可以应用一个或多个 taint ,这表示对于那些不能容忍这些

    2024年01月16日
    浏览(40)
  • Kubernetes 污点、容忍策略、优先级与抢占、Pod安全

    污点使结点与pod产生排斥与标签相反 污点策略是通过嵌入合在键值对上的污点标签进行声明 污点标签必须绑定在键值对上,格式为:key=value:[污点标签] taint翻译就是污点的意思 查看污点标签         kubectl describe nodes [结点名] 设置污点标签         kubectl taint node [结点名字

    2024年02月05日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包