Home > Software engineering >  Assigning pods to nodegroups
Assigning pods to nodegroups

Time:08-31

Is there a way to assign pods to the nodes in a particular nodegroup without labeling each node in the nodegroup?

E.g.:

Suppose I have two nodegroup NG1 and NG2, and I have two apps A1 and A2

I want to assign pods of app A1 to nodegroup NG1 and pods of app A2 to nodegroup A2. (I don't want to assign labels to each node in the nodegroup manually and then use nodeselector)

CodePudding user response:

You can use some of the default labels if those are coming and not same across the both Node pools

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

For example, if both of your Node pool running the different type of instances, you can use the beta.kubernetes.io/instance-type

Example

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

You can also use the topology.kubernetes.io/zone if zone if difference is there.

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

Update

If all the labels are the same you can try below command, which will list and label from a specific node group alpha.eksctl.io/nodegroup-name=ng-1 :

kubectl label nodes -l alpha.eksctl.io/nodegroup-name=ng-1 new-label=foo
  • Related