K8s 通过pod反亲和性将Deployment的多个副本部署到不同的节点上
利用Pod亲和性,将Pod部署到相关联的Pod目前所在的节点必须部署到拥有标签a=b的Pod所在的节点利用Pod反亲和性,将不同副本部署到不同节点上不能部署到拥有标签 app=anti-nginx所在的节点上,也就是其他副本所在的节点。避免将同一个Deployment的不同副本调度到同一个节点上,万一这个节点出现故障,将导致整个服务不可用。topologyKey: kubernetes.io/ho
·
Deployment 文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-anti
spec:
replicas: 2
selector:
matchLabels:
app: anti-nginx
template:
metadata:
labels:
app: anti-nginx
spec:
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: a
operator: In
values:
- b
topologyKey: kubernetes.io/hostname
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- anti-nginx
topologyKey: kubernetes.io/hostname
magePullSecrets:
- name: kleven-registry
containers:
- name: with-pod-affinity
image: kleven-repository:8083/nginx
利用Pod亲和性,将Pod部署到相关联的Pod目前所在的节点
必须部署到拥有标签a=b的Pod所在的节点
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: a
operator: In
values:
- b
topologyKey: kubernetes.io/hostname
利用Pod反亲和性,将不同副本部署到不同节点上
不能部署到拥有标签 app=anti-nginx所在的节点上,也就是其他副本所在的节点。
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- anti-nginx
topologyKey: kubernetes.io/hostname
避免将同一个Deployment的不同副本调度到同一个节点上,万一这个节点出现故障,将导致整个服务不可用。
topologyKey: kubernetes.io/hostname 即将亲和性和反亲和性拓扑到节点上。同样也可以拓扑到kubernetes.io/zone等等。
更多推荐
已为社区贡献1条内容
所有评论(0)