k8s集群调度和亲和性,污点和容忍

k8s调度概念

k8s集群调度和亲和性,污点和容忍_第1张图片

默认调度策略

亲和性

节点亲和性

k8s集群调度和亲和性,污点和容忍_第2张图片

硬节点亲和

kubectl get node --show-labels查看node节点上面的标签
k8s硬亲和,所有主机节点默认都有标签


硬亲和标签筛选
k8s集群调度和亲和性,污点和容忍_第3张图片
一直kubectl delete pod --all && kubectl create -f pod1.yaml一直删除再创建pod可看到pod一直分配在k8s-node01节点上面

将硬亲和策略改为标签匹配k8s-node03标签
k8s集群调度和亲和性,污点和容忍_第4张图片
删除pod后再次黄建,查看到pod一直pending状态无法启动

k8s集群调度和亲和性,污点和容忍_第5张图片

软节点亲和

希望分配到标签值为k8s-node03主机节点上面
k8s集群调度和亲和性,污点和容忍_第6张图片
如果是软亲和性,看到pod被分配到k8s-node01节点上了,不是硬性要求
在这里插入图片描述

硬节点亲和和软节点亲和结合demo

k8s集群调度和亲和性,污点和容忍_第7张图片
运算关系
k8s集群调度和亲和性,污点和容忍_第8张图片

POD亲和性

k8s集群调度和亲和性,污点和容忍_第9张图片

POD亲和性和反亲和性

k8s集群调度和亲和性,污点和容忍_第10张图片
k8s集群调度和亲和性,污点和容忍_第11张图片

POD亲和demo

1.先创建一个pod 在node01上面,并且标签打上app=node01
使用kubectl get pod --show-labels查看pod和其标签

在这里插入图片描述
2.新增一个pod,将其中的pod硬亲和改为根据标签为app=node-01

k8s集群调度和亲和性,污点和容忍_第12张图片
3.创建pod-3 查看到其分配的节点在k8s-node01节点和pod-1上面,无论怎么删除pod再次创建,pod都会分配到pod-1同一个节点上面
k8s集群调度和亲和性,污点和容忍_第13张图片
4.如果使用反亲和podAntiAffinity则pod-3重新删除再创建,不会和pod-1分配到统一节点上

k8s集群调度和亲和性,污点和容忍_第14张图片

污点和容忍

k8s集群调度和亲和性,污点和容忍_第15张图片

污点

k8s集群调度和亲和性,污点和容忍_第16张图片
k8s集群调度和亲和性,污点和容忍_第17张图片

查看k8s集群master的污点案例

k8s集群调度和亲和性,污点和容忍_第18张图片
在这里插入图片描述

污点的设置和去除及案例

kubectl taint nodes node节点 key值=value值:污点选项
k8s集群调度和亲和性,污点和容忍_第19张图片
kubectl taint nodes k8s-node01 check=wangyang:NoExecute
查看k8s-node01节点上面的pod正在关闭中.
k8s集群调度和亲和性,污点和容忍_第20张图片
过段时间pod全部消失
k8s集群调度和亲和性,污点和容忍_第21张图片
kubectl taint nodes node名称 key值=value值:effect-去除污点
在这里插入图片描述
查看污点为none
在这里插入图片描述

容忍

k8s集群调度和亲和性,污点和容忍_第22张图片

容忍配置及容忍案例

k8s集群调度和亲和性,污点和容忍_第23张图片
k8s集群调度和亲和性,污点和容忍_第24张图片
修改pod容忍配置和设置污点配置一样.
k8s集群调度和亲和性,污点和容忍_第25张图片
查看到pod-3正在运行状态
k8s集群调度和亲和性,污点和容忍_第26张图片
当k8s集群 中所有节点都没有资源时,允许master节点被分配node
在这里插入图片描述

调度

指定节点名调度

k8s集群调度和亲和性,污点和容忍_第27张图片
创建的7个副本都在k8s-node01
k8s集群调度和亲和性,污点和容忍_第28张图片

节点亲和

k8s集群调度和亲和性,污点和容忍_第29张图片

节点亲和demo

1.创建deploymentk8s集群调度和亲和性,污点和容忍_第30张图片
2.查看2个副本的pod都是pending状态
在这里插入图片描述
3.对node节点打上disk:ssd标签后可以查看到pod启动起来了
k8s集群调度和亲和性,污点和容忍_第31张图片
4.查看到所有pod都是在NODE k8s-node01
在这里插入图片描述

你可能感兴趣的:(k8s,Docker)