K8S学习之基础六:k8s中pod亲和性

news/2025/3/6 15:14:18/

Pod节点亲和性和反亲和性

podaffinity:pod节点亲和性指的是pod会被调度到更趋近与哪个pod或哪类pod。

podunaffinity:pod节点反亲和性指的是pod会被调度到远离哪个pod或哪类pod

1.  Pod节点亲和性

requiredDuringSchedulingIgnoredDuringExecution: 硬亲和性

preferredDuringSchedulingIgnoredDuringExecution:软亲和性

vi pod-required-affinity-demo-1.yaml 
apiVersion: v1
kind: Pod
metadata:name: nginxlabels:app: nginxtier: monitor
spec:containers:- name: nginximage: 172.16.80.140/nginx/nginx:1.26imagePullPolicy: IfNotPresent
kubectl apply -f pod-required-affinity-demo-1.yaml 
kubectl get pods -owide

vi pod-required-affinity-demo-2.yaml 
kind: Pod
metadata:name: busyboxlabels:app: backendtier: db
spec:containers:- name: busyboximage: 172.16.80.140/busybox/busybox:latestimagePullPolicy: IfNotPresentcommand: ["sh","-c","sleep 3600"]affinity:podAffinity:requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchExpressions:- {key: app, operator: In, values: ["nginx"]}topologyKey: kubernetes.io/hostname

以上可以看出,第二个pod(busybox)由于设置了硬亲和性,需要和具有app=nginx的标签的pod在一起,所以也被创 建到了node01上

Pod节点亲和性

vi pod-required-affinity-demo-3.yaml 
kind: Pod
metadata:name: busybox1labels:app: backend1tier: db
spec:containers:- name: busybox1image: 172.16.80.140/busybox/busybox:latestimagePullPolicy: IfNotPresentcommand: ["sh","-c","sleep 3600"]affinity:podAntiAffinity:requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchExpressions:- {key: app, operator: In, values: ["nginx"]}topologyKey: kubernetes.io/hostname

以上可以看出,第三个pod(backend)设置了pod发亲和性,和匹配的pod创建在了不同的node上

vi pod-required-affinity-demo-4.yaml
apiVersion: v1
kind: Pod
metadata:name: busybox2labels:app: backendtier: db
spec:containers:- name: busybox2image: 172.16.80.140/busybox/busybox:latestimagePullPolicy: IfNotPresentcommand: ["sh","-c","sleep 3600"]affinity:podAntiAffinity:requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchExpressions:- {key: app, operator: In, values: ["nginx"]}topologyKey: kubernetes.io/hostname- labelSelector:matchExpressions:- {key: tier, operator: In, values: ["db"]}topologyKey: kubernetes.io/hostname

以上可以看出,因为busybox2的反亲和性,导致没有pod符合条件,只能是pending状态


http://www.ppmy.cn/news/1577096.html

相关文章

Docker 学习(一)

一、Docker 核心概念 Docker 是一个开源的容器化平台,允许开发者将应用及其所有依赖(代码、运行时、系统工具、库等)打包成一个轻量级、可移植的“容器”,实现 “一次构建,随处运行”。 1、容器(Container…

AI控制游戏 -- 开源框架来了!

GamingAgent框架代表了AI控制游戏玩法的重大进步,为开发者提供了一个模块化、低代码的解决方案,用于在视频游戏中创建自主代理。该框架以Virtuals生态系统中的GAME等系统为例,提供了一种即插即用的基础架构,简化了AI代理的创建和管…

通信小贾的西天取经之路:从茫然小白到工业互联网售前

近年来,随着5G、物联网、云计算等技术的快速发展,通信行业迎来了新一轮的变革浪潮。根据工信部数据显示,2022年我国通信业固定资产投资完成4193亿元,同比增长8.5%,其中5G投资占比超过40%。与此同时,工业互联…

系统功能:查询系统各角色数量

本篇文章主要讲解vue毕设项目中,查询系统各角色数量,并渲染到echarts图标的全部过程。 一、sql语句 观察user表: 观察role表: 编写如下sql: select count(u.role_id) as value, r.rolename as name from user u joi…

React:Redux

Redux引入 Redux感觉像组件通信的中介 state存放被管理的状态 action是申请改哪些数据,传入什么参数 reducer是怎么修改数据 我的理解更像是action像一个储存方法的对象,reducer是具体的方法的实现,不同的方法实现也不一样 store是个仓库…

数据结构篇—队列(queue)

一、引入 Tips:队列本应该跟栈一块讲的,奈何实在是学不完了,悄悄偷个懒,把这个拆成两部分来写QAQ。 紧接上文.................... 让我们把目光转到一条传送带上,让我们仔细观察一下这个物品在传送带上是怎么运行的呢…

试过了,多模态大模型Qwen/Qwen2.5-VL-3B-Instruct需要21G显存,我还是太天真啊!

前缘概述 之前说道,我想通过自己的笔记本(6G显存)部署一个Qwen/Qwen2.5-VL-3B-Instruct,最后因为显存不够,就放弃了。 Centos7,T4,几多磨难 但随后,我便开始了在一台系统为centos7,显卡为T4的机器上进行部署。总之就是很磨难,很多坑,最后还没有成功。 我猜测,相…

算法-数据结构-动态规划(有向图,到达一个节点的路径数量)

力扣题目:LCP 07. 传递信息 - 力扣(LeetCode) 小朋友 A 在和 ta 的小伙伴们玩传信息游戏,游戏规则如下: 有 n 名玩家,所有玩家编号分别为 0 ~ n-1,其中小朋友 A 的编号为 0每个玩家…