Kubernetes之NodeSelector与NodeName实战

目录

目标

版本

官网

概述

实战

NodeName实战

NodeSelector实战


目标

        通过配置NodeSelector与NodeName实现Pod运行(或优先运行)在我们期望的节点之上。了解这两种实现方法的区别。


版本

        Kubernets v1.25.0


官网

将Pod分配给节点icon-default.png?t=O83Ahttps://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/


概述

NodeSelector

官方定义

nodeSelector is the simplest recommended form of node selection constraint. You can add the nodeSelector field to your Pod specification and specify the node labels you want the target node to have. Kubernetes only schedules the Pod onto nodes that have each of the labels you specify.

See Assign Pods to Nodes for more information.

理解

        Pod可以在指定的K8s节点上运行,节点选择器通过筛选K8s节点上的标签得以实现。

NodeName

官方定义

nodeName is a more direct form of node selection than affinity or nodeSelectornodeName is a field in the Pod spec. If the nodeName field is not empty, the scheduler ignores the Pod and the kubelet on the named node tries to place the Pod on that node. Using nodeName overrules using nodeSelector or affinity and anti-affinity rules.

理解

        Pod可以在指定的K8s节点上运行,通过指定节点名称实现,这比节点选择器更加直接。


实战

NodeName实战

        创建Pod,通过指定节点名称实现Pod在该节点上运行。

第一步:创建YML文件,并指定要调度的节点名称。我这里指定的K8s节点名称是k8sslavenode2。

apiVersion: v1
kind: Pod
metadata:
  name: tomcat-pod
  namespace: default
spec:
  nodeName: k8sslavenode2
  containers:
  - name: tomcat
    image: 192.168.192.200/library/tomcat:8.0
    imagePullPolicy: Always
    ports:
    - containerPort: 8080

第二步:创建Pod,并观察Pod所运行的K8s节点。发现该Pod运行在k8sslavenode2上,完成需求。

kubectl apply -f my-tomcat.yml
kubectl get pod tomcat-pod -owide


NodeSelector实战

        创建Pod,通过指定NodeSelector实现Pod在该节点上运行。

第一步:创建YML文件,并指定节点选择器要求的标签。我这里要求该Pod运行在拥有env=dev的K8s节点之上。

apiVersion: v1
kind: Pod
metadata:
  name: tomcat-pod
  namespace: default
spec:
  nodeSelector:
    env: dev
  containers:
  - name: tomcat
    image: 192.168.192.200/library/tomcat:8.0
    imagePullPolicy: Always
    ports:
    - containerPort: 8080

第二步:给K8s节点设置标签。我这里给我的三个K8s节点设定了env标签,标签值分别是dev、test、pord。

kubectl label nodes k8smasternode env=test
kubectl label nodes k8sslavenode1 env=dev
kubectl label nodes k8sslavenode2 env=pord

 第三步:创建Pod,并观察Pod所运行的K8s节点。发现该Pod运行在k8sslavenode1节点上,完成需求。但为了更好地了解节点选择器,我们可以通过后续的步骤继续验证。

kubectl apply -f my-tomcat.yml
kubectl get pod tomcat-pod -owide

第四步:将k8sslavenode1节点上的env标签删除。

kubectl label nodes k8sslavenode1 env-
kubectl get node k8sslavenode1 --show-labels

第五步:删除Pod并重新创建。发现Pod的运行状态是Pending。意思是容器被创建但是未运行。

第六步:查看Pod的运行状态是Pending的具体原因。在详细信息的最后一行,提示容器调度失败。

kubectl describe pod tomcat-pod

第七步:重新为k8sslavenode1节点新增env=dev标签,再回头看Pod的运行状态,发现节点正常运行,再次证明了节点选择器生效了。

kubectl label nodes k8sslavenode1 env=dev

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何构建有效的AI Agents:从复杂到简约——深度解读Claude实践总结《Building effective agents》(上)

在人工智能技术日新月异的今天,大语言模型(LLM)已经成为技术创新的热点。 然而,在追逐技术前沿的热潮中,我们是否忽视了工程设计的本质? 作为全球人工智能领域的领军企业之一,Anthropic以其在AI安全和伦理方面的深入…

高中数学刷题版:函数奇偶性[干货]

文章目录 一、奇偶性定义例题 二、运算性质1、两个函数的和差积商2、复合函数3、画草图4、对称中心与对称轴 三、奇偶性判断例题 四、根据奇偶性求解析式例题 五、单调性与奇偶性的综合应用例题 一、奇偶性定义 1、定义域都是关于原点对称。 2、解析式关系 奇函数:…

【Sentinel】流控效果与热点参数限流

目录 1.流控效果 1.1.warm up 2.2.排队等待 1.3.总结 2.热点参数限流 2.1.全局参数限流 2.2.热点参数限流 2.3.案例 1.流控效果 在流控的高级选项中,还有一个流控效果选项: 流控效果是指请求达到流控阈值时应该采取的措施,包括三种&…

【Rust自学】7.4. use关键字 Pt.2 :重导入与换国内镜像源教程

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 7.4.1. 使用pub use重新导入名称 使用use将路径导入作用域内后。该名称在词作用域内是私有的。 以上一篇文章的代码为例: m…

集装箱的纸箱和塑料箱识别数据集,使用YOLO,COCO JSON,PASICAL VOC XML格式标注,识别准确率高达97.5%

集装箱的纸箱和塑料箱识别数据集,使用YOLO,COCO JSON,PASICAL VOC XML格式标注,识别准确率高达97.5% 数据集分割 训练组88% 4605图片 有效集8% 438图片 测试集4% 219图片 预处理 自动定向&#x…

TOP K问题:利用堆排序找出数组中最小的k个数

设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。 找小的数需要建大堆来解决,首先将数组中前K个数建成一个大堆,将从k1个数直到数组结束的所有数与堆顶的数进行比较,如果比堆顶的数小,则替换堆顶的数…

VDA 学习手册

VDA(Verband der Automobilindustrie,德国汽车工业联合会)报文标准是专为汽车行业制定的电子数据交换(EDI)标准,用于支持供应链管理中的数据传输。它是由德国汽车工业联合会开发和维护的,广泛应…

自动化测试- 自动化测试模型

目录 自动化测试模型简介 1、线性模型 举例 测试页面html文件 测试脚本 2. 关键字驱动测试(Keyword-Driven Testing) 需测试内容 关键字驱动测试框架 创建测试用例文件 运行测试 3. 数据驱动测试(Data-Driven Testing) …

【Halcon】例程讲解:基于形状匹配与OCR的多图像处理(附图像、程序下载链接)

1. 开发需求 在参考图像中定义感兴趣区域(ROI),用于形状匹配和文本识别。通过形状匹配找到图像中的目标对象位置。对齐多幅输入图像,使其与参考图像保持一致。在对齐后的图像上进行OCR识别,提取文本和数字信息。以循环…

快速理解24种设计模式

简单工厂模式 建立产品接口类,规定好要实现方法。 建立工厂类,根据传入的参数,实例化所需的类,实例化的类必须实现指定的产品类接口 创建型 单例模式Singleton 保证一个类只有一个实例,并提供一个访问他它的全局…

CKA认证 | Day7 K8s存储

第七章 Kubernetes存储 1、数据卷与数据持久卷 为什么需要数据卷? 容器中的文件在磁盘上是临时存放的,这给容器中运行比较重要的应用程序带来一些问题。 问题1:当容器升级或者崩溃时,kubelet会重建容器,容器内文件会…

【JavaEE进阶】@RequestMapping注解

目录 📕前言 🌴项目准备 🌲建立连接 🚩RequestMapping注解 🚩RequestMapping 注解介绍 🎄RequestMapping是GET还是POST请求? 🚩通过Fiddler查看 🚩Postman查看 …

ROUGE指标在自然语言处理中的应用:从理论到实践

引言 你是否曾经遇到过机器生成的文本摘要与原文内容不符的情况?或者在使用机器翻译时,发现译文虽然“看起来”正确,但语义却与原文相差甚远?在自然语言处理(NLP)领域,如何科学地评估生成文本的…

编译openssl遇到错误Parse errors: No plan found in TAP output的解决方法

在编译openssl时 tar -zxvf openssl-1.1.1p.tar.gz cd openssl-1.1.1p ./config --prefix/usr --openssldir/etc/ssl --shared zlib make make test 遇到错误 Parse errors: No plan found in TAP output 解决方法: yum install perl-Test-Simple

Visual Studio 2017 配置 OpenCV 4.5.5 及二次配置的导入

重点参考: Visual Studio 2017 OpenCV_4.5.0安装_opencv4.5.0下载-CSDN博客 VS2017配置OpenCV4.5_vs2017 opencv4.5.4-CSDN博客 下载准备工作就不说了,直接从官网下载就行了。 关键就两步: 1)将OpenCV的bin目录添加到环境变量…

42 模板进阶

目录 一、非类型形参 (一)简介 (二)非类型形参与宏的区别 (三)注意点 二、模板的特化 (一)概念 (二)函数模板的特化 (三&#xff…

接口测试面试题

接口测试在软件测试中占据重要位置,无论是功能测试还是性能测试,接口的稳定性至关重要。以下总结了一些常见的接口测试面试题,帮助你从容应对面试挑战! 面试官常说:“接口测试是测试的重头戏,了解接口的设计…

使用ArcGIS/ArcGIS pro绘制六边形/三角形/菱形渔网图

在做一些尺度分析时,经常会涉及到对研究区构建不同尺度的渔网进行分析,渔网的形状通常为规则四边形。构建渔网的方法也很简单,使用ArcGIS/ArcGIS Pro工具箱中的【创建渔网/CreateFishnet】工具来构建。但如果想构建其他形状渔网进行相关分析&…

在Linux上获取MS(如Media Server)中的RTP流并录制为双轨PCM格式的WAV文件

在Linux上获取MS(如Media Server)中的RTP流并录制为双轨PCM格式的WAV文件 一、RTP流与WAV文件格式二、实现步骤三、伪代码示例四、C语言示例代码五、关键点说明六、总结在Linux操作系统上,从媒体服务器(如Media Server,简称MS)获取RTP(Real-time Transport Protocol)流…

Docker 是什么? Docker 基本观念介绍与容器和虚拟机的比较

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:历代文学,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计&#xf…