示例:
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:
podAntiAffinity:
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.225 k8s-master01 <none> <none>
testpod02 1/1 Running 0 38s <none> k8s-node01 <none> <none>
6、恢复
$ k delete -f pod1.yaml,pod2.yaml