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-podnamespace: default
spec:nodeName: k8sslavenode2containers:- name: tomcatimage: 192.168.192.200/library/tomcat:8.0imagePullPolicy: Alwaysports:- 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-podnamespace: default
spec:nodeSelector:env: devcontainers:- name: tomcatimage: 192.168.192.200/library/tomcat:8.0imagePullPolicy: Alwaysports:- 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

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

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

相关文章

【docker系列】打造个人私有网盘zfile

1. 介绍 是一个适用于个人的在线网盘(列目录)程序,可以将你各个存储类型的存储源,统一到一个网页中查看、预览、维护,再也不用去登录各种各样的网页登录后管理文件 2. 需要环境 2.1 硬件需求 CPU:至少1核 内存:推荐…

系统思考—冰山模型

“卓越不是因机遇而生,而是智慧的选择与用心的承诺。”—— 亚里士多德 卓越,从来不是一次性行为,而是一种习惯。正如我们在日常辅导中常提醒自己:行为的背后,隐藏着选择的逻辑,而选择的根源,源…

麒麟信安参展南京软博会,支持信创PC的新一代云桌面及全行业解决方案备受瞩目

12月20日至22日,由中国软件行业协会、江苏省软件行业协会等单位联合主办的2024中国(南京)软件产业博览会在南京国际博览中心隆重开幕。本届博览会以“软件驱动未来,数字闪耀金陵”为主题,吸引了各界目光,省…

【PLL】电荷泵锁相环各个环路参数意义

电荷泵锁相环(CPPLL)在模拟锁相环占据主导, 因为在环路中实现了积分器,而没有有缘放大器即:type 2锁相环可以使用无源RC滤波器实现,简化了PLL设计。 简单CPPLL 与C1串联电阻R1形成零点。 电容累积相位误差,提供积分路…

Java 网络原理 ①-IO多路复用 || 自定义协议 || XML || JSON

这里是Themberfue 在学习完简单的网络编程后,我们将更加深入网络的学习——HTTP协议、TCP协议、UDP协议、IP协议........... IO多路复用 ✨在上一节基于 TCP 协议 编写应用层代码时,我们通过一个线程处理连接的申请,随后通过多线程或者线程…

考研互学互助系统|Java|SSM|VUE| 前后端分离

【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库…

SpringBoot使用外置的Servlet容器(详细步骤)

嵌入式Servlet容器:应用打成可执行的jar 优点:简单、便携; 缺点:默认不支持JSP、优化定制比较复杂.; 外置的Servlet容器:外面安装Tomcat---应用war包的方式打包; 操作步骤: 方式一&…

Unity中的LayoutGroup与LayoutElement的实战应用

在开发中遇到过一个问题,首先我们是在4k分辨率下开发的,界面要求如下 我们以第二行为例子,第二行有3个界面,其中中间的界面是比较长的 面板中使用Vertical和Horizontal排列,并且勾选了ControlChildSize和ChildForceEx…

反应力场的生成物、反应路径分析方法

关注 M r . m a t e r i a l , \color{Violet} \rm Mr.material\ , Mr.material , 更 \color{red}{更} 更 多 \color{blue}{多} 多 精 \color{orange}{精} 精 彩 \color{green}{彩} 彩! 主要专栏内容包括: †《LAMMPS小技巧》: ‾ \textbf…

“自动驾驶第一股” 图森未来退市转型:改名 CreateAI、发布图生视频大模型 “Ruyi”

12 月 19 日,自动驾驶公司图森未来(TuSimple)宣布启用全新品牌 CreateAI,并发布多项在生成式 AI 领域的进展。 CreateAI 宣布获著名武侠 IP《金庸群侠传》正版授权,将开发一款大型武侠开放世界 RPG 游戏。 新的 Creat…

FreeRTOS实战——一、基于HAL库项目的FreeRTOS移植步骤

FreeRTOS实战——一、基于HAL库项目的移植步骤 文章目录 FreeRTOS实战——一、基于HAL库项目的移植步骤前言一、下载和移植FreeRTOS二、系统文件配置2.1 FreeRTOSConfig.h中添加如下3个配置:2.2 修改stm32f1xx_it.c 前言 废话不多说,在FreeRTOS基础&…

编程初学者使用 MariaDB 数据库反射生成

编程初学者使用 MariaDB 数据库反射生成 数据库反射生成,是动词算子式通用代码生成器提供的高级功能,可以利用已有的数据库,反射生成相应数据库的前端和后端项目。此功能自动化程度很高,并且支持完善的元数据和数据编辑&#xff…

yolov6算法及其改进

yolov6算法及其改进 1、YOLOV6简介2、RepVGG重参思想3、YOLOv6架构改进3.1、Backbone方面3.2、SPP改进3.3、Neck改进3.4、Head改进 4、正负样本匹配与损失函数4.1、TaskAligned样本匹配4.2、VFL Loss分类损失函数4.3、SIOU损失函数4.4、DFL损失函数 1、YOLOV6简介 YOLOv6设计主…

面试241228

面试可参考 1、cas的概念 2、AQS的概念 3、redis的数据结构 使用场景 不熟 4、redis list 扩容流程 5、dubbo 怎么进行服务注册和调用,6、dubbo 预热 7如何解决cos上传的安全问题kafka的高并发高吞吐的原因ES倒排索引的原理 spring的 bean的 二级缓存和三级缓存 spr…

小程序配置文件 —— 13 全局配置 - window配置

全局配置 - window配置 这里讲解根目录 app.json 中的 window 字段,window 字段用于设置小程序的状态栏、导航条、标题、窗口背景色; 状态栏:顶部位置,有网络信号、时间信息、电池信息等;导航条:有一个当…

STM32 与 AS608 指纹模块的调试与应用

前言 在嵌入式系统中,指纹识别作为一种生物识别技术,广泛应用于门禁系统、考勤机、智能锁等场景。本文将分享如何在 STM32F103C8T6 开发板上使用 AS608 指纹模块,实现指纹的录入和识别功能。 硬件准备 STM32F103C8T6 开发板AS608 指纹模块…

3GPP R18 MT-SDT

Rel-17 指定MO-SDT允许针对UL方向的数据包进行小数据包传输。对于DL,MT-SDT(即DL触发的小数据)可带来类似的好处,即 通过不转换到 RRC_CONNECTED来减少信令开销和UE功耗,并通过允许快速传输(小而少见的)数据包(例如用于定位)来减少延迟。 在R17中,NR_SmallData_INACTIVE的工…

小程序基础 —— 02 微信小程序账号注册

微信小程序账号注册 小程序开发与网页开发不一样,在开始微信小程序开发之前,需要访问微信公众平台,注册一个微信小程序账号。 有了小程序的账号以后,才可以开发和管理小程序,后续需要通过该账号进行开发信息的设置、…

两个链表的第一个公共结点

输入两个链表,找出它们的第一个公共结点。 当不存在公共节点时,返回空节点。 数据范围 链表长度 [1,2000] 保证两个链表不完全相同,即两链表的头结点不相同。 算法思想描述 如上图所示,两种链表的出现的情况只有图中2中&…

OpenAI 12天发布会:AI革命的里程碑@附35页PDF文件下载

在人工智能的浪潮中,OpenAI的12天发布会无疑是2024年科技界的一场盛宴。从12月5日开始,OpenAI连续12天每天发布一个新应用或功能,标志着AI技术的又一次飞跃。本文将梳理这些激动人心的发布,带你一探究竟。 OpenAI发布会概览 Ope…