kubernetes Pod反亲和调度的策略来实现将每台服务器上的副本数限制为2个
使用Pod反亲和调度的策略来实现将每台服务器上的副本数限制为2个。具体来说,您可以使用PodAntiAffinity规则来确保在同一节点上不会运行超过2个Pod。您可以使用以下样例规则:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 4
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- my-app
topologyKey: "kubernetes.io/hostname"
containers:
- name: my-app
image: my-image
在这个示例规则中,podAntiAffinity
规则被设置为requiredDuringSchedulingIgnoredDuringExecution
,这意味着必须在调度期间满足此规则。labelSelector
指定了要匹配的标签,topologyKey
指定了要匹配的节点拓扑结构。这将确保在同一节点上不会运行超过2个Pod。
如果想要在同一节点上运行多个Pod,可以使用Pod亲和调度来实现。可以使用以下样例规则:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 4
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- my-app
topologyKey: "kubernetes.io/hostname"
containers:
- name: my-app
image: my-image
在这个示例规则中,podAffinity
规则被设置为requiredDuringSchedulingIgnoredDuringExecution
,这意味着必须在调度期间满足此规则。labelSelector
指定了要匹配的标签,topologyKey
指定了要匹配的节点拓扑结构。这将确保在同一节点上运行多个Pod。