pod反亲和含义解读:pod反亲和就是根据pod包含的标签来做亲和或者反亲和操作,亲和就是部署在一起,反亲和就是不部署在一起,然后反亲和包括硬反亲和和软反亲和,软反亲就是尽量避免部署在一起如果找不到满足条件也会部署,硬反亲就是绝对避免部署在一起如果找不到满足条件就不会部署
pod举例参考如下配置
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: jack
template:
metadata:
labels:
app: jack
spec:
affinity:
podAntiAffinity: #pod反亲和标签,配置的规则根据pod的标签进行部署判断
requiredDuringSchedulingIgnoredDuringExecution: #硬反亲和,硬性条件,必须满足下面的标签配置
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- jack
topologyKey: "kubernetes.io/hostname" #域标签,配置反亲和规则生效的node区间
preferredDuringSchedulingIgnoredDuringExecution: #软亲和,非必需性满足下面的标签配置
- weight: 100 #权重100,表示此条规则优先生效
podAffinityTerm:
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- nginx
topologyKey: "kubernetes.io/hostname"
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
配置解读:上面的配置表示优先执行权重为100的软反亲和操作,尽量避免pod部署在标签包含app:nginx的节点上,如果不满足条件pod也会部署。然后在执行硬反亲和规则,绝对拒绝pod部署在标签包含app:jack的节点上,如果不满足条件pod会拒绝部署提示pending状态