<mohammadrony>

Affinity Anti-affinity

Node affinity

# Pod will be scheduled in a node having 'disk-type=ssd' label
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: disk-type
            operator: In
            values:
            - ssd
# Pod will try to schedule in a node having 'disk-type=ssd' label
spec:
  affinity:
    nodeAffinity:
      preferredDuringSchedulingIgnoredDuringExecution:
        - weight: 100
          preference:
            matchExpressions:
              - key: disk-type
                operator: In
                values:
                  - ssd

Pod affinity

# Pod will be scheduled in a node having 'app=frontend' labeled pod 
spec:
  affinity:
    podAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
          - key: app
            operator: In
            values:
            - frontend
          # matchLabels:
          #   app: frontend
        topologyKey: kubernetes.io/hostname
# Pod will try to schedule in a node having 'app=backend' labeled pod 
spec:
  affinity:
    podAffinity:
      preferredDuringSchedulingIgnoredDuringExecution:
      - weight: 100
        podAffinityTerm:
          labelSelector:
            matchExpressions:
            - key: app
              operator: In
              values:
              - backend
            # matchLabels:
            #   app: backend
          topologyKey: kubernetes.io/hostname

Pod anti-affinity

# Pod won't be scheduled in a node having 'app=frontend' labeled pod 
spec:
  affinity:
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
          - key: app
            operator: In
            values:
            - frontend
          # matchLabels:
          #   app: frontend
        topologyKey: kubernetes.io/hostname
# Pod will try not to schedule in a node having 'app=backend' labeled pod 
spec:
  affinity:
    podAntiAffinity:
      preferredDuringSchedulingIgnoredDuringExecution:
      - weight: 100
        podAffinityTerm:
          labelSelector:
            matchExpressions:
            - key: app
              operator: In
              values:
              - backend
            # matchLabels:
            #   app: backend
          topologyKey: kubernetes.io/hostname