首页 > 其他分享 >在K8S中,"节点亲和性"和"节点选择器"的区别在哪里?

在K8S中,"节点亲和性"和"节点选择器"的区别在哪里?

时间:2024-02-26 09:12:18浏览次数:31  
标签:匹配 亲和性 调度 选择器 Pod K8S 节点

在Kubernetes(K8s)中,“节点选择器”(Node Selector)和“节点亲和性”(Node Affinity)都是用来指导Pod调度到合适节点的机制,但它们在功能和灵活性上有一定的区别:

节点选择器(Node Selector)

  • 是较早且较为基础的一种调度策略,用于简单匹配节点的标签(labels)。
  • 当在Pod的规范中定义了节点选择器时,Pod将只能被调度到拥有匹配标签的节点上。
  • 节点选择器仅支持简单的相等性匹配,即Pod要么调度到标签完全匹配的节点上,要么无法调度。

节点亲和性(Node Affinity)

  • 是节点选择器功能的增强和扩展,提供了更细粒度和更复杂的调度策略。
  • 节点亲和性包含硬亲和性(RequiredDuringSchedulingIgnoredDuringExecution)和软亲和性(PreferredDuringSchedulingIgnoredDuringExecution)两种模式:
    • 硬亲和性:必须满足,否则Pod无法被调度。类似于节点选择器,但可以定义更复杂的匹配规则,比如集合匹配、集合排除等。
    • 软亲和性:不是强制要求,而是尽量满足。即便未满足亲和性规则,调度器仍有可能调度Pod到相应的节点,只是这样的节点会得到更高的调度优先级。
  • 节点亲和性可以设置更复杂的匹配条件,例如基于节点标签的比较运算符(如存在、不在、等于、不等于等),而且可以组合多个条件,支持AND/OR规则逻辑。

综上所述,节点选择器提供的是标签匹配的基本调度过滤功能,而节点亲和性提供了一种更强大、更灵活的方式来表达Pod与节点间的关系,允许Pod更加精确地定位到适合它的节点上。

标签:匹配,亲和性,调度,选择器,Pod,K8S,节点
From: https://www.cnblogs.com/huangjiabobk/p/18033615

相关文章

  • 数据链路(相邻节点传输数据帧)(计算机网络)
    信道:以传输媒介为基础的信号通道。数据链路层信道点对点信道:使用一对一的点对点通信方式广播信道:使用一对多的广播通信方式。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。从数据链路层看,H1到H2的通信可以由四段不同的链路层通信组......
  • k8s创建容器的两种办法
    1,命令行创建容器1.1kubectlrun通过命令行参数创建容器#从镜像仓库拉取kubectlrunmycentos007--image=centos-test-telnet:latest#从本地拉取kubectlrunmycentos007--image=centos-test-telnet:latest--image-pull-policy=Never1.2kubectlcreate命令创......
  • k8s-flannel网络详解
    1,网卡k8s安装完以后,查看k8s各node节点的网卡,会发现多了4个网卡docker0,flannel.1,cni0,veth,其中docker0纯粹是因为安装了docker服务才生成的网卡,和k8s集群是的逻辑架构没关系1.1docker0网卡docker0充当了一个网桥的功能,就是相当于一个集线器的功能,一个口收到信号......
  • 在K8S中,RS资源如何实现升级和回滚?
    在Kubernetes中,ReplicaSet(简称RS)是工作负载API对象,用于确保指定数量的Pod副本在集群中运行。当需要升级或回滚RS管理的Pod时,可以通过修改ReplicaSet的配置来实现。下面是如何实现RS资源的升级和回滚的步骤:升级RS资源修改ReplicaSet的配置:要升级RS,您需要修改其对应的Deploymen......
  • 在K8S中,SVC资源是否支持在K8S集群外部访问?
    在Kubernetes(K8S)中,Service资源可以通过特定类型支持在集群外部访问。以下是一些可以提供外部访问能力的Service类型:NodePort:NodePort服务会将服务映射到每个节点上的一个静态端口(范围默认为30000-32767)。通过这个端口,集群外部可以直接通过任意节点的IP地址和该NodePort来......
  • 在K8S中,如何实现金丝雀发布(灰度发布)?蓝绿发布?
    在Kubernetes(K8s)中,可以通过不同的策略来实现金丝雀发布(灰度发布)和蓝绿发布。以下是两种发布方式在K8s中的基本实现方法:金丝雀发布(灰度发布)金丝雀发布是一种逐步将新版本应用推送给部分用户群体,以收集反馈并监控新版本表现的方式。在K8s中,可以通过以下步骤实现:基于Deploym......
  • 在K8S中,如何让Pod运行一次?如何解决一次性任务?
    在Kubernetes(K8S)中,要让Pod运行一次并完成一次性任务,可以使用Job资源。Job是Kubernetes中用于运行一次性任务的工作负载API对象。它创建一个或多个Pod,并确保指定数量的Pod成功终止。当Pod成功完成后,Job将跟踪成功完成的情况。当达到指定的成功完成次数时,任务(即Job)就完成了。以下是......
  • 在K8S中,如果解决周期性任务?
    在Kubernetes(K8S)中,解决周期性任务可以使用CronJob资源。CronJob是Kubernetes提供的一种工作负载API对象,它允许你根据预定的时间表(类似于Unix系统的cron作业)来周期性地运行任务。以下是如何使用CronJob来解决周期性任务的步骤:创建CronJob资源配置文件:创建一个YAML文件(例如cron......
  • 2024-02-24:用go语言,给你一个 n 个点的带权无向连通图,节点编号为 0 到 n-1, 同时还有一
    2024-02-24:用go语言,给你一个n个点的带权无向连通图,节点编号为0到n-1,同时还有一个数组edges,其中edges[i]=[fromi,toi,weighti],表示在fromi和toi节点之间有一条带权无向边,最小生成树(MST)是给定图中边的一个子集,它连接了所有节点且没有环,而且这些边的权值和最......
  • linux节点安装必要的前端项目环境
    当前linux(centos7)服务器节点用于部署前端项目step1:安装Nodejs将node的安装包,例如:node-v12.16.3-linux-x64.tar.xz上传至服务器的root目录下tips:借助gitbash的scp命令上传本地文件至服务器scp./[email protected]:/root/在/usr/......