示例:

1、定义pod1.yaml文件

$ vi pod1.yaml

apiVersion: v1
kind: Pod
metadata:
  name: testpod01
  labels:
    app: myapp01
    env: test1
spec:
  containers:
  - name: testpod01
    image: nginx:1.21.6

2、应用pod1.yaml文件

$ k apply -f pod1.yaml

3、定义pod2.yaml文件

$ vi pod2.yaml

apiVersion: v1
kind: Pod
metadata:
  name: testpod02
  labels:
    app: myapp02
    env: test2
spec:
  affinity:
    podAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:  ##必须满足下面匹配规则
      - labelSelector:
          matchExpressions:
          - key: app
            operator: In
            values:
            - myapp01  ## app=myapp01, 上面的Pod是符合要求的
        topologyKey: "kubernetes.io/hostname"
  containers:
  - name: testpod02
    image: redis:6.2

4、应用pod2.yaml文件

$ k apply -f pod2.yaml

5、查看

查看pod身上所带标签

$ k get po --show-labels

NAME                            READY   STATUS    RESTARTS        AGE     LABELS

testpod01                       1/1     Running   0               3m21s   app=myapp01,env=test1
testpod02                       1/1     Running   0               2m59s   app=myapp02,env=test2

查看pod部署节点,观察到pod01和pod02分配到同一节点

$ k get po -o wide -w

NAME                            READY   STATUS              RESTARTS        AGE     IP               NODE           NOMINATED NODE   READINESS GATES

testpod01                       1/1     Running             0               60s     172.25.244.223   k8s-master01   <none>           <none>
testpod02                       1/1     Running   0               38s     <none>           k8s-master01   <none>           <none>

6、恢复

$ k delete -f pod1.yaml,pod2.yaml