11.1.k8s中pod的调度-nodeSelector节点选择器

ops/2024/9/25 0:34:06/

目录

一、概念

二、节点选择器nodeSelector的使用


一、概念

NodeSelector是Kubernetes调度器的一部分,它允许开发者根据节点的标签,精确地控制Pod在集群中的调度位置。通过在Pod的定义中设置NodeSelector,可以确保Pod只会被调度到具有特定标签的节点上。

 我们先创建一个普通的deploy资源,设置为10个副本,查看创建的pod;

# 如果集群只有2个节点,可以将master节点也作为work节点
[root@k8s1 deploy]# kubectl taint nodes --all node-role.kubernetes.io/master:NoSchedule-# 创建deploy资源
[root@k8s1 deploy]# cat deploy.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:name: dm01
spec:#声明设置升级策略strategy:#设置升级的策略类型,类型有两种;#第一种:Recreate:先停止所有pod,再批量创建新的pod;生产环境不建议使用,因为用户在此时会访问不到服务;#第二种:RollingUpdate:滚动更新,即实现部分更新,逐渐替换掉原有的pod,也就是默认的策略;type: RollingUpdate#如果设置了滚动更新RollingUpdate类型,还需要设置更新的策略;rollingUpdate:#在原有pod副本数量的基础上,多启动pod的数量(也就是说,更新过程中同时可以存在2+副本数个pod,新旧版本一起)maxSurge: 2#在升级的过程中最大不可访问的pod的数量(也就是说,pod副本数-1的数量可以被访问)maxUnavailable: 1replicas: 10selector:matchLabels:k8s: osleetemplate:metadata:name: pod01labels:k8s: osleespec:containers:- name: c1image: harbor.oslee.com/oslee-private/my-nginx:v2ports:- containerPort: 80[root@k8s1 deploy]# kubectl apply -f deploy.yaml 
deployment.apps/dm01 created

我们发现,其是随机创建在,k8s1和k8s2节点上的;

那么我们有没有方法,让pod根据我们自己的想法,创建在我们想要的节点上呐?

接下来,我们就学习,关于pod调度的节点选择器,nodeSelector

二、节点选择器nodeSelector的使用

通过标签让pod创建在我们想要的节点上;

使用步骤

  1. 给节点(k8s1、k8s2)打不同的标签
  2. pod中编辑节点选择(选择节点的标签)
  3. 创建资源
# 查看节点标签
[root@k8s1 deploy]# kubectl get nodes --show-labels
NAME   STATUS   ROLES                  AGE   VERSION    LABELS
k8s1   Ready    control-plane,master   4d    v1.23.17   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s1,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node-role.kubernetes.io/master=,node.kubernetes.io/exclude-from-external-load-balancers=
k8s2   Ready    <none>                 4d    v1.23.17   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s2,kubernetes.io/os=linux# 给节点打标签
[root@k8s1 deploy]# kubectl label node k8s1 node=k8s1 os=lee
node/k8s1 labeled
[root@k8s1 deploy]# kubectl label node k8s2 node=k8s2 os=lee
node/k8s2 labeled
# 编辑deploy资源
[root@k8s1 deploy]# cat deploy.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:name: dm01
spec:#声明设置升级策略strategy:#设置升级的策略类型,类型有两种;#第一种:Recreate:先停止所有pod,再批量创建新的pod;生产环境不建议使用,因为用户在此时会访问不到服务;#第二种:RollingUpdate:滚动更新,即实现部分更新,逐渐替换掉原有的pod,也就是默认的策略;type: RollingUpdate#如果设置了滚动更新RollingUpdate类型,还需要设置更新的策略;rollingUpdate:#在原有pod副本数量的基础上,多启动pod的数量(也就是说,更新过程中同时可以存在2+副本数个pod,新旧版本一起)maxSurge: 2#在升级的过程中最大不可访问的pod的数量(也就是说,pod副本数-1的数量可以被访问)maxUnavailable: 1replicas: 10selector:matchLabels:k8s: osleetemplate:metadata:name: pod01labels:k8s: osleespec:nodeSelector:# 根据标签调度到节点k8s1上,如果使用os=lee两个节点都有,就是两个节点都调度node: k8s1containers:- name: c1image: harbor.oslee.com/oslee-private/my-nginx:v2ports:- containerPort: 80[root@k8s1 deploy]# kubectl apply -f deploy.yaml 
deployment.apps/dm01 created

=============================== 至此,已成艺术==============================


http://www.ppmy.cn/ops/34472.html

相关文章

【Godot4.2】EasyTreeData通用解析

概述 之前在《【Godot4.2】Tree控件自定义树形数据ETD及其解析》一文中&#xff0c;实现了对带缩进的层级结构文本的解析&#xff0c;并将其用于Tree控件的列表项构造。 不过当时并没有实现专门的类&#xff0c;今天花了一点时间实现了一下。现在可以更方便的构造和解析ETD数…

springboot 学习路线

Spring Boot 是一个开源的 Java 基础框架&#xff0c;它提供了快速开发、配置简单的特性&#xff0c;帮助开发者轻松创建独立的、生产级别的基于 Spring 框架的应用。以下是一条推荐的 Spring Boot 学习路线&#xff1a; 1. Java 基础知识 Java SE&#xff1a;掌握 Java 标准…

Pandas基本操作

文章目录 第1关&#xff1a;了解数据处理对象--Series第2关&#xff1a;了解数据处理对象-DataFrame第3关&#xff1a;读取 CSV 格式数据第4关&#xff1a;数据的基本操作——排序第5关&#xff1a;数据的基本操作——删除第6关&#xff1a;数据的基本操作——算术运算第7关&am…

实景AI自动直播系统引领直播新时代,争做行业销量领跑者。

实景AI自动直播系统引领直播新时代&#xff0c;争做行业销量领跑者&#xff01; 在当今时代&#xff0c;随着科技的飞速发展&#xff0c;AI技术正逐渐渗透到各个行业中。马云曾明确指出&#xff0c;新兴事物经历着从“看不见”、“看不起”、“看不懂”到“来不及”的四个阶段。…

Coze应用场景举例

Coze是一个多功能的AI聊天机器人构建平台,它支持用户快速创建和部署各类聊天机器人。Coze的使用场景非常广泛,包括但不限于以下几个例子: - 设计师可以使用Coze创建在线设计商店,销售自己的设计作品。 - 瑜伽老师可以利用Coze搭建在线瑜伽课程平台,销售瑜伽课程。 - 企业可…

【linux】——日志分析

1. 日志文件 1.1 日志文件的分类 日志文件&#xff1a; 是用于记录Linux系统中各种运行消息的文件&#xff0c;相当于Linux主机的“日记". 日志文件对于诊断和解决系统中的问题很有帮助&#xff0c;系统一旦出现问题时及时分析日志就会“有据可查”。此外。当主机遭受攻…

安卓手机APP开发__用媒体会话服务进行后台播放

安卓手机APP开发__媒体开发部分__用媒体会话服务进行后台播放 目录 概述 使用一个媒体会话服务 实现服务的生命周期 提供对媒体会话的读取 在配置文件中声明服务 概述 当APP不在前台时&#xff0c;经常希望能够播放媒体。例如&#xff0c;一个音乐播放器 在用户锁屏或者…

Hessian 矩阵(海森矩阵)

Hessian 矩阵&#xff08;海森矩阵&#xff09;是一个包含二阶偏导数信息的方阵&#xff0c;在数学和优化中起着重要作用。对于一个多元函数&#xff0c;其 Hessian 矩阵是由其各个变量的二阶偏导数组成的矩阵。 假设有一个函数 f ( x 1 , x 2 , … , x n ) f(x_1, x_2, \dots…