K8S之运用节点选择器指定Pod运行的节点

node节点选择器的使用

  • 使用场景
  • 实践
    • 使用nodeName
    • 使用nodeSelector
    • nodeName和nodeSelector混合使用
      • 1、设置了nodeName 和 设置 Node上都不存在的标签。看调度情况
      • 2、设置nodeName 为node1 和 设置 node2上才有的标签。看调度情况
    • 实践总结

使用场景

默认情况,在创建Pod资源的时候,会根据schduler进行节点调度,默认会随机调度一个工作节点。

如果想要Pod 调度到指定节点 或者 调度到一些具有相同特点的node节点,就可以运用Pod中的 nodeName 或者 nodeSelector 字段指定要调度到的Node节点。

实践

使用nodeName

运用nodeName,将Pod运行在指定Node上

创建pod资源文件

vim pod-node-name.yaml
apiVersion: v1
kind: Pod
metadata:name: pod-node-namenamespace: test # 指定命名空间
spec:nodeName: k8s-node1 # 指定pod运行的节点名称containers:- name:  tomcat-javaimage: tomcat:8.5-jre8-alpineimagePullPolicy: IfNotPresentports:- containerPort: 8080

创建资源

kubectl apply -f pod-node-name.yaml

查看创建的pod调度到哪个节点

kubectl get pods -n test -o wide

看pod的详细信息

kubectl describe pods pod-node-name -n test

使用nodeSelector

运用nodeSelector,指定Pod调度到具有哪些 标签 的Node节点上

看Node节点的标签

kubectl get nodes --show-labels

在这里插入图片描述

指定创建的Pod要调度到具有node-type=worker标签的node上
(ps. 以下操作顺序:先建Pod再给Node打上标签)

创建pod资源文件

vim pod-node-selector.yaml
apiVersion: v1
kind: Pod
metadata:name: pod-node-selectornamespace: test # 指定命名空间
spec:nodeSelector:node-type: workercontainers:- name:  tomcat-javaports:- containerPort: 8080image: tomcat:8.5-jre8-alpineimagePullPolicy: IfNotPresent

创建资源

kubectl apply -f pod-node-selector.yaml

查看创建的pod调度到哪个节点

kubectl get pods -n test -o wide

在这里插入图片描述

看pod的详细信息

kubectl describe pods pod-node-selector -n test

在这里插入图片描述

找不到符合标签的node,pod一直处于创建中

给Node名为 k8s-node2 的节点打个具有 “node-type=worker” 的标签

kubectl label nodes k8s-node2 node-type=worker

Node节点上打标签后,再看 Pod状态 和 调度的节点

kubectl get pods -n test -o wide

在这里插入图片描述
找到符合的node节点后,成功运行

nodeName和nodeSelector混合使用

1、设置了nodeName 和 设置 Node上都不存在的标签。看调度情况

创建pod资源文件

vim pod-node-mix1.yaml
apiVersion: v1
kind: Pod
metadata:name: pod-node-mix1namespace: test # 指定命名空间
spec:nodeName: k8s-node2nodeSelector:node-type: backupcontainers:- name:  tomcat-javaports:- containerPort: 8080image: tomcat:8.5-jre8-alpineimagePullPolicy: IfNotPresent

创建资源

kubectl apply -f pod-node-mix1.yaml

再查看pod

kubectl get pods -n test -o wide

在这里插入图片描述

同一个yaml文件里定义Pod资源,如果同时定义了 nodeName 和 nodeSelector,那么条件必须都满足,有一个不满足都会调度失败

再给Node名为 k8s-node2 的节点打上标签

kubectl label nodes k8s-node2 node-type=backup

重建pod

kubectl delete pods pod-node-mix1 -n testkubectl apply -f pod-node-mix1.yaml

pod就能正常调度到k8s-node2上

kubectl get pods -n test -owide

在这里插入图片描述

2、设置nodeName 为node1 和 设置 node2上才有的标签。看调度情况

创建pod资源文件

vim pod-node-mix2.yaml
apiVersion: v1
kind: Pod
metadata:name: pod-node-mix2namespace: test # 指定命名空间
spec:nodeName: k8s-node1nodeSelector:node-type: backupcontainers:- name:  tomcat-javaports:- containerPort: 8080image: tomcat:8.5-jre8-alpineimagePullPolicy: IfNotPresent

创建资源

kubectl apply -f pod-node-mix2.yaml

查看pod调度到哪个节点

kubectl get pods -n test -owide

在这里插入图片描述

看pod的详细信息

kubectl describe pods pod-node-mix2 -n test

在这里插入图片描述

找节点调度时,同时设置了nodeName和nodeSelector,nodeName调度的优先级最高
但Pod状态还是非running,尽量不要同时使用nodeName和nodeSelector

实践总结

  • 同时设置了nodeName和nodeSelector,nodeName优先级最高
  • 如果同时定义了 nodeName 和 nodeSelector,那么条件必须都满足,否则会调度失败
  • 只设置了nodeSelector,当找不到符合标签的node,pod一直处于创建中

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

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

相关文章

【SpringBoot】Redis集中管理Session和自定义用户参数解决登录状态及校验问题

🏡浩泽学编程:个人主页 🔥 推荐专栏:《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》 🛸学无止境,不骄不躁,知行合一 文章目录 前言一、分布…

【2023年终总结】感恩南洋经历,2024收拾再启程

新年祝福 值此2024农历新年到来之际,祝一直支持“IT进阶之旅”的各位小伙伴们新的一年伴随着新的开始,新的旅程,新的突破,新的收获,新的期待..... 写在前面 2023,“IT进阶之旅”一直处于“停更”状态&#…

一站式在线协作开源办公软件ONLYOFFICE,协作更安全更便捷

1、ONLYOFFICE是什么? ONLYOFFICE是一款功能强大的在线协作办公软件,可以创建编辑Word文档、Excel电子表格,PowerPoint(PPT)演示文稿、Forms表单等多种文件。ONLYOFFICE支持多个平台,无论使用的是 Windows、…

Qt QML学习(一):Qt Quick 与 QML 简介

参考引用 QML和Qt Quick快速入门全面认识 Qt Widgets、QML、Qt Quick 1. Qt Widgets、QML、Qt Quick 区别 1.1 QML 和 Qt Quick 是什么关系? 1.1.1 从概念上区分 QML 是一种用户界面规范和标记语言,它允许开发人员创建高性能、流畅的动画和具有视觉吸引…

「数据结构」八大排序2:快排、归并排序

🎇个人主页:Ice_Sugar_7 🎇所属专栏:初阶数据结构 🎇欢迎点赞收藏加关注哦! 八大排序2 🍉快速排序🍌霍尔版本🍌挖坑法🍌前后指针法 🍉快排优化&am…

鸿蒙原生应用再添新丁!央视新闻 入局鸿蒙

鸿蒙原生应用再添新丁!央视新闻 入局鸿蒙 来自 HarmonyOS 微博2月9日消息,#央视新闻启动鸿蒙原生应用开发#中央广播电视总台旗舰央视新闻客户端正式宣布,将基于HarmonyOS NEXT鸿蒙星河版,启动央视新闻 鸿蒙原生应用开发&#xf…

CSGO游戏搬砖项目靠谱吗?是不是骗人的

很多地方都在大肆宣扬说CSGO游戏搬砖项目有二三十个点的利润,但我觉得他们看待问题太片面了,没有从全局上去分析这个项目。 这些人为了能割到小白的韭菜真是无所不用其极,什么牛都能吹得出来!至少要实事求是吧,这不睁…

Ajax+JSON学习一

AjaxJSON学习一 文章目录 前言一、Ajax简介1.1. Ajax基础1.2. 同源策略 二、Ajax的核心技术2.1. XMLHttpRequest 类2.2. open指定请求2.3. setRequestHeader 设置请求头2.4. send发送请求主体2.5. Ajax取得响应 总结 前言 一、Ajax简介 1.1. Ajax基础 Ajax 的全称是 Asynchron…

vue3 之 商城项目—详情页

整体认识 路由配置 准备组件模版 <script setup></script><template><div class"xtx-goods-page"><div class"container"><div class"bread-container"><el-breadcrumb separator">">&…

面向工业 X.0 的工业网络简述

此图片来源于网络 1、背景 工业4.0是在21世纪初提出的&#xff0c;特别是在2013年&#xff0c;德国政府正式推出了“工业4.0”战略&#xff0c;旨在通过利用物联网&#xff08;IoT&#xff09;等先进技术提高工业的竞争力。因此&#xff0c;我们可以认为工业4.0的实现时间大致…

安卓服务的常见问题,性能优化以及应用场景剖析

一、引言 在安卓开发中&#xff0c;服务&#xff08;Service&#xff09;扮演着至关重要的角色&#xff0c;它们在没有用户界面的情况下&#xff0c;为用户提供了长时间的后台任务执行能力。本文将探讨服务常见问题、优化策略、应用场景以及开发过程中应注意的事项。 二、应用场…

自己动手打包element UI官方手册文档教程

经常用element ui朋友开发的比较郁闷&#xff0c;官方文档网基本上都是打不开的&#xff0c; 官方&#xff1a;https://element.eleme.io/ 一直打不开&#xff0c;分析下是里面用的cdn链接ssl证书无效。 就想着自己搭建一个element UI文档 自己搭建的&#xff1a; Element文档网…

blender几何节点中样条线参数中的系数(factor)是个什么概念?

一根样条线&#xff0c;通常由两个及以上的控制点构成。 每个控制点的系数&#xff0c;其实相当于该点处位于整个样条线的比值。 如图&#xff0c;一根样条线有十一个控制点。相当于把它分成了十段&#xff0c;那每一段可以看到x、y都是0&#xff0c;唯独z每次增加0.1&#xff…

【物联网】继续深入探索ADC模拟转数字的原理——Flash ADC流水线ADC逐次逼近型SAR ADC

这篇文章主要弥补上一篇关于ADC的不足&#xff0c;更加深入了解ADC数模转换器的工作原理&#xff0c;举例常见的三种ADC&#xff0c;分别为Flash ADC&流水线ADC&逐次逼近型SAR ADC。 【物联网】深入了解AD/DA转换技术&#xff1a;模数转换和数模转换 前些天发现了一个巨…

“智能检测,精准把控。温湿度检测系统,为您的生活带来全方位的健康保障。”#非标协议项目【上】

“智能检测&#xff0c;精准把控。温湿度检测系统&#xff0c;为您的生活带来全方位的健康保障。”#非标协议项目【上】 前言预备知识1温湿度检测系统需求2.代码整合2.1找到编程实现LCD1602显示一行工程&#xff0c;打开代码文件&#xff0c;将所需的LCD1602驱动代码拷贝到温湿…

GEE数据——美国农业部LANDFIRE (LF)数据集2.3.0版本

地面火灾数据集 LANDFIRE (LF)&#xff0c;即 "地貌火灾和资源管理规划工具"&#xff0c;是美国农业部森林服务局、美国内政部地质调查局和大自然保护协会的野地火灾管理项目之间的共享项目。前言 – 人工智能教程 LANDFIRE (LF) 图层是利用基于大量实地参考数据、…

2.8日学习打卡----初学RabbitMQ(三)

2.8日学习打卡 一.springboot整合RabbitMQ 之前我们使用原生JAVA操作RabbitMQ较为繁琐&#xff0c;接下来我们使用 SpringBoot整合RabbitMQ&#xff0c;简化代码编写 创建SpringBoot项目&#xff0c;引入RabbitMQ起步依赖 <!-- RabbitMQ起步依赖 --> <dependency&g…

二、OpenAI开发者快速入门

启动并运行OpenAI API OpenAI API 为开发者提供一个简单的接口&#xff0c;使其能够在他们的应用中创建一个智能层&#xff0c;由OpenAI最先进的模型提供支持。聊天补全端点为ChatGPT提示支持&#xff0c;一种简单的方法是&#xff1a;输入文本&#xff0c;使用GPT-4模型输出。…

Swift Combine 使用 sink, assign 创建一个订阅者 从入门到精通九

Combine 系列 Swift Combine 从入门到精通一Swift Combine 发布者订阅者操作者 从入门到精通二Swift Combine 管道 从入门到精通三Swift Combine 发布者publisher的生命周期 从入门到精通四Swift Combine 操作符operations和Subjects发布者的生命周期 从入门到精通五Swift Com…

项目02《游戏-12-开发》Unity3D

基于 项目02《游戏-11-开发》Unity3D &#xff0c; 任务&#xff1a;实现场景怪物自动巡航 &#xff0c; 首先在场景中创建小球命名为路径点WayPoint0&#xff0c; 取消小球的碰撞器Collider&#xff0c; 再复制两个改名为WayPoint1 和 WayPoint2 &#xff0c; 在…