kubernetes视频教程笔记 (26)-集群调度-节点亲和性

本文详细解析了Kubernetes中节点亲和性(node affinity)的两种策略——软策略和硬策略,以及pod亲和性和反亲和性的使用方法,包括nodeSelectorTerms和matchExpressions的运算关系。重点讲解了组合应用和关键概念,适合深入了解K8s调度原理的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

一、节点亲和性

1. pod.spec.nodeAffinity

  • preferredDuringSchedulingIgnoredDuringExecution:软策略
  • requiredDuringSchedulingIgnoredDuringExecution:硬策略

 

2. requiredDuringSchedulingIgnoredDuringExecution

apiVersion: v1
kind: Pod
metadata:
 name: affinity
 labels:
  app: node-affinity-pod
spec:
 containers:
 - name: with-node-affinity
   image: hub.atguigu.com/library/myapp:v1
 affinity:
  nodeAffinity:
   requiredDuringSchedulingIgnoredDuringExecution:
    nodeSelectorTerms:
    - matchExpressions:
      - key: kubernetes.io/hostname
        operator: NotIn
        values:
        - k8s-node02

 

 

 

 

 

 

3. preferredDuringSchedulingIgnoredDuringExecution

apiVersion: v1
kind: Pod
metadata:
 name: affinity
 labels:
  app: node-affinity-pod
spec:
 containers:
 - name: with-node-affinity
   image: hub.atguigu.com/library/myapp:v1
 affinity:
  nodeAffinity:
   preferredDuringSchedulingIgnoredDuringExecution:
   - weight: 1
     preference:
      matchExpressions:
      - key: source
        operator: In
        values:
        - qikqiak

 

 

 

 

 

 

 

 

4. 合体

apiVersion: v1
kind: Pod
metadata:
 name: affinity
 labels:
  app: node-affinity-pod
spec:
 containers:
 - name: with-node-affinity
   image: hub.atguigu.com/library/myapp:v1
 affinity:
  nodeAffinity:
   requiredDuringSchedulingIgnoredDuringExecution:
    nodeSelectorTerms:
    - matchExpressions:
      - key: kubernetes.io/hostname
        operator: NotIn
        values:
         - k8s-node02
   preferredDuringSchedulingIgnoredDuringExecution:
   - weight: 1
     preference:
      matchExpressions:
      - key: source
        operator: In
        values:
        - qikqiak

 

如果nodeSelectorTerms下面有多个选项的话,满足任何一个条件就可以了;

如果matchExpressions有多个选项的话,就必须同时满足这些条件才能正常调度pod

 

 

5. 键值运算关系

  • In:label 的值在某个列表中
  • NotIn:label 的值不在某个列表中
  • Gt:label 的值大于某个值
  • Lt:label 的值小于某个值
  • Exists:某个 label 存在
  • DoesNotExist:某个 label 不存在

 

二、Pod 亲和性(Pod和Pod之间)

1. pod.spec.affinity.podAffinity/podAntiAffinity

  • preferredDuringSchedulingIgnoredDuringExecution:软策略
  • requiredDuringSchedulingIgnoredDuringExecution:硬策略

 

apiVersion: v1
kind: Pod
metadata:
 name: pod-3
 labels:
  app: pod-3
spec:
 containers:
 - name: pod-3
   image: hub.atguigu.com/library/myapp:v1
 affinity:
  podAffinity:
   requiredDuringSchedulingIgnoredDuringExecution:
   - labelSelector:
      matchExpressions:
      - key: app
        operator: In
        values:
        - pod-1
     topologyKey: kubernetes.io/hostname
  podAntiAffinity:
   preferredDuringSchedulingIgnoredDuringExecution:
   - weight: 1
     podAffinityTerm:
      labelSelector:
       matchExpressions:
       - key: app
         operator: In
         values:
         - pod-2
      topologyKey: kubernetes.io/hostname

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. 亲和性/反亲和性调度策略比较如下:

 

 

 

 

内容来自https://study.163.com/course/courseMain.htm?courseId=1209568805

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件工程小施同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值