#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

apiVersion: v1
kind: Pod
metadata:
  name: with-pod-affinity-01
  labels:
    app: pause
    applicationId: "pod-with-pod-affinity-01"
    queue: "root.sandbox"
    zone: z1
spec:
  schedulerName: yunikorn
  affinity:
    podAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
            matchExpressions:
              - key: zone
                operator: In
                values:
                  - z1
          topologyKey: "kubernetes.io/hostname"
  containers:
    - name: with-pod-affinity
      image: k8s.gcr.io/pause:2.0
      resources:
        requests:
          cpu: "100m"
          memory: "500M"
---
apiVersion: v1
kind: Pod
metadata:
  name: with-pod-affinity-02
  labels:
    app: pause
    applicationId: "pod-with-pod-affinity-01"
    queue: "root.sandbox"
    zone: z1
spec:
  schedulerName: yunikorn
  affinity:
    podAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
            matchExpressions:
              - key: zone
                operator: In
                values:
                  - z1
          topologyKey: "kubernetes.io/hostname"
  containers:
    - name: with-pod-affinity
      image: k8s.gcr.io/pause:2.0
      resources:
        requests:
          cpu: "100m"
          memory: "500M"