有没有一种方法可以将 Pod 分配给特定节点组中的节点,而无需标记节点组中的每个节点?
例如:
假设我有两个节点组 NG1
和 NG2
,并且我有两个应用程序 A1
和 A2
我想将应用程序 A1
的 pod 分配给节点组 NG1
,并将应用程序 A2
的 pod 分配给节点组 A2
。 (我不想手动为节点组中的每个节点分配标签然后使用节点选择器)
最佳答案
如果两个节点池中的默认标签不同,您可以使用一些默认标签
failure-domain.beta.kubernetes.io/zone
failure-domain.beta.kubernetes.io/region
beta.kubernetes.io/instance-type
beta.kubernetes.io/os
beta.kubernetes.io/arch
例如,如果您的两个节点池运行不同类型的实例,则可以使用 beta.kubernetes.io/instance-type
示例
apiVersion: v1
kind: Pod
metadata:
name: with-node-affinity
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: beta.kubernetes.io/instance-type
operator: In
values:
- Node Type
- Node Type
containers:
- name: with-node-affinity
image: registry.k8s.io/pause:2.0
如果存在差异,您还可以使用 topology.kubernetes.io/zone
if zone。
apiVersion: v1
kind: Pod
metadata:
name: with-node-affinity
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: topology.kubernetes.io/zone
operator: In
values:
- antarctica-east1
- antarctica-west1
containers:
- name: with-node-affinity
image: registry.k8s.io/pause:2.0
更新
如果所有标签都相同,您可以尝试以下命令,该命令将列出特定节点组的标签alpha.eksctl.io/nodegroup-name=ng-1
:
kubectl label nodes -l alpha.eksctl.io/nodegroup-name=ng-1 new-label=foo
关于kubernetes - 将 Pod 分配给节点组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73539419/