可以将节点亲和性看作Node Selector 的升级版,亲和性语义更多,灵活性更强。

强亲和性(hard node affinity)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
              - matchExpressions:
                  - key: disktype
                    operator: In
                    values:
                      - ssd
      imagePullSecrets: 
      - name: kleven-registry
      containers:
        - name: nginx
          image: kleven-repositpry:8083/nginx

requiredDuringScheduling: 必须满足才能被调度,在kube-scheduler 的 predicate 阶段筛选符合条件的节点。

软亲和性(soft node affinity)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      affinity:
        nodeAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 1
            preference:
              matchExpressions:
                - key: disktype
                  operator: In
                  values:
                    - ssd
      imagePullSecrets: 
      - name: kleven-registry
      containers:
        - name: nginx
          image: kleven-repositpry:8083/nginx

preferredDuringScheduling: 满足条件的节点优先调度,即优先级要高一些,发生在kube-scheduler的priority的阶段,通常也称之为打分阶段。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐