セレクター、ノードセレクター、ノードとポッドのアフィニティ

セレクタ:

selector:
  matchLables:
    app: nginx
selector:
  matchExpressions:
  - key: app
    operator: In
    values:
    - nginx
 
----------
selector:
  matchExpressions:
  - key: app
    operator: Exists:

(In、NotIn、Exists、DoesNotExist、Gt、Lt)

nodeselector:

nodeselector:
    label: value(节点标签)

ノードアフィニティ:

spec:   #pod的spec下
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
          name: nginxweb
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:  # 硬策略
            nodeSelectorTerms:
            - matchExpressions:
              - key: kubernetes.io/hostname
                operator: NotIn
                values:
                - master1
          preferredDuringSchedulingIgnoredDuringExecution:  # 软策略
          - weight: 1   #权重
            preference:
              matchExpressions:
              - key: com
                operator: In
                values:
                - youdianzhishi

最初にハードポリシーを満たし、ソフトポリシーを満たそうとします(ノードとポッドのアフィニティ、ポッドの非アフィニティ、およびハードの不満はスケジュールできず、常に保留中です。これは、いわゆるスケジュール可能なノードが常に存在しないためです。 nodeSelectorTermsの下で期間ノード中にスケジュール可能なものを探して
いずれか1つを満たす場合、matchExpressionsの下に複数の一致ルールがある場合は、それらすべてを満たす必要があります。

下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: pod-affinity
  labels:
    app: pod-affinity
spec:
  replicas: 3
  selector:
    matchLabels:
      app: pod-affinity
  template:
    metadata:
      labels:
        app: pod-affinity
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
          name: nginxweb
      affinity:
        podAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:  # 硬策略
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - busybox-pod
            topologyKey: kubernetes.io/hostname   #拓扑域

---apiVersion: apps/v1
kind: Deployment
metadata:
  name: pod-antiaffinity
  labels:
    app: pod-antiaffinity
spec:
  replicas: 3
  selector:
    matchLabels:
      app: pod-antiaffinity
  template:
    metadata:
      labels:
        app: pod-antiaffinity
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
          name: nginxweb
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:  # 硬策略
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - busybox-pod
            topologyKey: kubernetes.io/hostname

おすすめ

転載: blog.csdn.net/weixin_45843419/article/details/123559140