1分钟搞懂K8S中的NodeSelector

news/2024/12/21 22:31:57/文章来源: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,一经查实,立即删除!

相关文章

谷歌浏览器调试技巧

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

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

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

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

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

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

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

2024-10-06 闲话

2024-10-06 闲话坐在电脑前 1 小时也什么都写不出来。 比如我现在住的地方(在一个房子里面)旁边有一个大冰块,因为这个大冰块在吸热所以我在家里感受到了无尽的寒冷。 于是我读了几本古圣先贤的书,合成了能烧来取暖的蜂窝煤。我又拿了根钻头把蜂窝煤点着了,尾气全部排到房…

报错集

报错集弹性云服务器ECS + 自动分配IP地址 + 配置安全组规则 + 配置并创建桶1.另外一个冲突的操作当前正作用在这个资源上,请等待一段时间后重试。 A conflicting conditional operation is currently in progress against this resource.Please try again 解决方案:桶的名称重…

云锵投资 2024 年 9 月简报

季报摘要行情:双重底结束,牛市启动;未来:长线看多; 期权策略:研发成功。节后正式上线,是未来的主要现金流策略; 微盘策略:非主流策略,三月连涨,未来长持; 本季度量化基金策略业绩:15.89%,优,全国排名:1858/11684;平均 Beta:1.00; 本季度量化股票策略业绩:3…

激活 Ultra Mobile Paygo

淘宝买一张 Ultra Mobile Paygo 电话卡(也叫做美国紫卡)(可选)在 NumberBarn 购买一个手机号。Plan 记得选 Port Away。打开 paygo.ultra.me/activate,填入卡面上的激活码,然后继续。填写相关信息。如果购买了手机号,选择 Transfer an Existing Number。未完待续

OJ在线判题系统项目

我的OJ在线判题系统介绍在线代码测评系统 开源地址 https://gitee.com/xj-oj/oj-project/tree/master 开发环境Java版本:Jdk 17 数据库:MySQL 8.0、Redis 6.2.6 开发工具 :IntelliJ IDEA、Maven 3.8.6采用技术Spring Boot、MyBatis-Plus、redis vue3、Axios、Element Plus部…

Trie

835. Trie字符串统计 模板题: 维护一个字符串集合,支持两种操作:I x 向集合中插入一个字符串 x; Q x 询问一个字符串在集合中出现了多少次。共有 N 个操作,所有输入的字符串总长度不超过 10^5,字符串仅包含小写英文字母。 输入格式 第一行包含整数 N,表示操作数。 接下来…

#2024-2025-1学号20241309《计算机基础与程序设计》第二周学习总结

作业信息这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计这个作业要求在哪里 2024-2025-1计算机基础与程序设计第二周作业这个作业的目标作业正文 2024-2025-1学号20241309《计算机基础与程序设计》第二周学习总结教材学习内容总结 《计算机科学概论》第一章 1.计算系统…

Ubuntu20.04安装LabelImg 以及出现(ModuleNotFoundError: No module named libs.resources)错误

安装 Ubuntu系统安装labelImg: sudo apt install pyqt5-dev-tools接下来,通过 GitHub 下载 LabelImg: git clone https://github.com/tzutalin/labelImg.git cd labelimg-master cd requirements/ sudo pip3 install -r requirements-linux-python3.txt -i https://pypi.tun…