title: Why does Kubernetes pod Affinity not work?
body: <p>I have following pods</p>
  
  <pre><code>NAME                                       READY   STATUS             NODE                          LABELS
  bss-a-0                                    5/5     Running            aks-bss-0   tcb.segment=bss,tcb.zone=centralus-1
  four-6mxdk                                 0/1     Pending            &lt;none&gt;      job-name=four
  rat-a-0                                    7/7     Running            aks-rat-1   tcb.segment=rat,tcb.zone=centralus-1
  rat-b-0                                    7/7     Running            aks-rat-2   tcb.segment=rat,tcb.zone=centralus-2
  seagull-0                                  1/1     Running            aks-bss-0   tcb.segment=rat
  </code></pre>
  
  <p>four-6mxdk is pod with following pod affinity section:</p>
  
  <pre><code>  affinity:
      podAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
            matchExpressions:
            - key: tcb.segment
              operator: In
              values:
              - rat
            - key: tcb.zone
              operator: In
              values:
              - centralus-1
          namespaces:
          - default
          topologyKey: k8s.io/hostname
  </code></pre>
  
  <p>Node detailes: </p>
  
  <pre><code>apiVersion: v1
  kind: Node
  metadata:
    annotations:
      node.alpha.kubernetes.io/ttl: "0"
      volumes.kubernetes.io/controller-managed-attach-detach: "true"
    labels:
      agentpool: rat
      beta.kubernetes.io/arch: amd64
      beta.kubernetes.io/instance-type: Standard_D32s_v3
      beta.kubernetes.io/os: linux
      failure-domain.beta.kubernetes.io/region: centralus
      failure-domain.beta.kubernetes.io/zone: centralus-1
      kubernetes.azure.com/cluster: cluster
      kubernetes.azure.com/role: agent
      kubernetes.io/arch: amd64
      kubernetes.io/hostname: aks-rat-1
      kubernetes.io/os: linux
      kubernetes.io/role: agent
      node-role.kubernetes.io/agent: ""
      storageprofile: managed
      storagetier: Premium_LRS
    name: aks-rat-1
    allocatable:
      attachable-volumes-azure-disk: "32"
      cpu: 31580m
      ephemeral-storage: "93492541286"
      hugepages-1Gi: "0"
      hugepages-2Mi: "0"
      memory: 121466760Ki
      pods: "30"
    nodeInfo:
      architecture: amd64
      containerRuntimeVersion: docker://3.0.8
      kernelVersion: 4.15.0-1069-azure
      kubeProxyVersion: v1.15.7
      kubeletVersion: v1.15.7
      operatingSystem: linux
      osImage: Ubuntu 16.04.6 LTS
  </code></pre>
  
  <p>My expectation: pod will be scheduled on node: aks-rat-1 due to it's only node where both labels are matched. </p>
  
  <p>Actual result: 3 node(s) didn''t match pod affinity/anti-affinity.</p>
  
  <p>Is it bug? or i do something wrong?</p>