k8s Pod调度之节点亲和性nodeAffinity
1.给节点打标签
kubectl label nodes master231 school=baimei
kubectl label nodes worker232 school=laonanhai
kubectl label nodes worker233 school=yitiantain
kubectl get nodes --show-labels
2.编写资源清单
cat 02-nodeAffinity.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-tolerations-nodeaffinity-demo02
spec:
replicas: 10
selector:
matchExpressions:
- key: apps
values:
- "v1"
- "v2"
operator: NotIn
template:
metadata:
labels:
school: baimei
spec:
# 基于节点的标签进行调度,将Pod调度到包含key为type,value为ssd的节点上。
# nodeSelector:
# type: ssd
#
# 配置亲和性
affinity:
# 配置节点亲和性
nodeAffinity:
# 硬限制
requiredDuringSchedulingIgnoredDuringExecution:
# 指定节点选择器的匹配方式
nodeSelectorTerms:
# 指定基于标签的方式匹配
- matchExpressions:
# 指定key的名称
- key: school
# 指定value的列表,注意以下事项:
# 1.当operator为Exists或者DoesNotExist时,该列表必须为空。
# 2.当operator为In或者NotIn时,该列表必须为非空。
# 3..当operator为Gt或者Lt时,该列表必须为一个整数。
values:
- baimei
- laonanhai
# 指定key的value的关系,有效值为如下:
# In:
# key的值在values的列表中。
# NotIn:
# key的值不在values的列表中。
# Exists:
# 只要key存在即可,value值任意,可以不写。
# DoesNotExist:
# 除了指定的key外,其他key均可以匹配。
# Gt:
# 表示大于的意思。
# Lt:
# 表示小于的意思。
operator: In
#operator: Exists
# 配置污点容忍
tolerations:
- key: school
operator: Exists
- key: class
effect: NoSchedule
- key: node-role.kubernetes.io/master
effect: NoSchedule
containers:
- name: v1
image: harbor.baimei.com/baimei-apps/apps:v1
kubectl apply -f 01-podAffinity.yaml