K8S PDB和taint同时存在

一、PDB和Taint简介

PDB

由于一些人为的或者不可避免的原因,pod可能会中断,而使用Pod Disruption Budget可以最大限度地保证在pod中断发生时集群仍然保持能够接受的状态.
一句话,PDB能够限制同时中断的pod的数量,以保证集群的高可用性.
使用PodDisruptionBudget来保护集群

[root@qa-k8s-1-master eric]# kubectl get pdb
NAME                MIN AVAILABLE   MAX UNAVAILABLE   ALLOWED DISRUPTIONS   AGE
noah-php-demo-pdb   N/A             2                 0                     6s

污点(taints)与容忍(tolerations)

对于nodeAffinity无论是硬策略还是软策略方式,都是调度 pod 到预期节点上,而Taints恰好与之相反,如果一个节点标记为 Taints ,除非 pod 也被标识为可以容忍污点节点,否则该 Taints 节点不会被调度 pod。

那么如果在设置了PDB的情况下同时有设置了污点,那么是按PDB还是污点方式迁移pod?我们接下来测试下到底谁的优先级更高。

二、创建PDB和给node打污点

创建pdb

[root@qa-k8s-1-master eric]# cat pdb.yaml
apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
  name: noah-php-demo-pdb
spec:
  maxUnavailable: 2
  selector:
    matchLabels:
      business_domain: noah-php-demo.vip.vip.com
[root@qa-k8s-1-master eric]# kubectl apply -f pdb.yaml
poddisruptionbudget.policy/noah-php-demo-pdb created

给node打上污点

支持kubectl edit node yaml方式,也可以用taint命令

annotations:
  scheduler.alpha.kubernetes.io/taints: '[{"key":"xxx","operator":"Equal","value":"yyy","effect":"NoSchedule"}

operator可以定义为:
Equal 表示key是否等于value,默认
Exists 表示key是否存在,此时无需定义value

effect可以定义为:
NoSchedule 表示不允许调度,已调度的不影响
PreferNoSchedule 表示尽量不调度
NoExecute 表示不允许调度,已调度的在tolerationSeconds(定义在Tolerations上)后删除

这里使用NoExecute来立即触发容器重启

[root@qa-k8s-1-master eric]# kubectl taint node 10.189.108.141 key=value:NoExecute
node/10.189.108.141 tainted

同时立即去查看pod状态看看是只有maxUnavailable=2个重启还是所有的全部重启。


Pod_Status.png

三、结论

从上面可以看到,当配置了PDB和污点的情况下,是以污点为优先级更高,会立即迁移走所有pod,PDB这时候是不生效的。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、调度简介   一个容器平台的主要功能就是为容器分配运行时所需要的计算,存储和网络资源。容器调度系统负责选择在最...
    无剑_君阅读 4,093评论 0 1
  • 一、简介 Scheduler 是 kubernetes 的调度器,主要的任务是把定义的 pod 分配到集群的节点上...
    小波同学阅读 7,743评论 0 1
  • k8s入门知识点 [TOC] k8s并不神秘,你可以结合vm和redis之类的中间件 Q-1:为什么需要k8s Q...
    LLyang碎碎念阅读 12,020评论 0 4
  • Label Label是附着到object上(例如Pod)的键值对。可以在创建object的时候指定,也可以在ob...
    陈靖_7314阅读 9,309评论 0 3
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 9,322评论 0 5