kubernetes之Affinity亲和性

本文介绍了Kubernetes中的Affinity特性,包括nodeSelector、nodeAffinity和podAffinity,用于控制Pod的调度策略。通过设置不同类型的亲和性和反亲和性,可以实现Pod在节点上的特定分布,如避免或强制部署在同一节点上。内容详细解释了各种操作符和标签键的使用,帮助理解如何实现精细化的Pod调度策略。
摘要由CSDN通过智能技术生成

背景介绍

一般情况部署的Pod是通过集群的自动调度策略来选择节点,默认情况下调度器考虑的是资源足够,并且负载尽量平均。但是有时候我们并不需要一些服务都部署在同一节点上,害怕服务之间产生影响;但是有时候也需要部署在同一节点上。这时候就用到了亲和性与反亲和性

亲和性种类:nodeAffinity(节点亲和性)、podAffinity(Pod亲和性)

nodeSelector

首先了解最常见与简单的调度方法nodeSelector。通过匹配label去匹配Pod资源。查看node的label

kubectl get nodes --show-labels

为node添加label

kubectl label nodes node1 app=test

之后在Pod的yaml文件中的spec字段添加即可,文档添加的是node-role.kubernetes.io/worker(kubernetes内置节点标签)

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  nodeSelector:
    app: test

亲和性与反亲和性

调度策略:软策略与硬策略

  • 软策略:满足条件最好,不满足也可以。preferredDuringSchedulingIgnoredDuringExecution
  • 硬策略:必须满足,不然就不干了。requiredDuringSchedulingIgnoredDuringExecution

nodeAffinity

控制pod可以部署在哪些node上,不可以在那些node上。
示例分析

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: affinity
spec:
  replicas: 2
  revisionHistoryLimit: 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值