如何解决我可以在Kubernetes部署中使用多个PodAffiniy吗?
我有一个Pod,如果可能的话,我想在同一个节点上运行,或者起初至少要在同一个可用区中运行,我认为我可以将podAffinity与preferredduringschedulingignoredduringexecution和两个podAffinityTerm一起使用,但是它没有似乎工作正常,所以我想如果我可以运行两个podAffinity,那么如果第一个podAffinity(在同一主机上运行)是不可能的,那么第二个podAffinity(在相同的AZ上运行)将发生。
这是我的部署清单:
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-test-deployment
spec:
selector:
matchLabels:
app: app-test-deployment
replicas: 1
template:
metadata:
labels:
app: app-test-deployment
spec:
affinity:
podAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- pod-test
topologyKey: "kubernetes.io/hostname"
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- pod-test
topologyKey: "failure-domain.beta.kubernetes.io/zone"
containers:
- name: app-test
image: app-test:1.14.2
ports:
- containerPort: 80
解决方法
- 将
/zone
的权重设置为99 - 将
preferredDuringSchedulingIgnoredDuringExecution
替换为requiredDuringSchedulingIgnoredDuringExecution
,当它失败时-您会看到是什么导致它进入另一个可用区。完成后,将其设置回preferred
。
此外,您是否尝试将Affinity链接到发布的同一部署?如果是这样,则您的标签不匹配:podAffinityTerm中的部署VS app: app-test-deployment
中的app: pod-test
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。