侧边栏壁纸
博主头像
爱运维 博主等级

行动起来,活在当下

  • 累计撰写 197 篇文章
  • 累计创建 143 个标签
  • 累计收到 21 条评论

目 录CONTENT

文章目录
K8S

node pod亲和性affinity

Administrator
2019-07-28 / 0 评论 / 0 点赞 / 7 阅读 / 0 字

位置:deploy.spec.template.spec.affinity

硬亲和和软亲和说明:(不管是node还是pod都可以用软亲和或者硬亲和)

  1. requiredDuringSchedulingIgnoredDuringExecution(硬亲和):必须满足,如果不满足则不进行调度
  2. preferredDuringSchedulingIgnoredDuringExecution(软亲和):倾向满足,不满足的情况下会调度的不符合条件的Node上。

Node亲和性:

nodeAffinity
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution: #硬亲和
        nodeSelectorTerms: 
        - matchExpressions:
          - key: kubernetes.io/e2e-az-name #NODE的key
            operator: In   #在
            values:   #值里面
            - e2e-az1 
            - e2e-az2
      preferredDuringSchedulingIgnoredDuringExecution:#软亲和
      - weight: 1               //取值范围1-100
        preference:
          matchExpressions:
          - key: another-node-label-key
            operator: In
            values:
            - another-node-label-value
  containers:
  - name: nginx
    image: docker.io/nginx

Pod亲和性:

podAffinity:pod和pod运行在一起
apiVersion: v1
kind: Pod
metadata:
  name: with-pod-affinity
spec:
  affinity:
    podAffinity:
      requiredDuringSchedulingIgnoredDuringExecution: #硬亲和,必须满足
      - labelSelector: #pod标签选择器
          matchExpressions:
          - key: security  #key
            operator: In   #在
            values:
            - S1           #value的列表
        topologyKey: kubernetes.io/hostname  #通过node的hostname判断是否是相同节点,节点名一定不能一样
  containers:
  - name: with-pod-affinity
    image: k8s.gcr.io/pause:2.0
podAntiAffinity: pod和pod不能在一起
apiVersion: v1
kind: Pod
metadata:
  name: with-pod-affinity
spec:
  affinity:
    podAntiAffinity:
      preferredDuringSchedulingIgnoredDuringExecution: #软亲和
      - weight: 100 #权重
        podAffinityTerm:
          labelSelector:
            matchExpressions:
            - key: security
              operator: In
              values:
              - S2   #pod label security=s2,则不能调度
          topologyKey: kubernetes.io/hostname #通过node的hostname判断是否是相同节点,节点名一定不能一样
  containers:
  - name: with-pod-affinity
    image: k8s.gcr.io/pause:2.0
0

评论区