1分钟搞懂K8S中的NodeSelector

news/2025/4/18 13:32:01/文章来源:https://www.cnblogs.com/sugartang/p/18274644

@

目录
  • NodeSelector是什么?
  • 为什么使用NodeSelector?
  • 怎么用NodeSelector?
      • POD配置示例
      • yaml配置示例
  • 如何知道K8S上面有哪些节点,每个节点都有什么信息呢?
      • 1. 使用kubectl命令行工具查看所有节点及其标签
      • 2. 使用kubectl命令行工具查看特定节点的标签
      • 代码举例
  • 常见的NodeSelector节点标签有哪些?
      • 区域和可用区标签:
      • 地区标签:
      • 硬件和能力标签:
      • 硬件类型:
      • 特性标签:
      • 自定义标签:
  • 其他常见问题
      • 与亲和性与反亲和性区别是什么呢?
  • 结语
      • 欢迎路过的小哥哥小姐姐们提出更好的意见哇~~

NodeSelector是什么?

NodeSelector 是 Kubernetes 中的一个概念,它允许用户通过标签选择器(label selectors)来指定 Pod 应该被调度到哪些节点上运行。这一机制为Pod的调度提供了灵活性,使得用户可以根据节点的标签属性来控制Pod的分布。

为什么使用NodeSelector?

  • 通过NodeSelector,我们可以指定固定节点运行服务
  • 解决PV ReadWriteOnce情况下,不影响项目运行情况下,实现节点调度

怎么用NodeSelector?

  • 在使用NodeSelector之前,首先需要在目标节点上设置标签。标签是键值对,用于描述节点的特征
  • 在Pod的定义文件(YAML或JSON)中,可以通过.spec.nodeSelector字段来设置NodeSelector。
  • Pod将会被调度到至少有一个标签满足NodeSelector中所有指定条件的节点上。

POD配置示例

   apiVersion: v1kind: Podmetadata:name: my-podspec:nodeSelector:kubernetes.io/hostname: uat-xxxxx # 关键代码containers:- name: my-containerimage: my-image

yaml配置示例

yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: my-deployment
spec:replicas: 3selector:matchLabels:app: my-apptemplate:metadata:labels:app: my-appspec:nodeSelector:        # 节点选择器kubernetes.io/hostname: uat-xxxxx # 关键代码containers:- name: my-containerimage: my-image

如何知道K8S上面有哪些节点,每个节点都有什么信息呢?

1. 使用kubectl命令行工具查看所有节点及其标签

使用以下命令可以列出集群中所有节点的信息,并显示它们的标签:

kubectl get nodes --show-labels

这条命令会返回一个表格,列出每个节点的名称、状态以及它们所携带的所有标签。

2. 使用kubectl命令行工具查看特定节点的标签

kubectl describe node NODE_NAME

代码举例

假设你想要查看名为k8s-node-1的节点标签,可以执行:

kubectl describe node k8s-node-1


常见的NodeSelector节点标签有哪些?

区域和可用区标签:

  • failure-domain.beta.kubernetes.io/zone: 表示节点所在的可用区(AZ),用于实现高可用性和容灾策略。
  • topology.kubernetes.io/zone: (推荐的新标签,逐步替代上面的beta标签)同样表示节点的可用区信息。

地区标签:

  • failure-domain.beta.kubernetes.io/region: 表示节点所属的地理区域,用于跨区域的高可用部署。
  • topology.kubernetes.io/region: (推荐的新标签)表示节点的地理区域信息。

硬件和能力标签:

  • beta.kubernetes.io/instance-type: 指示节点上实例的类型,如云提供商的实例规格。
  • kubernetes.io/hostname: 节点的主机名,每个节点都会自动添加此标签。
  • node-role.kubernetes.io/: 表示节点的角色,如控制平面节点(control-plane)、worker节点等,其中 可以是具体角色名称。

硬件类型:

  • beta.kubernetes.io/instance-type: 实例类型,如m5.large,适用于云提供商。

特性标签:

  • kubernetes.io/os: 表示节点的操作系统类型,如 linux。
  • kubernetes.io/arch: 表示节点的CPU架构,如 amd64、arm64。
  • node.kubernetes.io/lifecycle: 表示节点的生命周期状态,如 shutdown,但这个标签并不常用。

自定义标签:

  • 用户可以根据需要自定义标签,如 disktype: ssd 或 gpu: true,来标识节点是否具备SSD硬盘或GPU等特定硬件。

其他常见问题

与亲和性与反亲和性区别是什么呢?

  • NodeSelector 提供了基本的调度控制
  • 节点亲和性(nodeAffinity)和反亲和性(nodeAntiAffinity)是更高级的调度规则,它们不仅支持基于标签的选择,还支持更复杂的逻辑表达,比如集合操作、硬软限制等,提供了更细粒度的控制。

结语

  • 今天就写到这里啦~
  • 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
  • 大家要天天开心哦

欢迎大家指出文章需要改正之处~
学无止境,合作共赢

在这里插入图片描述

欢迎路过的小哥哥小姐姐们提出更好的意见哇~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/808829.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1208. 尽可能使字符串相等(leetcode)

https://leetcode.cn/problems/get-equal-substrings-within-budget/description/ 滑动窗口,固定的套路是,固定右端点枚举,缩小左端点维护合法的窗口状态,在维护使得合法后(状态变化具有单调性,即扩大区间,状态是单调变化的),左端点是满足合法性质的最右点了,才更新答案 class …

567. 字符串的排列(leetcode)

https://leetcode.cn/problems/permutation-in-string/description/ class Solution {public boolean checkInclusion(String S1, String S2) {// 看数据范围以及感觉,是双指针,固定窗口大小s1.length// int[] cntS1=new int[128];int[] cntS2=new int[128];char[] s1=S1.toCha…

ElasticSearch之网络配置

对官方文档Networking的阅读笔记。 ES集群中的节点,支持处理两类通信平面集群内节点之间的通信,官方文档称之为transport layer。 集群外的通信,处理客户端下发的请求,比如数据的CRUD,检索等,官方文档称之为HTTP layer。对于这两个平面公共的配置,配置参数可以使用netwo…

谷歌浏览器调试技巧

谷歌浏览器断点调试# “资源(Sources)”面板# 进入浏览器,点击F12,进入调试面板,点击source 切换按钮 会打开文件列表的选项卡。资源(Sources)面板包含三个部分:文件导航(File Navigator) 区域列出了 HTML、JavaScript、CSS 和包括图片在内的其他依附于此页面的文件。…

两种方案手把手教你多种服务器使用tinyproxy搭建http代理

@目录Tinyproxy是什么?特点功能安装方案一:Docker安装安装tinyproxy镜像,启动容器将内部8888端口至外部,ANY代表允许所有ip访问代理获得代理地址安装方案二:系统包管理器Tinyproxy 可以通过包管理器安装。以下是一些常见的 Linux 和 mac发行版的安装命令:MAC电脑Linux配置…

76. 最小覆盖子串(leetcode)

https://leetcode.cn/problems/minimum-window-substring/description/ 难点在于解决字符出现次数的计算以及如何理解[涵盖],如何判断是否涵盖 class Solution {public String minWindow(String S, String t) {// 涵盖:s子串中每个字母出现的次数都大于等于t每个字母出现的次数…

Docker系列-5种方案超详细讲解docker数据存储持久化(volume,bind mounts,NFS等)

@目录Docker的数据持久化是什么?1.数据卷(Data Volumes)使用Docker 创建数据卷创建数据卷创建一个容器,将数据卷挂载到容器中的 /data 目录。进入容器,查看数据卷内容停止并重新启动容器,数据卷中的数据仍然存在再次进入容器,检查文件是否存在使用 Docker Compose 创建数…

基于simulink的风轮机发电系统建模与仿真

1.课题概述使用simulink实现风轮机发电系统建模与仿真,包括风速模型(基本风+阵风+阶跃风+随机风组成),风力机模型,飞轮储能模块等。2.系统仿真结果 3.核心程序与模型 版本:MATLAB2022a风速模块:风力机模块 整体模型4.系统原理简介 4.1 风速模型风速模型在风力发电和其他…